You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2015/12/21 12:40:14 UTC
svn commit: r1721134 [47/48] - in /lucene/dev/branches/lucene6835: ./
dev-tools/ dev-tools/eclipse/dot.settings/ dev-tools/idea/.idea/libraries/
dev-tools/maven/ dev-tools/maven/lucene/analysis/morfologik/
dev-tools/scripts/ lucene/ lucene/analysis/ lu...
Modified: lucene/dev/branches/lucene6835/solr/solrj/src/test/org/apache/solr/client/solrj/response/NoOpResponseParserTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/solrj/src/test/org/apache/solr/client/solrj/response/NoOpResponseParserTest.java?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/solrj/src/test/org/apache/solr/client/solrj/response/NoOpResponseParserTest.java (original)
+++ lucene/dev/branches/lucene6835/solr/solrj/src/test/org/apache/solr/client/solrj/response/NoOpResponseParserTest.java Mon Dec 21 11:39:57 2015
@@ -17,11 +17,18 @@ package org.apache.solr.client.solrj.res
* limitations under the License.
*/
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.nio.charset.StandardCharsets;
+import java.util.List;
+
import org.apache.commons.io.IOUtils;
import org.apache.solr.SolrJettyTestBase;
import org.apache.solr.client.solrj.ResponseParser;
-import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrClient;
+import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.impl.NoOpResponseParser;
@@ -35,13 +42,6 @@ import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.nio.charset.StandardCharsets;
-import java.util.List;
-
/**
* A test for parsing Solr response from query by NoOpResponseParser.
* @see org.apache.solr.client.solrj.impl.NoOpResponseParser
@@ -50,7 +50,7 @@ import java.util.List;
public class NoOpResponseParserTest extends SolrJettyTestBase {
private static InputStream getResponse() throws IOException {
- return new SolrResourceLoader(null, null).openResource("solrj/sampleDateFacetResponse.xml");
+ return new SolrResourceLoader().openResource("solrj/sampleDateFacetResponse.xml");
}
@BeforeClass
Modified: lucene/dev/branches/lucene6835/solr/solrj/src/test/org/apache/solr/client/solrj/response/QueryResponseTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/solrj/src/test/org/apache/solr/client/solrj/response/QueryResponseTest.java?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/solrj/src/test/org/apache/solr/client/solrj/response/QueryResponseTest.java (original)
+++ lucene/dev/branches/lucene6835/solr/solrj/src/test/org/apache/solr/client/solrj/response/QueryResponseTest.java Mon Dec 21 11:39:57 2015
@@ -17,8 +17,13 @@
package org.apache.solr.client.solrj.response;
-import junit.framework.Assert;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.nio.charset.StandardCharsets;
+import java.util.List;
+import junit.framework.Assert;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util.TestRuleLimitSysouts.Limit;
import org.apache.solr.client.solrj.impl.XMLResponseParser;
@@ -28,12 +33,6 @@ import org.apache.solr.common.util.Named
import org.apache.solr.core.SolrResourceLoader;
import org.junit.Test;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.nio.charset.StandardCharsets;
-import java.util.List;
-
/**
* A few tests for parsing Solr response in QueryResponse
*
@@ -44,7 +43,7 @@ public class QueryResponseTest extends L
@Test
public void testDateFacets() throws Exception {
XMLResponseParser parser = new XMLResponseParser();
- InputStream is = new SolrResourceLoader(null, null).openResource("solrj/sampleDateFacetResponse.xml");
+ InputStream is = new SolrResourceLoader().openResource("solrj/sampleDateFacetResponse.xml");
assertNotNull(is);
Reader in = new InputStreamReader(is, StandardCharsets.UTF_8);
NamedList<Object> response = parser.processResponse(in);
@@ -68,7 +67,7 @@ public class QueryResponseTest extends L
@Test
public void testRangeFacets() throws Exception {
XMLResponseParser parser = new XMLResponseParser();
- InputStream is = new SolrResourceLoader(null, null).openResource("solrj/sampleDateFacetResponse.xml");
+ InputStream is = new SolrResourceLoader().openResource("solrj/sampleDateFacetResponse.xml");
assertNotNull(is);
Reader in = new InputStreamReader(is, StandardCharsets.UTF_8);
NamedList<Object> response = parser.processResponse(in);
@@ -125,7 +124,7 @@ public class QueryResponseTest extends L
@Test
public void testGroupResponse() throws Exception {
XMLResponseParser parser = new XMLResponseParser();
- InputStream is = new SolrResourceLoader(null, null).openResource("solrj/sampleGroupResponse.xml");
+ InputStream is = new SolrResourceLoader().openResource("solrj/sampleGroupResponse.xml");
assertNotNull(is);
Reader in = new InputStreamReader(is, StandardCharsets.UTF_8);
NamedList<Object> response = parser.processResponse(in);
@@ -227,7 +226,7 @@ public class QueryResponseTest extends L
@Test
public void testSimpleGroupResponse() throws Exception {
XMLResponseParser parser = new XMLResponseParser();
- InputStream is = new SolrResourceLoader(null, null).openResource("solrj/sampleSimpleGroupResponse.xml");
+ InputStream is = new SolrResourceLoader().openResource("solrj/sampleSimpleGroupResponse.xml");
assertNotNull(is);
Reader in = new InputStreamReader(is, StandardCharsets.UTF_8);
NamedList<Object> response = parser.processResponse(in);
@@ -268,7 +267,7 @@ public class QueryResponseTest extends L
public void testIntervalFacetsResponse() throws Exception {
XMLResponseParser parser = new XMLResponseParser();
- try(SolrResourceLoader loader = new SolrResourceLoader(null, null)) {
+ try(SolrResourceLoader loader = new SolrResourceLoader()) {
InputStream is = loader.openResource("solrj/sampleIntervalFacetsResponse.xml");
assertNotNull(is);
Reader in = new InputStreamReader(is, StandardCharsets.UTF_8);
Modified: lucene/dev/branches/lucene6835/solr/solrj/src/test/org/apache/solr/client/solrj/response/TestClusteringResponse.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/solrj/src/test/org/apache/solr/client/solrj/response/TestClusteringResponse.java?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/solrj/src/test/org/apache/solr/client/solrj/response/TestClusteringResponse.java (original)
+++ lucene/dev/branches/lucene6835/solr/solrj/src/test/org/apache/solr/client/solrj/response/TestClusteringResponse.java Mon Dec 21 11:39:57 2015
@@ -39,7 +39,7 @@ public class TestClusteringResponse exte
public void testClusteringResponse() throws Exception {
XMLResponseParser parser = new XMLResponseParser();
/*Load a simple XML with the clustering response encoded in an XML format*/
- InputStream is = new SolrResourceLoader(null, null).openResource("solrj/sampleClusteringResponse.xml");
+ InputStream is = new SolrResourceLoader().openResource("solrj/sampleClusteringResponse.xml");
assertNotNull(is);
Reader in = new InputStreamReader(is, StandardCharsets.UTF_8);
NamedList<Object> response = parser.processResponse(in);
Modified: lucene/dev/branches/lucene6835/solr/solrj/src/test/org/apache/solr/common/util/ContentStreamTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/solrj/src/test/org/apache/solr/common/util/ContentStreamTest.java?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/solrj/src/test/org/apache/solr/common/util/ContentStreamTest.java (original)
+++ lucene/dev/branches/lucene6835/solr/solrj/src/test/org/apache/solr/common/util/ContentStreamTest.java Mon Dec 21 11:39:57 2015
@@ -29,7 +29,6 @@ import java.nio.charset.StandardCharsets
import org.apache.commons.io.IOUtils;
import org.apache.solr.SolrTestCaseJ4;
-import org.apache.lucene.util.TestUtil;
import org.apache.solr.core.SolrResourceLoader;
/**
@@ -47,7 +46,7 @@ public class ContentStreamTest extends S
public void testFileStream() throws IOException
{
- InputStream is = new SolrResourceLoader(null, null).openResource( "solrj/README" );
+ InputStream is = new SolrResourceLoader().openResource( "solrj/README" );
assertNotNull( is );
File file = new File(createTempDir().toFile(), "README");
FileOutputStream os = new FileOutputStream(file);
@@ -76,7 +75,7 @@ public class ContentStreamTest extends S
public void testURLStream() throws IOException
{
- InputStream is = new SolrResourceLoader(null, null).openResource( "solrj/README" );
+ InputStream is = new SolrResourceLoader().openResource( "solrj/README" );
assertNotNull( is );
File file = new File(createTempDir().toFile(), "README");
FileOutputStream os = new FileOutputStream(file);
Modified: lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/BaseDistributedSearchTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/BaseDistributedSearchTestCase.java?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/BaseDistributedSearchTestCase.java (original)
+++ lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/BaseDistributedSearchTestCase.java Mon Dec 21 11:39:57 2015
@@ -57,6 +57,7 @@ import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import java.lang.invoke.MethodHandles;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
@@ -245,7 +246,7 @@ public abstract class BaseDistributedSea
protected Map<String, Integer> handle = new HashMap<>();
protected String id = "id";
- public static Logger log = LoggerFactory.getLogger(BaseDistributedSearchTestCase.class);
+ private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
public static RandVal rint = new RandVal() {
@Override
@@ -778,10 +779,11 @@ public abstract class BaseDistributedSea
String cmp;
int f = flags(handle, "maxScore");
- if ((f & SKIPVAL) == 0) {
+ if (f == 0) {
cmp = compare(a.getMaxScore(), b.getMaxScore(), 0, handle);
if (cmp != null) return ".maxScore" + cmp;
- } else {
+ } else if ((f & SKIP) == 0) { // so we skip val but otherwise both should be present
+ assert (f & SKIPVAL) != 0;
if (b.getMaxScore() != null) {
if (a.getMaxScore() == null) {
return ".maxScore missing";
@@ -961,7 +963,11 @@ public abstract class BaseDistributedSea
createServers(numShards);
RandVal.uniqueValues = new HashSet(); //reset random values
statement.evaluate();
- destroyServers();
+ try {
+ destroyServers();
+ } catch (Throwable t) {
+ log.error("Error while shutting down servers", t);
+ }
}
}
Modified: lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/SolrJettyTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/SolrJettyTestBase.java?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/SolrJettyTestBase.java (original)
+++ lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/SolrJettyTestBase.java Mon Dec 21 11:39:57 2015
@@ -34,6 +34,7 @@ import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.OutputStreamWriter;
+import java.lang.invoke.MethodHandles;
import java.nio.file.Path;
import java.util.Properties;
import java.util.SortedMap;
@@ -41,7 +42,7 @@ import java.util.SortedMap;
abstract public class SolrJettyTestBase extends SolrTestCaseJ4
{
- private static Logger log = LoggerFactory.getLogger(SolrJettyTestBase.class);
+ private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
@BeforeClass
public static void beforeSolrJettyTestBase() throws Exception {
Modified: lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/SolrTestCaseHS.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/SolrTestCaseHS.java?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/SolrTestCaseHS.java (original)
+++ lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/SolrTestCaseHS.java Mon Dec 21 11:39:57 2015
@@ -41,11 +41,13 @@ import org.apache.solr.servlet.DirectSol
import org.noggit.JSONUtil;
import org.noggit.ObjectBuilder;
import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
+import java.lang.invoke.MethodHandles;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Collection;
@@ -63,7 +65,8 @@ import java.util.Set;
@SolrTestCaseJ4.SuppressSSL
//@LuceneTestCase.SuppressCodecs({"Lucene3x","Lucene40","Lucene41","Lucene42","Lucene45","Appending","Asserting"})
public class SolrTestCaseHS extends SolrTestCaseJ4 {
-
+
+ private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
@SafeVarargs
public static <T> Set<T> set(T... a) {
LinkedHashSet<T> s = new LinkedHashSet<>();
@@ -378,7 +381,7 @@ public class SolrTestCaseHS extends Solr
// To manage multiple servers, see SolrInstances
//
public static class SolrInstance {
- private static Logger log = SolrTestCaseJ4.log;
+ private static Logger log = SolrTestCaseHS.log;
private String collection = "collection1";
private int port = 0;
private String solrconfigFile;
Modified: lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java (original)
+++ lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java Mon Dec 21 11:39:57 2015
@@ -17,8 +17,7 @@
package org.apache.solr;
-import static com.google.common.base.Preconditions.checkNotNull;
-
+import javax.xml.xpath.XPathExpressionException;
import java.io.File;
import java.io.IOException;
import java.io.OutputStreamWriter;
@@ -32,33 +31,25 @@ import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import java.lang.invoke.MethodHandles;
import java.net.URL;
import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Properties;
+import java.nio.file.Paths;
+import java.util.*;
import java.util.logging.Level;
-import javax.xml.xpath.XPathExpressionException;
-
+import com.carrotsearch.randomizedtesting.RandomizedContext;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
+import com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule;
import org.apache.commons.codec.Charsets;
import org.apache.commons.io.FileUtils;
import org.apache.lucene.analysis.MockAnalyzer;
import org.apache.lucene.analysis.MockTokenizer;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.util.Constants;
-import org.apache.lucene.util.IOUtils;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util.LuceneTestCase.SuppressFileSystems;
import org.apache.lucene.util.LuceneTestCase.SuppressSysoutChecks;
@@ -81,7 +72,6 @@ import org.apache.solr.common.util.Objec
import org.apache.solr.common.util.SuppressForbidden;
import org.apache.solr.common.util.XML;
import org.apache.solr.core.CoreContainer;
-import org.apache.solr.core.CoreDescriptor;
import org.apache.solr.core.CoresLocator;
import org.apache.solr.core.NodeConfig;
import org.apache.solr.core.SolrConfig;
@@ -102,6 +92,7 @@ import org.apache.solr.util.RefCounted;
import org.apache.solr.util.RevertDefaultThreadHandlerRule;
import org.apache.solr.util.SSLTestConfig;
import org.apache.solr.util.TestHarness;
+import org.apache.solr.util.TestInjection;
import org.apache.zookeeper.KeeperException;
import org.junit.AfterClass;
import org.junit.BeforeClass;
@@ -116,9 +107,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xml.sax.SAXException;
-import com.carrotsearch.randomizedtesting.RandomizedContext;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
-import com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule;
+import static com.google.common.base.Preconditions.checkNotNull;
/**
* A junit4 Solr test harness that extends LuceneTestCaseJ4. To change which core is used when loading the schema and solrconfig.xml, simply
@@ -134,7 +123,10 @@ import com.carrotsearch.randomizedtestin
@SuppressFileSystems("ExtrasFS") // might be ok, the failures with e.g. nightly runs might be "normal"
public abstract class SolrTestCaseJ4 extends LuceneTestCase {
- public static final String DEFAULT_TEST_CORENAME = "collection1";
+ private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
+ public static final String DEFAULT_TEST_COLLECTION_NAME = "collection1";
+ public static final String DEFAULT_TEST_CORENAME = DEFAULT_TEST_COLLECTION_NAME;
protected static final String CORE_PROPERTIES_FILENAME = "core.properties";
private static String coreName = DEFAULT_TEST_CORENAME;
@@ -231,20 +223,25 @@ public abstract class SolrTestCaseJ4 ext
if (suiteFailureMarker.wasSuccessful()) {
// if the tests passed, make sure everything was closed / released
- endTrackingSearchers();
- String orr = ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty();
if (!RandomizedContext.current().getTargetClass().isAnnotationPresent(SuppressObjectReleaseTracker.class)) {
+ endTrackingSearchers(120, false);
+ String orr = ObjectReleaseTracker.clearObjectTrackerAndCheckEmpty();
assertNull(orr, orr);
} else {
+ endTrackingSearchers(15, false);
+ String orr = ObjectReleaseTracker.checkEmpty();
if (orr != null) {
log.warn(
- "Some resources were not closed, shutdown, or released. This has been ignored due to the SuppressObjectReleaseTracker annotation.");
+ "Some resources were not closed, shutdown, or released. This has been ignored due to the SuppressObjectReleaseTracker annotation, trying to close them now.");
+ ObjectReleaseTracker.tryClose();
}
}
}
resetFactory();
coreName = DEFAULT_TEST_CORENAME;
} finally {
+ ObjectReleaseTracker.clear();
+ TestInjection.reset();
initCoreDataDir = null;
System.clearProperty("zookeeper.forceSync");
System.clearProperty("jetty.testMode");
@@ -340,16 +337,12 @@ public abstract class SolrTestCaseJ4 ext
* @param xmlStr - the text of an XML file to use. If null, use the what's the absolute minimal file.
* @throws Exception Lost of file-type things can go wrong.
*/
- public static void setupNoCoreTest(File solrHome, String xmlStr) throws Exception {
+ public static void setupNoCoreTest(Path solrHome, String xmlStr) throws Exception {
- File tmpFile = new File(solrHome, SolrXmlConfig.SOLR_XML_FILE);
- if (xmlStr == null) {
+ if (xmlStr == null)
xmlStr = "<solr></solr>";
- }
- FileUtils.write(tmpFile, xmlStr, IOUtils.UTF_8);
-
- SolrResourceLoader loader = new SolrResourceLoader(solrHome.getAbsolutePath());
- h = new TestHarness(SolrXmlConfig.fromFile(loader, new File(solrHome, "solr.xml")));
+ Files.write(solrHome.resolve(SolrXmlConfig.SOLR_XML_FILE), xmlStr.getBytes(StandardCharsets.UTF_8));
+ h = new TestHarness(SolrXmlConfig.fromSolrHome(solrHome));
lrf = h.getRequestFactory("standard", 0, 20, CommonParams.VERSION, "2.2");
}
@@ -412,10 +405,8 @@ public abstract class SolrTestCaseJ4 ext
assertNotNull(solrHome);
configString = config;
schemaString = schema;
- testSolrHome = solrHome;
- if (solrHome != null) {
- System.setProperty("solr.solr.home", solrHome);
- }
+ testSolrHome = Paths.get(solrHome);
+ System.setProperty("solr.solr.home", solrHome);
initCore();
}
@@ -438,14 +429,14 @@ public abstract class SolrTestCaseJ4 ext
}
}
- public static void endTrackingSearchers() {
+ public static void endTrackingSearchers(int waitSeconds, boolean failTest) {
long endNumOpens = SolrIndexSearcher.numOpens.get();
long endNumCloses = SolrIndexSearcher.numCloses.get();
// wait a bit in case any ending threads have anything to release
int retries = 0;
while (endNumOpens - numOpens != endNumCloses - numCloses) {
- if (retries++ > 120) {
+ if (retries++ > waitSeconds) {
break;
}
try {
@@ -465,7 +456,7 @@ public abstract class SolrTestCaseJ4 ext
if ("TestReplicationHandler".equals(RandomizedContext.current().getTargetClass().getSimpleName())) {
log.warn("TestReplicationHandler wants to fail!: " + msg);
} else {
- fail(msg);
+ if (failTest) fail(msg);
}
}
}
@@ -497,7 +488,7 @@ public abstract class SolrTestCaseJ4 ext
protected static String configString;
protected static String schemaString;
- protected static String testSolrHome;
+ protected static Path testSolrHome;
protected static SolrConfig solrConfig;
@@ -556,8 +547,6 @@ public abstract class SolrTestCaseJ4 ext
*
*/
- public static Logger log = LoggerFactory.getLogger(SolrTestCaseJ4.class);
-
private static String factoryProp;
@@ -591,7 +580,7 @@ public abstract class SolrTestCaseJ4 ext
("standard",0,20,CommonParams.VERSION,"2.2");
}
- public static CoreContainer createCoreContainer(String solrHome, String solrXML) {
+ public static CoreContainer createCoreContainer(Path solrHome, String solrXML) {
testSolrHome = checkNotNull(solrHome);
h = new TestHarness(solrHome, solrXML);
lrf = h.getRequestFactory("standard", 0, 20, CommonParams.VERSION, "2.2");
@@ -599,21 +588,21 @@ public abstract class SolrTestCaseJ4 ext
}
public static CoreContainer createCoreContainer(NodeConfig config, CoresLocator locator) {
- testSolrHome = config.getSolrResourceLoader().getInstanceDir();
+ testSolrHome = config.getSolrResourceLoader().getInstancePath();
h = new TestHarness(config, locator);
lrf = h.getRequestFactory("standard", 0, 20, CommonParams.VERSION, "2.2");
return h.getCoreContainer();
}
public static CoreContainer createCoreContainer(String coreName, String dataDir, String solrConfig, String schema) {
- NodeConfig nodeConfig = TestHarness.buildTestNodeConfig(new SolrResourceLoader(SolrResourceLoader.locateSolrHome()));
+ NodeConfig nodeConfig = TestHarness.buildTestNodeConfig(new SolrResourceLoader(TEST_PATH()));
CoresLocator locator = new TestHarness.TestCoresLocator(coreName, dataDir, solrConfig, schema);
CoreContainer cc = createCoreContainer(nodeConfig, locator);
h.coreName = coreName;
return cc;
}
- public static CoreContainer createDefaultCoreContainer(String solrHome) {
+ public static CoreContainer createDefaultCoreContainer(Path solrHome) {
testSolrHome = checkNotNull(solrHome);
h = new TestHarness("collection1", initCoreDataDir.getAbsolutePath(), "solrconfig.xml", "schema.xml");
lrf = h.getRequestFactory("standard", 0, 20, CommonParams.VERSION, "2.2");
@@ -1763,6 +1752,8 @@ public abstract class SolrTestCaseJ4 ext
return getFile("solr/collection1").getParent();
}
+ public static Path TEST_PATH() { return getFile("solr/collection1").getParentFile().toPath(); }
+
public static Throwable getRootCause(Throwable t) {
Throwable result = t;
for (Throwable cause = t; null != cause; cause = cause.getCause()) {
@@ -1876,53 +1867,6 @@ public abstract class SolrTestCaseJ4 ext
FileUtils.copyFile(new File(top, "synonyms.txt"), new File(subHome, "synonyms.txt"));
}
- public static CoreDescriptorBuilder buildCoreDescriptor(CoreContainer container, String name, String instancedir) {
- return new CoreDescriptorBuilder(container, name, instancedir);
- }
-
- public static class CoreDescriptorBuilder {
-
- final String name;
- final String instanceDir;
- final CoreContainer container;
- final Properties properties = new Properties();
-
- public CoreDescriptorBuilder(CoreContainer container, String name, String instancedir) {
- this.name = name;
- this.instanceDir = instancedir;
- this.container = container;
- }
-
- public CoreDescriptorBuilder withSchema(String schema) {
- properties.setProperty(CoreDescriptor.CORE_SCHEMA, schema);
- return this;
- }
-
- public CoreDescriptorBuilder withConfig(String config) {
- properties.setProperty(CoreDescriptor.CORE_CONFIG, config);
- return this;
- }
-
- public CoreDescriptorBuilder withDataDir(String datadir) {
- properties.setProperty(CoreDescriptor.CORE_DATADIR, datadir);
- return this;
- }
-
- public CoreDescriptor build() {
- return new CoreDescriptor(container, name, instanceDir, properties);
- }
-
- public CoreDescriptorBuilder isTransient(boolean isTransient) {
- properties.setProperty(CoreDescriptor.CORE_TRANSIENT, Boolean.toString(isTransient));
- return this;
- }
-
- public CoreDescriptorBuilder loadOnStartup(boolean loadOnStartup) {
- properties.setProperty(CoreDescriptor.CORE_LOADONSTARTUP, Boolean.toString(loadOnStartup));
- return this;
- }
- }
-
public boolean compareSolrDocument(Object expected, Object actual) {
if (!(expected instanceof SolrDocument) || !(actual instanceof SolrDocument)) {
Modified: lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/AbstractDistribZkTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/AbstractDistribZkTestBase.java?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/AbstractDistribZkTestBase.java (original)
+++ lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/AbstractDistribZkTestBase.java Mon Dec 21 11:39:57 2015
@@ -18,6 +18,7 @@ package org.apache.solr.cloud;
*/
import java.io.File;
+import java.lang.invoke.MethodHandles;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
@@ -31,9 +32,10 @@ import org.apache.solr.common.cloud.Solr
import org.apache.solr.common.cloud.ZkStateReader;
import org.apache.solr.core.Diagnostics;
import org.apache.solr.core.MockDirectoryFactory;
-import org.apache.solr.servlet.SolrDispatchFilter;
import org.apache.zookeeper.KeeperException;
import org.junit.BeforeClass;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public abstract class AbstractDistribZkTestBase extends BaseDistributedSearchTestCase {
@@ -46,6 +48,8 @@ public abstract class AbstractDistribZkT
protected ZkTestServer zkServer;
private AtomicInteger homeCount = new AtomicInteger();
+ private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
@BeforeClass
public static void beforeThisClass() throws Exception {
// Only For Manual Testing: this will force an fs based dir factory
@@ -116,8 +120,7 @@ public abstract class AbstractDistribZkT
// now wait till we see the leader for each shard
for (int i = 1; i <= numShards; i++) {
- ZkStateReader zkStateReader = ((SolrDispatchFilter) jettys.get(0)
- .getDispatchFilter().getFilter()).getCores().getZkController()
+ ZkStateReader zkStateReader = jettys.get(0).getCoreContainer().getZkController()
.getZkStateReader();
zkStateReader.getLeaderRetry("collection1", "shard" + (i + 2), 15000);
}
@@ -155,7 +158,7 @@ public abstract class AbstractDistribZkT
+ " live:"
+ clusterState.liveNodesContain(shard.getValue().getNodeName()));
final Replica.State state = shard.getValue().getState();
- if ((state == Replica.State.RECOVERING || state == Replica.State.DOWN)
+ if ((state == Replica.State.RECOVERING || state == Replica.State.DOWN || state == Replica.State.RECOVERY_FAILED)
&& clusterState.liveNodesContain(shard.getValue().getStr(ZkStateReader.NODE_NAME_PROP))) {
sawLiveRecovering = true;
}
@@ -214,6 +217,25 @@ public abstract class AbstractDistribZkT
log.info("Collection has disappeared - collection: " + collection);
}
+
+ public static void verifyReplicaStatus(ZkStateReader reader, String collection, String shard, String coreNodeName, Replica.State expectedState) throws InterruptedException {
+ int maxIterations = 100;
+ Replica.State coreState = null;
+ while(maxIterations-->0) {
+ Slice slice = reader.getClusterState().getSlice(collection, shard);
+ if(slice!=null) {
+ Replica replica = slice.getReplicasMap().get(coreNodeName);
+ if (replica != null) {
+ coreState = replica.getState();
+ if(coreState == expectedState) {
+ return;
+ }
+ }
+ }
+ Thread.sleep(50);
+ }
+ fail("Illegal state, was: " + coreState + " expected:" + expectedState + " clusterState:" + reader.getClusterState());
+ }
protected void assertAllActive(String collection,ZkStateReader zkStateReader)
throws KeeperException, InterruptedException {
@@ -252,8 +274,12 @@ public abstract class AbstractDistribZkT
System.clearProperty(MockDirectoryFactory.SOLR_TESTS_ALLOW_READING_FILES_STILL_OPEN_FOR_WRITE);
resetExceptionIgnores();
- super.distribTearDown();
- zkServer.shutdown();
+ try {
+ super.distribTearDown();
+ }
+ finally {
+ zkServer.shutdown();
+ }
}
protected void printLayout() throws Exception {
Modified: lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java (original)
+++ lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java Mon Dec 21 11:39:57 2015
@@ -19,6 +19,7 @@ package org.apache.solr.cloud;
import java.io.File;
import java.io.IOException;
+import java.lang.invoke.MethodHandles;
import java.net.ServerSocket;
import java.net.URI;
import java.net.URL;
@@ -94,7 +95,7 @@ import static org.apache.solr.common.uti
*/
@Slow
public abstract class AbstractFullDistribZkTestBase extends AbstractDistribZkTestBase {
- static Logger log = LoggerFactory.getLogger(AbstractFullDistribZkTestBase.class);
+ private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
@BeforeClass
public static void beforeFullSolrCloudTest() {
@@ -1200,8 +1201,7 @@ public abstract class AbstractFullDistri
log.info("Turning on auto soft commit: " + time);
for (List<CloudJettyRunner> jettyList : shardToJetty.values()) {
for (CloudJettyRunner jetty : jettyList) {
- CoreContainer cores = ((SolrDispatchFilter) jetty.jetty
- .getDispatchFilter().getFilter()).getCores();
+ CoreContainer cores = jetty.jetty.getCoreContainer();
for (SolrCore core : cores.getCores()) {
((DirectUpdateHandler2) core.getUpdateHandler())
.getSoftCommitTracker().setTimeUpperBound(time);
Modified: lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/AbstractZkTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/AbstractZkTestCase.java?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/AbstractZkTestCase.java (original)
+++ lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/AbstractZkTestCase.java Mon Dec 21 11:39:57 2015
@@ -28,6 +28,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
+import java.lang.invoke.MethodHandles;
import java.util.HashMap;
import java.util.Map;
@@ -41,8 +42,7 @@ public abstract class AbstractZkTestCase
private static final boolean DEBUG = false;
- protected static Logger log = LoggerFactory
- .getLogger(AbstractZkTestCase.class);
+ private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
public static File SOLRHOME;
Modified: lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/ChaosMonkey.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/ChaosMonkey.java?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/ChaosMonkey.java (original)
+++ lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/ChaosMonkey.java Mon Dec 21 11:39:57 2015
@@ -1,5 +1,7 @@
package org.apache.solr.cloud;
+import java.lang.invoke.MethodHandles;
+
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -17,6 +19,15 @@ package org.apache.solr.cloud;
* limitations under the License.
*/
+import java.net.InetSocketAddress;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
+
import org.apache.lucene.util.LuceneTestCase;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.embedded.JettySolrRunner;
@@ -32,19 +43,9 @@ import org.apache.solr.servlet.SolrDispa
import org.apache.solr.update.DirectUpdateHandler2;
import org.apache.solr.util.RTimer;
import org.apache.zookeeper.KeeperException;
-import org.eclipse.jetty.servlet.FilterHolder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.servlet.Filter;
-
-import java.net.InetSocketAddress;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-import java.util.concurrent.atomic.AtomicInteger;
-
/**
* The monkey can stop random or specific jetties used with SolrCloud.
*
@@ -56,7 +57,7 @@ import java.util.concurrent.atomic.Atomi
* TODO: chaosmonkey should be able to do cluster stop/start tests
*/
public class ChaosMonkey {
- private static Logger log = LoggerFactory.getLogger(ChaosMonkey.class);
+ private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private static final int CONLOSS_PERCENT = 10; // 0 - 10 = 0 - 100%
private static final int EXPIRE_PERCENT = 10; // 0 - 10 = 0 - 100%
@@ -120,18 +121,15 @@ public class ChaosMonkey {
// TODO: expire all clients at once?
public void expireSession(final JettySolrRunner jetty) {
monkeyLog("expire session for " + jetty.getLocalPort() + " !");
-
- SolrDispatchFilter solrDispatchFilter = (SolrDispatchFilter) jetty
- .getDispatchFilter().getFilter();
- if (solrDispatchFilter != null) {
- CoreContainer cores = solrDispatchFilter.getCores();
- if (cores != null) {
- causeConnectionLoss(jetty);
- long sessionId = cores.getZkController().getZkClient()
- .getSolrZooKeeper().getSessionId();
- zkServer.expire(sessionId);
- }
+
+ CoreContainer cores = jetty.getCoreContainer();
+ if (cores != null) {
+ causeConnectionLoss(jetty);
+ long sessionId = cores.getZkController().getZkClient()
+ .getSolrZooKeeper().getSessionId();
+ zkServer.expire(sessionId);
}
+
}
public void expireRandomSession() throws KeeperException, InterruptedException {
@@ -156,14 +154,10 @@ public class ChaosMonkey {
}
public static void causeConnectionLoss(JettySolrRunner jetty) {
- SolrDispatchFilter solrDispatchFilter = (SolrDispatchFilter) jetty
- .getDispatchFilter().getFilter();
- if (solrDispatchFilter != null) {
- CoreContainer cores = solrDispatchFilter.getCores();
- if (cores != null) {
- SolrZkClient zkClient = cores.getZkController().getZkClient();
- zkClient.getSolrZooKeeper().closeCnxn();
- }
+ CoreContainer cores = jetty.getCoreContainer();
+ if (cores != null) {
+ SolrZkClient zkClient = cores.getZkController().getZkClient();
+ zkClient.getSolrZooKeeper().closeCnxn();
}
}
@@ -191,17 +185,25 @@ public class ChaosMonkey {
private static void stopJettySolrRunner(JettySolrRunner jetty) throws Exception {
assert(jetty != null);
monkeyLog("stop shard! " + jetty.getLocalPort());
- // get a clean close so that no dirs are left open...
- FilterHolder fh = jetty.getDispatchFilter();
- if (fh != null) {
- SolrDispatchFilter sdf = (SolrDispatchFilter) fh.getFilter();
- if (sdf != null) {
+ SolrDispatchFilter sdf = jetty.getSolrDispatchFilter();
+ if (sdf != null) {
+ try {
sdf.destroy();
+ } catch (Throwable t) {
+ log.error("", t);
}
}
- jetty.stop();
+ try {
+ jetty.stop();
+ } catch (InterruptedException e) {
+ log.info("Jetty stop interrupted - should be a test caused interruption, we will try again to be sure we shutdown");
+ }
if (!jetty.isStopped()) {
+ jetty.stop();
+ }
+
+ if (!jetty.isStopped()) {
throw new RuntimeException("could not stop jetty");
}
}
@@ -214,18 +216,13 @@ public class ChaosMonkey {
}
public static void kill(JettySolrRunner jetty) throws Exception {
- FilterHolder filterHolder = jetty.getDispatchFilter();
- if (filterHolder != null) {
- Filter filter = filterHolder.getFilter();
- if (filter != null) {
- CoreContainer cores = ((SolrDispatchFilter) filter).getCores();
- if (cores != null) {
- if (cores.isZooKeeperAware()) {
- int zklocalport = ((InetSocketAddress) cores.getZkController()
- .getZkClient().getSolrZooKeeper().getSocketAddress()).getPort();
- IpTables.blockPort(zklocalport);
- }
- }
+
+ CoreContainer cores = jetty.getCoreContainer();
+ if (cores != null) {
+ if (cores.isZooKeeperAware()) {
+ int zklocalport = ((InetSocketAddress) cores.getZkController()
+ .getZkClient().getSolrZooKeeper().getSocketAddress()).getPort();
+ IpTables.blockPort(zklocalport);
}
}
@@ -246,6 +243,42 @@ public class ChaosMonkey {
kill(cjetty.jetty);
}
+ public void stopAll(int pauseBetweenMs) throws Exception {
+ Set<String> keys = shardToJetty.keySet();
+ List<Thread> jettyThreads = new ArrayList<>(keys.size());
+ for (String key : keys) {
+ List<CloudJettyRunner> jetties = shardToJetty.get(key);
+ for (CloudJettyRunner jetty : jetties) {
+ Thread.sleep(pauseBetweenMs);
+ Thread thread = new Thread() {
+ public void run() {
+ try {
+ stopJetty(jetty);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ };
+ jettyThreads.add(thread);
+ thread.start();
+
+ }
+ }
+ for (Thread thread : jettyThreads) {
+ thread.join();
+ }
+ }
+
+ public void startAll() throws Exception {
+ Set<String> keys = shardToJetty.keySet();
+ for (String key : keys) {
+ List<CloudJettyRunner> jetties = shardToJetty.get(key);
+ for (CloudJettyRunner jetty : jetties) {
+ start(jetty.jetty);
+ }
+ }
+ }
+
public void stopShard(String slice) throws Exception {
List<CloudJettyRunner> jetties = shardToJetty.get(slice);
for (CloudJettyRunner jetty : jetties) {
@@ -352,31 +385,20 @@ public class ChaosMonkey {
log.error("Could not get leader", t);
return null;
}
-
- FilterHolder fh = cjetty.jetty.getDispatchFilter();
- if (fh == null) {
- monkeyLog("selected jetty not running correctly - skip");
- return null;
- }
- SolrDispatchFilter df = ((SolrDispatchFilter) fh.getFilter());
- if (df == null) {
- monkeyLog("selected jetty not running correctly - skip");
- return null;
- }
- CoreContainer cores = df.getCores();
- if (cores == null) {
- monkeyLog("selected jetty not running correctly - skip");
- return null;
- }
// cluster state can be stale - also go by our 'near real-time' is leader prop
boolean rtIsLeader;
- try (SolrCore core = cores.getCore(leader.getStr(ZkStateReader.CORE_NAME_PROP))) {
- if (core == null) {
- monkeyLog("selected jetty not running correctly - skip");
- return null;
+ CoreContainer cc = cjetty.jetty.getCoreContainer();
+ if (cc != null) {
+ try (SolrCore core = cc.getCore(leader.getStr(ZkStateReader.CORE_NAME_PROP))) {
+ if (core == null) {
+ monkeyLog("selected jetty not running correctly - skip");
+ return null;
+ }
+ rtIsLeader = core.getCoreDescriptor().getCloudDescriptor().isLeader();
}
- rtIsLeader = core.getCoreDescriptor().getCloudDescriptor().isLeader();
+ } else {
+ return null;
}
boolean isLeader = leader.getStr(ZkStateReader.NODE_NAME_PROP).equals(jetties.get(index).nodeName)
@@ -535,8 +557,8 @@ public class ChaosMonkey {
DirectUpdateHandler2.commitOnClose = true;
double runtime = runTimer.getTime()/1000.0f;
- if (runtime > 30 && stops.get() == 0) {
- LuceneTestCase.fail("The Monkey ran for over 30 seconds and no jetties were stopped - this is worth investigating!");
+ if (runtime > 45 && stops.get() == 0) {
+ LuceneTestCase.fail("The Monkey ran for over 45 seconds and no jetties were stopped - this is worth investigating!");
}
}
@@ -589,20 +611,15 @@ public class ChaosMonkey {
}
}
}
- FilterHolder filterHolder = jetty.getDispatchFilter();
- if (filterHolder != null) {
- Filter filter = filterHolder.getFilter();
- if (filter != null) {
- CoreContainer cores = ((SolrDispatchFilter) filter).getCores();
- if (cores != null) {
- if (cores.isZooKeeperAware()) {
- int zklocalport = ((InetSocketAddress) cores.getZkController()
- .getZkClient().getSolrZooKeeper().getSocketAddress()).getPort();
- IpTables.unblockPort(zklocalport);
- }
- }
+ CoreContainer cores = jetty.getCoreContainer();
+ if (cores != null) {
+ if (cores.isZooKeeperAware()) {
+ int zklocalport = ((InetSocketAddress) cores.getZkController()
+ .getZkClient().getSolrZooKeeper().getSocketAddress()).getPort();
+ IpTables.unblockPort(zklocalport);
}
}
+
return true;
}
Modified: lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/CloudInspectUtil.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/CloudInspectUtil.java?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/CloudInspectUtil.java (original)
+++ lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/CloudInspectUtil.java Mon Dec 21 11:39:57 2015
@@ -11,6 +11,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
+import java.lang.invoke.MethodHandles;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@@ -34,7 +35,7 @@ import java.util.Set;
*/
public class CloudInspectUtil {
- static Logger log = LoggerFactory.getLogger(CloudInspectUtil.class);
+ private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
/**
* When a and b are known to be different, this method tells if the difference
Modified: lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/IpTables.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/IpTables.java?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/IpTables.java (original)
+++ lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/IpTables.java Mon Dec 21 11:39:57 2015
@@ -19,6 +19,7 @@ package org.apache.solr.cloud;
import java.io.IOException;
+import java.lang.invoke.MethodHandles;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
@@ -30,7 +31,7 @@ import org.slf4j.LoggerFactory;
* To use, tests must be able to run iptables, eg sudo chmod u+s iptables
*/
public class IpTables {
- static final Logger log = LoggerFactory.getLogger(IpTables.class);
+ private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private static final boolean ENABLED = Boolean.getBoolean("solr.tests.use.iptables");
Modified: lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java (original)
+++ lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java Mon Dec 21 11:39:57 2015
@@ -17,6 +17,26 @@ package org.apache.solr.cloud;
* limitations under the License.
*/
+import javax.servlet.Filter;
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.Charset;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.SortedMap;
+import java.util.concurrent.Callable;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
+
import com.google.common.base.Charsets;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.embedded.JettyConfig;
@@ -36,42 +56,61 @@ import org.apache.solr.common.util.Named
import org.apache.solr.common.util.SolrjNamedThreadFactory;
import org.apache.zookeeper.KeeperException;
import org.eclipse.jetty.servlet.ServletHolder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.servlet.Filter;
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.SortedMap;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
/**
* "Mini" SolrCloud cluster to be used for testing
*/
public class MiniSolrCloudCluster {
- private static Logger log = LoggerFactory.getLogger(MiniSolrCloudCluster.class);
+ public static final String DEFAULT_CLOUD_SOLR_XML = "<solr>\n" +
+ "\n" +
+ " <str name=\"shareSchema\">${shareSchema:false}</str>\n" +
+ " <str name=\"configSetBaseDir\">${configSetBaseDir:configsets}</str>\n" +
+ " <str name=\"coreRootDirectory\">${coreRootDirectory:.}</str>\n" +
+ "\n" +
+ " <shardHandlerFactory name=\"shardHandlerFactory\" class=\"HttpShardHandlerFactory\">\n" +
+ " <str name=\"urlScheme\">${urlScheme:}</str>\n" +
+ " <int name=\"socketTimeout\">${socketTimeout:90000}</int>\n" +
+ " <int name=\"connTimeout\">${connTimeout:15000}</int>\n" +
+ " </shardHandlerFactory>\n" +
+ "\n" +
+ " <solrcloud>\n" +
+ " <str name=\"host\">127.0.0.1</str>\n" +
+ " <int name=\"hostPort\">${hostPort:8983}</int>\n" +
+ " <str name=\"hostContext\">${hostContext:solr}</str>\n" +
+ " <int name=\"zkClientTimeout\">${solr.zkclienttimeout:30000}</int>\n" +
+ " <bool name=\"genericCoreNodeNames\">${genericCoreNodeNames:true}</bool>\n" +
+ " <int name=\"leaderVoteWait\">10000</int>\n" +
+ " <int name=\"distribUpdateConnTimeout\">${distribUpdateConnTimeout:45000}</int>\n" +
+ " <int name=\"distribUpdateSoTimeout\">${distribUpdateSoTimeout:340000}</int>\n" +
+ " </solrcloud>\n" +
+ " \n" +
+ "</solr>\n";
private final ZkTestServer zkServer;
private final boolean externalZkServer;
- private final List<JettySolrRunner> jettys = new LinkedList<>();
- private final File testDir;
+ private final List<JettySolrRunner> jettys = new CopyOnWriteArrayList<>();
+ private final Path baseDir;
private final CloudSolrClient solrClient;
private final JettyConfig jettyConfig;
private final ExecutorService executor = ExecutorUtil.newMDCAwareCachedThreadPool(new SolrjNamedThreadFactory("jetty-launcher"));
+ private final AtomicInteger nodeIds = new AtomicInteger();
+
+ /**
+ * Create a MiniSolrCloudCluster with default solr.xml
+ *
+ * @param numServers number of Solr servers to start
+ * @param baseDir base directory that the mini cluster should be run from
+ * @param jettyConfig Jetty configuration
+ *
+ * @throws Exception if there was an error starting the cluster
+ */
+ public MiniSolrCloudCluster(int numServers, Path baseDir, JettyConfig jettyConfig) throws Exception {
+ this(numServers, baseDir, DEFAULT_CLOUD_SOLR_XML, jettyConfig, null);
+ }
+
/**
* Create a MiniSolrCloudCluster
*
@@ -84,7 +123,7 @@ public class MiniSolrCloudCluster {
*
* @throws Exception if there was an error starting the cluster
*/
- public MiniSolrCloudCluster(int numServers, String hostContext, File baseDir, File solrXml,
+ public MiniSolrCloudCluster(int numServers, String hostContext, Path baseDir, String solrXml,
SortedMap<ServletHolder, String> extraServlets,
SortedMap<Class<? extends Filter>, String> extraRequestFilters) throws Exception {
this(numServers, hostContext, baseDir, solrXml, extraServlets, extraRequestFilters, null);
@@ -103,7 +142,7 @@ public class MiniSolrCloudCluster {
*
* @throws Exception if there was an error starting the cluster
*/
- public MiniSolrCloudCluster(int numServers, String hostContext, File baseDir, File solrXml,
+ public MiniSolrCloudCluster(int numServers, String hostContext, Path baseDir, String solrXml,
SortedMap<ServletHolder, String> extraServlets,
SortedMap<Class<? extends Filter>, String> extraRequestFilters,
SSLConfig sslConfig) throws Exception {
@@ -125,7 +164,7 @@ public class MiniSolrCloudCluster {
*
* @throws Exception if there was an error starting the cluster
*/
- public MiniSolrCloudCluster(int numServers, File baseDir, File solrXml, JettyConfig jettyConfig) throws Exception {
+ public MiniSolrCloudCluster(int numServers, Path baseDir, String solrXml, JettyConfig jettyConfig) throws Exception {
this(numServers, baseDir, solrXml, jettyConfig, null);
}
@@ -140,15 +179,16 @@ public class MiniSolrCloudCluster {
*
* @throws Exception if there was an error starting the cluster
*/
- public MiniSolrCloudCluster(int numServers, File baseDir, File solrXml, JettyConfig jettyConfig, ZkTestServer zkTestServer) throws Exception {
+ public MiniSolrCloudCluster(int numServers, Path baseDir, String solrXml, JettyConfig jettyConfig, ZkTestServer zkTestServer) throws Exception {
- this.testDir = baseDir;
+ this.baseDir = baseDir;
this.jettyConfig = jettyConfig;
+ Files.createDirectories(baseDir);
+
this.externalZkServer = zkTestServer != null;
if (!externalZkServer) {
- String zkDir = testDir.getAbsolutePath() + File.separator
- + "zookeeper/server1/data";
+ String zkDir = baseDir.resolve("zookeeper/server1/data").toString();
zkTestServer = new ZkTestServer(zkDir);
zkTestServer.run();
}
@@ -156,7 +196,7 @@ public class MiniSolrCloudCluster {
try(SolrZkClient zkClient = new SolrZkClient(zkServer.getZkHost(),
AbstractZkTestCase.TIMEOUT, 45000, null)) {
- zkClient.makePath("/solr/solr.xml", solrXml, false, true);
+ zkClient.makePath("/solr/solr.xml", solrXml.getBytes(Charset.defaultCharset()), true);
if (jettyConfig.sslConfig != null && jettyConfig.sslConfig.isSSLMode()) {
zkClient.makePath("/solr" + ZkStateReader.CLUSTER_PROPS, "{'urlScheme':'https'}".getBytes(Charsets.UTF_8), true);
}
@@ -170,7 +210,7 @@ public class MiniSolrCloudCluster {
startups.add(new Callable<JettySolrRunner>() {
@Override
public JettySolrRunner call() throws Exception {
- return startJettySolrRunner(jettyConfig);
+ return startJettySolrRunner(newNodeName(), jettyConfig.context, jettyConfig);
}
});
}
@@ -213,6 +253,16 @@ public class MiniSolrCloudCluster {
solrClient = buildSolrClient();
}
+ private String newNodeName() {
+ return "node" + nodeIds.incrementAndGet();
+ }
+
+ private Path createInstancePath(String name) throws IOException {
+ Path instancePath = baseDir.resolve(name);
+ Files.createDirectory(instancePath);
+ return instancePath;
+ }
+
/**
* @return ZooKeeper server used by the MiniCluster
*/
@@ -237,10 +287,10 @@ public class MiniSolrCloudCluster {
* @return new Solr instance
*
*/
- public JettySolrRunner startJettySolrRunner(String hostContext,
+ public JettySolrRunner startJettySolrRunner(String name, String hostContext,
SortedMap<ServletHolder, String> extraServlets,
SortedMap<Class<? extends Filter>, String> extraRequestFilters) throws Exception {
- return startJettySolrRunner(hostContext, extraServlets, extraRequestFilters, null);
+ return startJettySolrRunner(name, hostContext, extraServlets, extraRequestFilters, null);
}
/**
@@ -253,10 +303,10 @@ public class MiniSolrCloudCluster {
*
* @return new Solr instance
*/
- public JettySolrRunner startJettySolrRunner(String hostContext,
+ public JettySolrRunner startJettySolrRunner(String name, String hostContext,
SortedMap<ServletHolder, String> extraServlets,
SortedMap<Class<? extends Filter>, String> extraRequestFilters, SSLConfig sslConfig) throws Exception {
- return startJettySolrRunner(hostContext, JettyConfig.builder()
+ return startJettySolrRunner(name, hostContext, JettyConfig.builder()
.withServlets(extraServlets)
.withFilters(extraRequestFilters)
.withSSLConfig(sslConfig)
@@ -264,28 +314,19 @@ public class MiniSolrCloudCluster {
}
/**
- * Start a new Solr instance
- *
- * @param config a JettyConfig for the instance's {@link org.apache.solr.client.solrj.embedded.JettySolrRunner}
- *
- * @return a JettySolrRunner
- */
- public JettySolrRunner startJettySolrRunner(JettyConfig config) throws Exception {
- return startJettySolrRunner(config.context, config);
- }
-
- /**
* Start a new Solr instance on a particular servlet context
*
+ * @param name the instance name
* @param hostContext the context to run on
* @param config a JettyConfig for the instance's {@link org.apache.solr.client.solrj.embedded.JettySolrRunner}
*
* @return a JettySolrRunner
*/
- public JettySolrRunner startJettySolrRunner(String hostContext, JettyConfig config) throws Exception {
+ public JettySolrRunner startJettySolrRunner(String name, String hostContext, JettyConfig config) throws Exception {
+ Path runnerPath = createInstancePath(name);
String context = getHostContextSuitableForServletContext(hostContext);
JettyConfig newConfig = JettyConfig.builder(config).setContext(context).build();
- JettySolrRunner jetty = new JettySolrRunner(testDir.getAbsolutePath(), newConfig);
+ JettySolrRunner jetty = new JettySolrRunner(runnerPath.toString(), newConfig);
jetty.start();
jettys.add(jetty);
return jetty;
@@ -297,7 +338,7 @@ public class MiniSolrCloudCluster {
* @return a JettySolrRunner
*/
public JettySolrRunner startJettySolrRunner() throws Exception {
- return startJettySolrRunner(jettyConfig);
+ return startJettySolrRunner(newNodeName(), jettyConfig.context, jettyConfig);
}
/**
@@ -312,6 +353,12 @@ public class MiniSolrCloudCluster {
return jetty;
}
+ protected JettySolrRunner startJettySolrRunner(JettySolrRunner jetty) throws Exception {
+ jetty.start();
+ jettys.add(jetty);
+ return jetty;
+ }
+
protected JettySolrRunner stopJettySolrRunner(JettySolrRunner jetty) throws Exception {
jetty.stop();
return jetty;
Modified: lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/SocketProxy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/SocketProxy.java?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/SocketProxy.java (original)
+++ lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/SocketProxy.java Mon Dec 21 11:39:57 2015
@@ -20,6 +20,7 @@ package org.apache.solr.cloud;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.lang.invoke.MethodHandles;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
@@ -45,7 +46,7 @@ import org.slf4j.LoggerFactory;
*/
public class SocketProxy {
- private static final transient Logger log = LoggerFactory.getLogger(SocketProxy.class);
+ private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
public static final int ACCEPT_TIMEOUT_MILLIS = 100;
Modified: lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/StoppableSearchThread.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/StoppableSearchThread.java?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/StoppableSearchThread.java (original)
+++ lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/StoppableSearchThread.java Mon Dec 21 11:39:57 2015
@@ -1,5 +1,7 @@
package org.apache.solr.cloud;
+import java.lang.invoke.MethodHandles;
+
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -28,7 +30,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
class StoppableSearchThread extends AbstractFullDistribZkTestBase.StoppableThread {
- static Logger log = LoggerFactory.getLogger(AbstractFullDistribZkTestBase.class);
+ private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private final CloudSolrClient cloudClient;
private volatile boolean stop = false;
Modified: lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/ZkTestServer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/ZkTestServer.java?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/ZkTestServer.java (original)
+++ lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/cloud/ZkTestServer.java Mon Dec 21 11:39:57 2015
@@ -45,6 +45,7 @@ import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
+import java.lang.invoke.MethodHandles;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
@@ -62,7 +63,7 @@ import java.util.concurrent.TimeUnit;
public class ZkTestServer {
public static final int TICK_TIME = 1000;
- private static Logger log = LoggerFactory.getLogger(ZkTestServer.class);
+ private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
protected final ZKServerMain zkServer = new ZKServerMain();
Modified: lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/handler/component/TrackingShardHandlerFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/handler/component/TrackingShardHandlerFactory.java?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/handler/component/TrackingShardHandlerFactory.java (original)
+++ lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/handler/component/TrackingShardHandlerFactory.java Mon Dec 21 11:39:57 2015
@@ -35,7 +35,6 @@ import org.apache.solr.common.cloud.ZkSt
import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.common.util.StrUtils;
import org.apache.solr.core.CoreContainer;
-import org.apache.solr.servlet.SolrDispatchFilter;
/**
* A ShardHandlerFactory that extends HttpShardHandlerFactory and
@@ -93,7 +92,7 @@ public class TrackingShardHandlerFactory
}
@Override
- public void submit(ShardRequest sreq, String shard, ModifiableSolrParams params) {
+ public void submit(ShardRequest sreq, String shard, ModifiableSolrParams params, String preferredHostAddress) {
synchronized (TrackingShardHandlerFactory.this) {
if (isTracking()) {
queue.offer(new ShardRequestAndParams(sreq, shard, params));
@@ -153,7 +152,7 @@ public class TrackingShardHandlerFactory
*/
public static void setTrackingQueue(List<JettySolrRunner> runners, Queue<ShardRequestAndParams> queue) {
for (JettySolrRunner runner : runners) {
- CoreContainer container = ((SolrDispatchFilter) runner.getDispatchFilter().getFilter()).getCores();
+ CoreContainer container = runner.getCoreContainer();
ShardHandlerFactory factory = container.getShardHandlerFactory();
assert factory instanceof TrackingShardHandlerFactory : "not a TrackingShardHandlerFactory: " + factory.getClass();
TrackingShardHandlerFactory trackingShardHandlerFactory = (TrackingShardHandlerFactory) factory;
Modified: lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/util/AbstractSolrTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/util/AbstractSolrTestCase.java?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/util/AbstractSolrTestCase.java (original)
+++ lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/util/AbstractSolrTestCase.java Mon Dec 21 11:39:57 2015
@@ -20,6 +20,7 @@ package org.apache.solr.util;
import java.io.File;
+import java.lang.invoke.MethodHandles;
import java.util.HashSet;
import org.apache.lucene.util.QuickPatchThreadsFilter;
@@ -61,7 +62,7 @@ public abstract class AbstractSolrTestCa
return SolrTestCaseJ4.TEST_HOME();
}
- public static Logger log = LoggerFactory.getLogger(AbstractSolrTestCase.class);
+ private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
/** Causes an exception matching the regex pattern to not be logged. */
Modified: lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/util/RandomMergePolicy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/util/RandomMergePolicy.java?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/util/RandomMergePolicy.java (original)
+++ lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/util/RandomMergePolicy.java Mon Dec 21 11:39:57 2015
@@ -18,6 +18,7 @@
package org.apache.solr.util;
import java.io.IOException;
+import java.lang.invoke.MethodHandles;
import java.util.Map;
import org.apache.lucene.index.IndexWriter;
@@ -30,18 +31,17 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- * A {@link MergePolicy} with a no-arg constructor that proxies to a
- * wrapped instance retrieved from {@link LuceneTestCase#newMergePolicy}.
+ * A {@link MergePolicy} with a no-arg constructor that proxies to an
+ * instance retrieved from {@link LuceneTestCase#newMergePolicy}.
* Solr tests utilizing the Lucene randomized test framework can refer
* to this class in solrconfig.xml to get a fully randomized merge policy.
*/
-public final class RandomMergePolicy extends MergePolicy {
+public class RandomMergePolicy extends MergePolicy {
- public static Logger log = LoggerFactory.getLogger(RandomMergePolicy.class);
+ private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
/**
* Not private so tests can inspect it,
- * Not final so it can be set on clone
*/
final MergePolicy inner;
@@ -49,7 +49,7 @@ public final class RandomMergePolicy ext
this(LuceneTestCase.newMergePolicy());
}
- private RandomMergePolicy(MergePolicy inner) {
+ protected RandomMergePolicy(MergePolicy inner) {
super(inner.getNoCFSRatio(),
(long) (inner.getMaxCFSSegmentSizeMB() * 1024 * 1024));
this.inner = inner;
Modified: lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/util/RestTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/util/RestTestBase.java?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/util/RestTestBase.java (original)
+++ lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/util/RestTestBase.java Mon Dec 21 11:39:57 2015
@@ -30,11 +30,12 @@ import org.xml.sax.SAXException;
import javax.xml.xpath.XPathExpressionException;
import java.io.IOException;
+import java.lang.invoke.MethodHandles;
import java.util.Map;
import java.util.SortedMap;
abstract public class RestTestBase extends SolrJettyTestBase {
- private static final Logger log = LoggerFactory.getLogger(RestTestBase.class);
+ private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
protected static RestTestHarness restTestHarness;
@AfterClass
Modified: lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/util/SSLTestConfig.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/util/SSLTestConfig.java?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/util/SSLTestConfig.java (original)
+++ lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/util/SSLTestConfig.java Mon Dec 21 11:39:57 2015
@@ -35,6 +35,7 @@ import org.apache.http.impl.client.Defau
import org.apache.solr.client.solrj.embedded.SSLConfig;
import org.apache.solr.client.solrj.impl.HttpClientConfigurer;
import org.apache.solr.common.params.SolrParams;
+import org.eclipse.jetty.util.resource.Resource;
import org.eclipse.jetty.util.security.CertificateUtils;
public class SSLTestConfig extends SSLConfig {
@@ -82,7 +83,7 @@ public class SSLTestConfig extends SSLCo
protected static KeyStore buildKeyStore(String keyStoreLocation, String password) {
try {
- return CertificateUtils.getKeyStore(null, keyStoreLocation, "JKS", null, password);
+ return CertificateUtils.getKeyStore(Resource.newResource(keyStoreLocation), "JKS", null, password);
} catch (Exception ex) {
throw new IllegalStateException("Unable to build KeyStore from file: " + keyStoreLocation, ex);
}
Modified: lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/util/TestHarness.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/util/TestHarness.java?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/util/TestHarness.java (original)
+++ lucene/dev/branches/lucene6835/solr/test-framework/src/java/org/apache/solr/util/TestHarness.java Mon Dec 21 11:39:57 2015
@@ -17,22 +17,21 @@
package org.apache.solr.util;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.nio.file.Path;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
import com.google.common.collect.ImmutableList;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.NamedList.NamedListEntry;
-import org.apache.solr.core.CloudConfig;
-import org.apache.solr.core.CoreContainer;
-import org.apache.solr.core.CoreDescriptor;
-import org.apache.solr.core.CorePropertiesLocator;
-import org.apache.solr.core.CoresLocator;
-import org.apache.solr.core.NodeConfig;
-import org.apache.solr.core.SolrConfig;
-import org.apache.solr.core.SolrCore;
-import org.apache.solr.core.SolrResourceLoader;
-import org.apache.solr.core.SolrXmlConfig;
+import org.apache.solr.core.*;
import org.apache.solr.handler.UpdateRequestHandler;
import org.apache.solr.request.LocalSolrQueryRequest;
import org.apache.solr.request.SolrQueryRequest;
@@ -45,14 +44,6 @@ import org.apache.solr.schema.IndexSchem
import org.apache.solr.servlet.DirectSolrConnection;
import org.apache.solr.update.UpdateShardHandlerConfig;
-import java.io.File;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
/**
* This class provides a simple harness that may be useful when
* writing testcases.
@@ -75,21 +66,21 @@ public class TestHarness extends BaseTes
* follows the basic conventions of being a relative path in the solrHome
* dir. (ie: <code>${solrHome}/${coreName}/conf/${confFile}</code>
*/
- public static SolrConfig createConfig(String solrHome, String coreName, String confFile) {
+ public static SolrConfig createConfig(Path solrHome, String coreName, String confFile) {
// set some system properties for use by tests
System.setProperty("solr.test.sys.prop1", "propone");
System.setProperty("solr.test.sys.prop2", "proptwo");
try {
- return new SolrConfig(solrHome + File.separator + coreName, confFile, null);
+ return new SolrConfig(solrHome.resolve(coreName), confFile, null);
} catch (Exception xany) {
throw new RuntimeException(xany);
}
}
/**
- * Creates a SolrConfig object for the default test core using {@link #createConfig(String,String,String)}
+ * Creates a SolrConfig object for the default test core using {@link #createConfig(Path,String,String)}
*/
- public static SolrConfig createConfig(String solrHome, String confFile) {
+ public static SolrConfig createConfig(Path solrHome, String confFile) {
return createConfig(solrHome, SolrTestCaseJ4.DEFAULT_TEST_CORENAME, confFile);
}
@@ -148,7 +139,7 @@ public class TestHarness extends BaseTes
* @param solrHome the solr home directory
* @param solrXml the text of a solrxml
*/
- public TestHarness(String solrHome, String solrXml) {
+ public TestHarness(Path solrHome, String solrXml) {
this(new SolrResourceLoader(solrHome), solrXml);
}
@@ -211,7 +202,7 @@ public class TestHarness extends BaseTes
@Override
public List<CoreDescriptor> discover(CoreContainer cc) {
- return ImmutableList.of(new CoreDescriptor(cc, coreName, coreName,
+ return ImmutableList.of(new CoreDescriptor(cc, coreName, cc.getCoreRootDirectory().resolve(coreName),
CoreDescriptor.CORE_DATADIR, dataDir,
CoreDescriptor.CORE_CONFIG, solrConfig,
CoreDescriptor.CORE_SCHEMA, schema,
Modified: lucene/dev/branches/lucene6835/solr/webapp/web/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/webapp/web/WEB-INF/web.xml?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/webapp/web/WEB-INF/web.xml (original)
+++ lucene/dev/branches/lucene6835/solr/webapp/web/WEB-INF/web.xml Mon Dec 21 11:39:57 2015
@@ -141,7 +141,12 @@
<servlet-mapping>
<servlet-name>LoadAdminUI</servlet-name>
- <url-pattern>/admin.html</url-pattern>
+ <url-pattern>/old.html</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>LoadAdminUI</servlet-name>
+ <url-pattern>/index.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
@@ -156,7 +161,7 @@
</mime-mapping>
<welcome-file-list>
- <welcome-file>admin.html</welcome-file>
+ <welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
Modified: lucene/dev/branches/lucene6835/solr/webapp/web/css/angular/collections.css
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/webapp/web/css/angular/collections.css?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/webapp/web/css/angular/collections.css (original)
+++ lucene/dev/branches/lucene6835/solr/webapp/web/css/angular/collections.css Mon Dec 21 11:39:57 2015
@@ -273,7 +273,7 @@ limitations under the License.
padding-right: 21px;
}
-#content #collections #add_advanced .open {
+#content #collections #add_advanced.open {
background-image: url( ../../img/ico/chevron-small.png );
}
Modified: lucene/dev/branches/lucene6835/solr/webapp/web/css/angular/common.css
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/webapp/web/css/angular/common.css?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/webapp/web/css/angular/common.css (original)
+++ lucene/dev/branches/lucene6835/solr/webapp/web/css/angular/common.css Mon Dec 21 11:39:57 2015
@@ -755,8 +755,23 @@ pre.syntax .tex .formula
top: -20px;
}
-.other-ui-link span {
+.other-ui-link span,
+.new-ui-warning span.help {
background-image: url( ../../img/ico/information-white.png );
right: 0px;
padding-left: 16px;
-}
\ No newline at end of file
+}
+
+.new-ui-warning {
+ position: absolute;
+ left: 150px;
+ top: -20px;
+ align: center;
+ color: red;
+ font-weight: bold;
+}
+.new-ui-warning a.ul {
+ color: red;
+ font-weight: bold;
+ text-decoration: underline;
+}
Modified: lucene/dev/branches/lucene6835/solr/webapp/web/css/angular/menu.css
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/webapp/web/css/angular/menu.css?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/webapp/web/css/angular/menu.css (original)
+++ lucene/dev/branches/lucene6835/solr/webapp/web/css/angular/menu.css Mon Dec 21 11:39:57 2015
@@ -278,7 +278,7 @@ limitations under the License.
.sub-menu .analysis a { background-image: url( ../../img/ico/funnel.png ); }
.sub-menu .documents a { background-image: url( ../../img/ico/documents-stack.png ); }
.sub-menu .files a { background-image: url( ../../img/ico/folder.png ); }
-.sub-menu .schema-browser a { background-image: url( ../../img/ico/book-open-text.png ); }
+.sub-menu .schema a { background-image: url( ../../img/ico/book-open-text.png ); }
.sub-menu .replication a { background-image: url( ../../img/ico/node.png ); }
.sub-menu .distribution a { background-image: url( ../../img/ico/node-select.png ); }
.sub-menu .ping a { background-image: url( ../../img/ico/system-monitor.png ); }
Modified: lucene/dev/branches/lucene6835/solr/webapp/web/css/styles/common.css
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/webapp/web/css/styles/common.css?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/webapp/web/css/styles/common.css (original)
+++ lucene/dev/branches/lucene6835/solr/webapp/web/css/styles/common.css Mon Dec 21 11:39:57 2015
@@ -707,8 +707,11 @@ pre.syntax .tex .formula
top: -20px;
}
-.other-ui-link span {
+.other-ui-link span.help {
background-image: url( ../../img/ico/information-white.png );
right: 0px;
padding-left: 16px;
+}
+.other-ui-link a.ul {
+ text-decoration: underline;
}
\ No newline at end of file
Modified: lucene/dev/branches/lucene6835/solr/webapp/web/index.html
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/webapp/web/index.html?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/webapp/web/index.html (original)
+++ lucene/dev/branches/lucene6835/solr/webapp/web/index.html Mon Dec 21 11:39:57 2015
@@ -39,7 +39,7 @@ limitations under the License.
<link rel="stylesheet" type="text/css" href="css/angular/documents.css?_=${version}">
<link rel="stylesheet" type="text/css" href="css/angular/query.css?_=${version}">
<link rel="stylesheet" type="text/css" href="css/angular/replication.css?_=${version}">
- <link rel="stylesheet" type="text/css" href="css/angular/schema-browser.css?_=${version}">
+ <link rel="stylesheet" type="text/css" href="css/angular/schema.css?_=${version}">
<link rel="stylesheet" type="text/css" href="css/angular/segments.css?_=${version}">
<link rel="stylesheet" type="text/css" href="css/angular/threads.css?_=${version}">
<link rel="stylesheet" type="text/css" href="css/angular/chosen.css?_=${version}">
@@ -74,13 +74,13 @@ limitations under the License.
<script src="js/angular/controllers/query.js"></script>
<script src="js/angular/controllers/plugins.js"></script>
<script src="js/angular/controllers/replication.js"></script>
- <script src="js/angular/controllers/schema-browser.js"></script>
+ <script src="js/angular/controllers/schema.js"></script>
<script src="js/angular/controllers/segments.js"></script>
</head>
<body ng-controller="MainController">
- <div id="wrapper">
+ <div id="wrapper" scrollable-when-small>
<div id="header">
@@ -121,8 +121,10 @@ limitations under the License.
<div class="exception">{{exception.msg}}</div>
</div>
- <div class="other-ui-link">
- <a href="/solr/">Original UI</a><a target="_blank" href="http://wiki.apache.org/solr/AngularUI"> <span class="help"></span></a>
+ <div class="new-ui-warning">
+ This is an experimental UI. Report bugs <a class="ul" target="_blank" href="http://issues.apache.org/jira/browse/SOLR">here</a>.
+ For the old UI click <a class="ul" href="/solr/old.html">here</a>
+ <a target="_blank" href="http://wiki.apache.org/solr/AngularUI"> <span class="help"></span></a>
</div>
<div id="content-wrapper">
@@ -183,7 +185,7 @@ limitations under the License.
<li class="documents" ng-class="{active:page=='documents'}"><a href="#/{{currentCollection.name}}/documents"><span>Documents</span></a></li>
<li class="files" ng-class="{active:page=='files'}"><a href="#/{{currentCollection.name}}/files"><span>Files</span></a></li>
<li class="query" ng-class="{active:page=='query'}"><a href="#/{{currentCollection.name}}/query"><span>Query</span></a></li>
- <li class="schema-browser" ng-class="{active:page=='schema-browser'}"><a href="#/{{currentCollection.name}}/schema-browser"><span>Schema Browser</span></a></li>
+ <li class="schema" ng-class="{active:page=='schema'}"><a href="#/{{currentCollection.name}}/schema"><span>Schema</span></a></li>
</ul>
</div>
<div id="core-selector">
@@ -210,7 +212,7 @@ limitations under the License.
<li class="plugins" ng-class="{active:page=='plugins'}"><a href="#/{{currentCore.name}}/plugins"><span>Plugins / Stats</span></a></li>
<li ng-hide="isCloudEnabled" class="query" ng-class="{active:page=='query'}"><a href="#/{{currentCore.name}}/query"><span>Query</span></a></li>
<li class="replication" ng-class="{active:page=='replication'}"><a href="#/{{currentCore.name}}/replication"><span>Replication</span></a></li>
- <li ng-hide="isCloudEnabled" class="schema-browser" ng-class="{active:page=='schema-browser'}"><a href="#/{{currentCore.name}}/schema-browser"><span>Schema Browser</span></a></li>
+ <li ng-hide="isCloudEnabled" class="schema" ng-class="{active:page=='schema'}"><a href="#/{{currentCore.name}}/schema"><span>Schema</span></a></li>
<li class="segments" ng-class="{active:page=='segments'}"><a href="#/{{currentCore.name}}/segments"><span>Segments info</span></a></li>
</ul>
</div>
Modified: lucene/dev/branches/lucene6835/solr/webapp/web/js/angular/app.js
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6835/solr/webapp/web/js/angular/app.js?rev=1721134&r1=1721133&r2=1721134&view=diff
==============================================================================
--- lucene/dev/branches/lucene6835/solr/webapp/web/js/angular/app.js (original)
+++ lucene/dev/branches/lucene6835/solr/webapp/web/js/angular/app.js Mon Dec 21 11:39:57 2015
@@ -121,9 +121,9 @@ solrAdminApp.config([
templateUrl: 'partials/dataimport.html',
controller: 'DataImportController'
}).
- when('/:core/schema-browser', {
- templateUrl: 'partials/schema-browser.html',
- controller: 'SchemaBrowserController'
+ when('/:core/schema', {
+ templateUrl: 'partials/schema.html',
+ controller: 'SchemaController'
}).
when('/:core/segments', {
templateUrl: 'partials/segments.html',
@@ -136,7 +136,8 @@ solrAdminApp.config([
.constant('Constants', {
IS_ROOT_PAGE: 1,
IS_CORE_PAGE: 2,
- IS_COLLECTION_PAGE: 3
+ IS_COLLECTION_PAGE: 3,
+ ROOT_URL: "/"
})
.filter('highlight', function($sce) {
return function(input, lang) {
@@ -155,6 +156,45 @@ solrAdminApp.config([
}
};
})
+.directive('escapePressed', function () {
+ return function (scope, element, attrs) {
+ element.bind("keydown keypress", function (event) {
+ if(event.which === 27) {
+ scope.$apply(function (){
+ scope.$eval(attrs.escapePressed);
+ });
+ event.preventDefault();
+ }
+ });
+ };
+})
+.directive('focusWhen', function($timeout) {
+ return {
+ link: function(scope, element, attrs) {
+ scope.$watch(attrs.focusWhen, function(value) {
+ if(value === true) {
+ $timeout(function() {
+ element[0].focus();
+ }, 100);
+ }
+ });
+ }
+ };
+})
+.directive('scrollableWhenSmall', function($window) {
+ return {
+ link: function(scope, element, attrs) {
+ var w = angular.element($window);
+
+ var checkFixedMenu = function() {
+ var shouldScroll = w.height() < (element.height() + $('#header').height() + 40);
+ element.toggleClass( 'scroll', shouldScroll);
+ };
+ w.bind('resize', checkFixedMenu);
+ w.bind('load', checkFixedMenu);
+ }
+ }
+})
.filter('readableSeconds', function() {
return function(input) {
seconds = parseInt(input||0, 10);
@@ -679,8 +719,6 @@ var solr_admin = function( app_config )
// load cores (indexInfo = false
success : function( response )
{
- check_fixed_menu();
- $( window ).resize( check_fixed_menu );
var system_url = config.solr_path + '/admin/info/system?wt=json';
$.ajax
@@ -761,9 +799,4 @@ var solr_admin = function( app_config )
'</code></pre></div>'
);
};
-
- check_fixed_menu = function check_fixed_menu()
- {
- $( '#wrapper' ).toggleClass( 'scroll', $( window ).height() < $( '#menu-wrapper' ).height() + $( '#header' ).height() + 40 );
- }
*/