Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pull] master from apache:master #143

Merged
merged 1 commit into from
Feb 18, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions test-tools/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,11 @@

<name>Apache Atlas Test Utility Tools</name>

<properties>
<checkstyle.failOnViolation>true</checkstyle.failOnViolation>
<checkstyle.skip>false</checkstyle.skip>
</properties>

<dependencies>

<dependency>
Expand Down
105 changes: 56 additions & 49 deletions test-tools/src/main/java/org/apache/atlas/runner/LocalSolrRunner.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,20 @@
// Copyright 2017 JanusGraph Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.atlas.runner;

import org.apache.atlas.ApplicationProperties;
Expand All @@ -38,20 +41,22 @@
import java.util.stream.Collectors;

public class LocalSolrRunner {

private static final String TARGET_DIRECTORY = System.getProperty("embedded.solr.directory");
private static final String COLLECTIONS_FILE = "collections.txt";
private static final String SOLR_XML = "solr.xml";
private static final String TEMPLATE_DIRECTORY = "core-template";
protected static final String[] COLLECTIONS = readCollections();
private static final Logger LOG = LoggerFactory.getLogger(LocalSolrRunner.class);

// from org.apache.atlas.repository.graphdb.janus.AtlasJanusGraphDatabase
public static final String SOLR_ZOOKEEPER_URL = "atlas.graph.index.search.solr.zookeeper-url";

private static final Logger LOG = LoggerFactory.getLogger(LocalSolrRunner.class);
protected static final String[] COLLECTIONS = readCollections();

private static final String TARGET_DIRECTORY = System.getProperty("embedded.solr.directory");
private static final String COLLECTIONS_FILE = "collections.txt";
private static final String SOLR_XML = "solr.xml";
private static final String TEMPLATE_DIRECTORY = "core-template";

private static MiniSolrCloudCluster miniSolrCloudCluster;

private LocalSolrRunner() {}

public static void start() throws Exception {
if (isLocalSolrRunning()) {
return;
Expand All @@ -60,14 +65,14 @@ public static void start() throws Exception {
LOG.info("==> LocalSolrRunner.start()");

File templateDirectory = new File(TARGET_DIRECTORY + File.separator + "solr" + File.separator + TEMPLATE_DIRECTORY);
File temp = new File(TARGET_DIRECTORY + File.separator + "data" + File.separator + "index" + File.separator + getRandomString());
File temp = new File(TARGET_DIRECTORY + File.separator + "data" + File.separator + "index" + File.separator + getRandomString());

temp.mkdirs();
temp.deleteOnExit();

miniSolrCloudCluster = new MiniSolrCloudCluster(1, null, temp.toPath(), readSolrXml(), null, null);

LOG.info("Started local solr server at: " + getZookeeperUrls());
LOG.info("Started local solr server at: {}", getZookeeperUrls());

for (String coreName : COLLECTIONS) {
File coreDirectory = new File(temp.getAbsolutePath() + File.separator + coreName);
Expand Down Expand Up @@ -119,14 +124,38 @@ public static boolean isLocalSolrRunning() {
return ret;
}

public static void main(String[] args) {
if (ArrayUtils.isEmpty(args)) {
System.out.println("No argument!");
} else if (args[0].equals("start")) {
try {
start();
System.out.println("Started Local Solr Server: " + getZookeeperUrls());
} catch (Exception e) {
System.out.println("Error starting Local Solr Server: " + e);
}
} else if (args[0].equals("stop")) {
try {
System.out.println("Stopping Local Solr Server.");
stop();
} catch (Exception e) {
System.out.println("Error stopping Local Solr Server: " + e);
}
} else {
System.out.println("Bad first argument: " + Arrays.toString(args));
}
}

private static String[] readCollections() {
// For the classloader you need the following path: "/solr/collections.txt";
// Use explicit '/' separators (not File.separator) because even on Windows you want '/'
String resName = "/solr/" + COLLECTIONS_FILE;

try {
InputStream inputStream = LocalSolrRunner.class.getResourceAsStream(resName);
InputStreamReader isr = new InputStreamReader(inputStream);
BufferedReader buffer = new BufferedReader(isr);
InputStream inputStream = LocalSolrRunner.class.getResourceAsStream(resName);
InputStreamReader isr = new InputStreamReader(inputStream);
BufferedReader buffer = new BufferedReader(isr);

return Pattern.compile("\\s+").split(buffer.lines().collect(Collectors.joining("\n")));
} catch (Exception e) {
throw new RuntimeException("Unable to read collections file", e);
Expand All @@ -137,6 +166,7 @@ private static String readSolrXml() throws IOException {
// For the classloader you need the following path: "/solr/solr.xml";
// Use explicit '/' separators (not File.separator) because even on Windows you want '/'
String resName = "/solr/" + SOLR_XML;

// Use the local classloader rather than the system classloader - i.e. avoid using
// Thread.currentThread().getContextClassLoader().getResourceAsStream(resName);
InputStream inputStream = LocalSolrRunner.class.getResourceAsStream(resName);
Expand All @@ -151,27 +181,4 @@ private static String readSolrXml() throws IOException {
private static String getRandomString() {
return UUID.randomUUID().toString();
}

public static void main(String[] args) {
if (ArrayUtils.isEmpty(args)) {
System.out.println("No argument!");
} else if (args[0].equals("start")) {
try {
start();
System.out.println("Started Local Solr Server: "+ getZookeeperUrls());

} catch (Exception e) {
System.out.println("Error starting Local Solr Server: " + e);
}
} else if (args[0].equals("stop")) {
try {
System.out.println("Stopping Local Solr Server.");
stop();
} catch (Exception e) {
System.out.println("Error stopping Local Solr Server: " + e);
}
} else {
System.out.println("Bad first argument: " + Arrays.toString(args));
}
}
}