You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by er...@apache.org on 2013/08/26 02:06:05 UTC
svn commit: r1517398 - in /lucene/dev/trunk/solr: ./
contrib/clustering/src/test-files/clustering/solr/
contrib/dataimporthandler/src/test-files/dih/solr/
contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/
core/src/java/org/apache/s...
Author: erick
Date: Mon Aug 26 00:06:04 2013
New Revision: 1517398
URL: http://svn.apache.org/r1517398
Log:
SOLR-4817 Solr should not fall back to the back compat built in solr.xml in SolrCloud mode.
Added:
lucene/dev/trunk/solr/contrib/clustering/src/test-files/clustering/solr/solr.xml (with props)
lucene/dev/trunk/solr/contrib/dataimporthandler/src/test-files/dih/solr/solr.xml (with props)
Modified:
lucene/dev/trunk/solr/CHANGES.txt
lucene/dev/trunk/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestContentStreamDataSource.java
lucene/dev/trunk/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorEndToEnd.java
lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/ConfigSolr.java
lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/ConfigSolrXmlOld.java
lucene/dev/trunk/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
lucene/dev/trunk/solr/core/src/test/org/apache/solr/TestSolrCoreProperties.java
lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/ClusterStateUpdateTest.java
lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/SolrXmlInZkTest.java
lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/ZkControllerTest.java
lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestSolrXmlPersistence.java
lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestSolrXmlPersistor.java
lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java
lucene/dev/trunk/solr/core/src/test/org/apache/solr/request/TestRemoteStreaming.java
lucene/dev/trunk/solr/core/src/test/org/apache/solr/schema/TestBinaryField.java
lucene/dev/trunk/solr/core/src/test/org/apache/solr/servlet/CacheHeaderTest.java
lucene/dev/trunk/solr/solrj/src/test-files/solrj/solr/solr.xml
lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrServer.java
lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/SolrJettyTestBase.java
lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1517398&r1=1517397&r2=1517398&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Mon Aug 26 00:06:04 2013
@@ -148,6 +148,9 @@ Bug Fixes
* SOLR-5174: Admin UI - Query View doesn't highlight (json) Result if it
contains HTML Tags (steffkes)
+
+* SOLR-4817 Solr should not fall back to the back compat built in solr.xml in SolrCloud
+ mode (Erick Erickson)
Optimizations
----------------------
Added: lucene/dev/trunk/solr/contrib/clustering/src/test-files/clustering/solr/solr.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/clustering/src/test-files/clustering/solr/solr.xml?rev=1517398&view=auto
==============================================================================
--- lucene/dev/trunk/solr/contrib/clustering/src/test-files/clustering/solr/solr.xml (added)
+++ lucene/dev/trunk/solr/contrib/clustering/src/test-files/clustering/solr/solr.xml Mon Aug 26 00:06:04 2013
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ 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
+
+ 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.
+-->
+
+<!--
+ solr.xml mimicking the old default solr.xml
+-->
+
+<solr persistent="false">
+ <cores adminPath="/admin/cores" defaultCoreName="collection1"
+ host="${host:}" hostPort="${hostPort:}" hostContext="${hostContext:}"
+ zkClientTimeout="${zkClientTimeout:15000}">
+ <core name="collection1" shard="${shard:}" collection="${collection:collection1}" instanceDir="collection1"/>
+ </cores>
+</solr>
Added: lucene/dev/trunk/solr/contrib/dataimporthandler/src/test-files/dih/solr/solr.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/dataimporthandler/src/test-files/dih/solr/solr.xml?rev=1517398&view=auto
==============================================================================
--- lucene/dev/trunk/solr/contrib/dataimporthandler/src/test-files/dih/solr/solr.xml (added)
+++ lucene/dev/trunk/solr/contrib/dataimporthandler/src/test-files/dih/solr/solr.xml Mon Aug 26 00:06:04 2013
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ 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
+
+ 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.
+-->
+
+<!--
+ solr.xml mimicking the old default solr.xml
+-->
+
+<solr persistent="false">
+ <cores adminPath="/admin/cores" defaultCoreName="collection1"
+ host="${host:}" hostPort="${hostPort:}" hostContext="${hostContext:}"
+ zkClientTimeout="${zkClientTimeout:15000}">
+ <core name="collection1" shard="${shard:}" collection="${collection:collection1}" instanceDir="collection1"/>
+ </cores>
+</solr>
\ No newline at end of file
Modified: lucene/dev/trunk/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestContentStreamDataSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestContentStreamDataSource.java?rev=1517398&r1=1517397&r2=1517398&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestContentStreamDataSource.java (original)
+++ lucene/dev/trunk/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestContentStreamDataSource.java Mon Aug 26 00:06:04 2013
@@ -41,6 +41,7 @@ import java.util.List;
*/
public class TestContentStreamDataSource extends AbstractDataImportHandlerTestCase {
private static final String CONF_DIR = "dih/solr/collection1/conf/";
+ private static final String ROOT_DIR = "dih/solr/";
SolrInstance instance = null;
JettySolrRunner jetty;
@@ -144,6 +145,11 @@ public class TestContentStreamDataSource
return CONF_DIR + "contentstream-solrconfig.xml";
}
+ public String getSolrXmlFile() {
+ return ROOT_DIR + "solr.xml";
+ }
+
+
public void setUp() throws Exception {
File home = new File(TEMP_DIR,
@@ -158,6 +164,7 @@ public class TestContentStreamDataSource
dataDir.mkdirs();
confDir.mkdirs();
+ FileUtils.copyFile(getFile(getSolrXmlFile()), new File(homeDir, "solr.xml"));
File f = new File(confDir, "solrconfig.xml");
FileUtils.copyFile(getFile(getSolrConfigFile()), f);
f = new File(confDir, "schema.xml");
Modified: lucene/dev/trunk/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorEndToEnd.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorEndToEnd.java?rev=1517398&r1=1517397&r2=1517398&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorEndToEnd.java (original)
+++ lucene/dev/trunk/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorEndToEnd.java Mon Aug 26 00:06:04 2013
@@ -49,7 +49,8 @@ public class TestSolrEntityProcessorEndT
private static final String SOLR_CONFIG = "dataimport-solrconfig.xml";
private static final String SOLR_SCHEMA = "dataimport-schema.xml";
private static final String SOURCE_CONF_DIR = "dih" + File.separator + "solr" + File.separator + "collection1" + File.separator + "conf" + File.separator;
-
+ private static final String ROOT_DIR = "dih" + File.separator + "solr" + File.separator;
+
private static final String DEAD_SOLR_SERVER = "http://[ff01::114]:33332/solr";
private static final List<Map<String,Object>> DB_DOCS = new ArrayList<Map<String,Object>>();
@@ -293,7 +294,11 @@ public class TestSolrEntityProcessorEndT
public String getSolrConfigFile() {
return SOURCE_CONF_DIR + "dataimport-solrconfig.xml";
}
-
+
+ public String getSolrXmlFile() {
+ return ROOT_DIR + "solr.xml";
+ }
+
public void setUp() throws Exception {
File home = new File(TEMP_DIR, getClass().getName() + "-"
@@ -306,7 +311,8 @@ public class TestSolrEntityProcessorEndT
homeDir.mkdirs();
dataDir.mkdirs();
confDir.mkdirs();
-
+
+ FileUtils.copyFile(getFile(getSolrXmlFile()), new File(homeDir, "solr.xml"));
File f = new File(confDir, "solrconfig.xml");
FileUtils.copyFile(getFile(getSolrConfigFile()), f);
f = new File(confDir, "schema.xml");
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/ConfigSolr.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/ConfigSolr.java?rev=1517398&r1=1517397&r2=1517398&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/ConfigSolr.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/ConfigSolr.java Mon Aug 26 00:06:04 2013
@@ -55,8 +55,8 @@ public abstract class ConfigSolr {
try {
if (!configFile.exists()) {
- log.info("{} does not exist, using default configuration", configFile.getAbsolutePath());
- inputStream = new ByteArrayInputStream(ConfigSolrXmlOld.DEF_SOLR_XML.getBytes(Charsets.UTF_8));
+ throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
+ "solr.xml does not exist in " + configFile.getAbsolutePath() + " cannot start Solr");
}
else {
inputStream = new FileInputStream(configFile);
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/ConfigSolrXmlOld.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/ConfigSolrXmlOld.java?rev=1517398&r1=1517397&r2=1517398&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/ConfigSolrXmlOld.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/ConfigSolrXmlOld.java Mon Aug 26 00:06:04 2013
@@ -50,6 +50,8 @@ public class ConfigSolrXmlOld extends Co
private final CoresLocator persistor;
+ public static final String DEFAULT_DEFAULT_CORE_NAME = "collection1";
+
@Override
protected String getShardHandlerFactoryConfigPath() {
return "solr/cores/shardHandlerFactory";
@@ -273,19 +275,4 @@ public class ConfigSolrXmlOld extends Co
}
return new Properties();
}
-
- public static final String DEFAULT_DEFAULT_CORE_NAME = "collection1";
-
- public static final String DEF_SOLR_XML = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n"
- + "<solr persistent=\"false\">\n"
- + " <cores adminPath=\"/admin/cores\" defaultCoreName=\""
- + DEFAULT_DEFAULT_CORE_NAME
- + "\""
- + " host=\"${host:}\" hostPort=\"${hostPort:}\" hostContext=\"${hostContext:}\" zkClientTimeout=\"${zkClientTimeout:15000}\""
- + ">\n"
- + " <core name=\""
- + DEFAULT_DEFAULT_CORE_NAME
- + "\" shard=\"${shard:}\" collection=\"${collection:collection1}\" instanceDir=\"collection1\" />\n"
- + " </cores>\n" + "</solr>";
-
}
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java?rev=1517398&r1=1517397&r2=1517398&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java Mon Aug 26 00:06:04 2013
@@ -202,7 +202,7 @@ public class SolrDispatchFilter implemen
}
if (this.cores == null) {
- ((HttpServletResponse)response).sendError( 503, "Server is shutting down" );
+ ((HttpServletResponse)response).sendError( 503, "Server is shutting down or failed to initialize" );
return;
}
CoreContainer cores = this.cores;
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/TestSolrCoreProperties.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/TestSolrCoreProperties.java?rev=1517398&r1=1517397&r2=1517398&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/TestSolrCoreProperties.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/TestSolrCoreProperties.java Mon Aug 26 00:06:04 2013
@@ -56,6 +56,7 @@ public class TestSolrCoreProperties exte
dataDir.mkdirs();
confDir.mkdirs();
+ FileUtils.copyFile(new File(SolrTestCaseJ4.TEST_HOME(), "solr.xml"), new File(homeDir, "solr.xml"));
String src_dir = TEST_HOME() + "/collection1/conf";
FileUtils.copyFile(new File(src_dir, "schema-tiny.xml"),
new File(confDir, "schema.xml"));
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/ClusterStateUpdateTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/ClusterStateUpdateTest.java?rev=1517398&r1=1517397&r2=1517398&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/ClusterStateUpdateTest.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/ClusterStateUpdateTest.java Mon Aug 26 00:06:04 2013
@@ -17,6 +17,7 @@ package org.apache.solr.cloud;
* limitations under the License.
*/
+import org.apache.commons.io.FileUtils;
import org.apache.lucene.util.LuceneTestCase.Slow;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.common.cloud.ClusterState;
@@ -36,6 +37,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
+import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
@@ -64,19 +66,31 @@ public class ClusterStateUpdateTest exte
private File dataDir3;
private File dataDir4;
-
+
+
+ private static final File solrHomeDirectory = new File(TEMP_DIR, "ZkControllerTest");
+
@BeforeClass
- public static void beforeClass() {
+ public static void beforeClass() throws IOException {
System.setProperty("solrcloud.skip.autorecovery", "true");
System.setProperty("genericCoreNodeNames", "false");
+ if (solrHomeDirectory.exists()) {
+ FileUtils.deleteDirectory(solrHomeDirectory);
+ }
+ copyMinFullSetup(solrHomeDirectory);
+
}
-
+
@AfterClass
- public static void afterClass() throws InterruptedException {
+ public static void afterClass() throws InterruptedException, IOException {
System.clearProperty("solrcloud.skip.autorecovery");
System.clearProperty("genericCoreNodeNames");
+ if (solrHomeDirectory.exists()) {
+ FileUtils.deleteDirectory(solrHomeDirectory);
+ }
}
+
@Override
public void setUp() throws Exception {
super.setUp();
@@ -111,19 +125,19 @@ public class ClusterStateUpdateTest exte
System.setProperty("solr.solr.home", TEST_HOME());
System.setProperty("hostPort", "1661");
System.setProperty("solr.data.dir", ClusterStateUpdateTest.this.dataDir1.getAbsolutePath());
- container1 = new CoreContainer();
+ container1 = new CoreContainer(solrHomeDirectory.getAbsolutePath());
container1.load();
System.clearProperty("hostPort");
System.setProperty("hostPort", "1662");
System.setProperty("solr.data.dir", ClusterStateUpdateTest.this.dataDir2.getAbsolutePath());
- container2 = new CoreContainer();
+ container2 = new CoreContainer(solrHomeDirectory.getAbsolutePath());
container2.load();
System.clearProperty("hostPort");
System.setProperty("hostPort", "1663");
System.setProperty("solr.data.dir", ClusterStateUpdateTest.this.dataDir3.getAbsolutePath());
- container3 = new CoreContainer();
+ container3 = new CoreContainer(solrHomeDirectory.getAbsolutePath());
container3.load();
System.clearProperty("hostPort");
System.clearProperty("solr.solr.home");
@@ -222,7 +236,7 @@ public class ClusterStateUpdateTest exte
System.setProperty("hostPort", "1662");
System.setProperty("solr.data.dir", ClusterStateUpdateTest.this.dataDir2.getAbsolutePath());
- container2 = new CoreContainer();
+ container2 = new CoreContainer(solrHomeDirectory.getAbsolutePath());
container2.load();
System.clearProperty("hostPort");
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/SolrXmlInZkTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/SolrXmlInZkTest.java?rev=1517398&r1=1517397&r2=1517398&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/SolrXmlInZkTest.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/SolrXmlInZkTest.java Mon Aug 26 00:06:04 2013
@@ -33,6 +33,7 @@ import org.junit.rules.RuleChain;
import org.junit.rules.TestRule;
import java.io.File;
+import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.nio.charset.Charset;
@@ -145,23 +146,23 @@ public class SolrXmlInZkTest extends Sol
setUpZkAndDiskXml(false, true);
fail("Should have gotten an exception here!");
} catch (InvocationTargetException ite) {
- SolrException se = (SolrException) ite.getTargetException();
assertEquals("Should have an exception here, file not in ZK.",
- "Could not load solr.xml from zookeeper", se.getMessage());
+ "Could not load solr.xml from zookeeper", ite.getTargetException().getMessage());
} finally {
closeZK();
}
}
- // TODO: Solr 5.0. when we remove the default solr.xml from configSolrXmlOld this should start failing.
@Test
public void testNotInZkOrOnDisk() throws Exception {
try {
System.clearProperty("solr.solrxml.location");
System.setProperty("hostPort", "8787");
setUpZkAndDiskXml(false, false); // solr.xml not on disk either
- assertEquals("Should have gotten the default port from the hard-coded default solr.xml file via sys prop.",
- cfg.getZkHostPort(), "8787");
+ fail("Should have thrown an exception here");
+ } catch (InvocationTargetException ite) {
+ assertTrue("Should be failing to create default solr.xml in code",
+ ite.getTargetException().getCause().getMessage().indexOf("solr.xml does not exist") != -1);
} finally {
closeZK();
}
@@ -185,9 +186,8 @@ public class SolrXmlInZkTest extends Sol
setUpZkAndDiskXml(false, true);
fail("Should have thrown exception in SolrXmlInZkTest.testBadSysProp");
} catch (InvocationTargetException ite) {
- SolrException se = (SolrException) ite.getTargetException();
assertEquals("Should have an exception in SolrXmlInZkTest.testBadSysProp, sysprop set to bogus value.",
- se.getMessage(), "Bad solr.solrxml.location set: solrHomeDir - should be 'solrhome' or 'zookeeper'");
+ ite.getTargetException().getMessage(), "Bad solr.solrxml.location set: solrHomeDir - should be 'solrhome' or 'zookeeper'");
} finally {
closeZK();
}
@@ -208,9 +208,7 @@ public class SolrXmlInZkTest extends Sol
fail("Should have thrown an exception");
} catch (InvocationTargetException ite) {
assertTrue("Should be catching a SolrException", ite.getTargetException() instanceof SolrException);
- String cause = ((SolrException) ite.getTargetException()).getMessage();
-
- assertEquals("Caught Solr exception", cause,
+ assertEquals("Caught Solr exception", ite.getTargetException().getMessage(),
"Could not load solr.xml from zookeeper: zkHost system property not set");
}
}
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/ZkControllerTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/ZkControllerTest.java?rev=1517398&r1=1517397&r2=1517398&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/ZkControllerTest.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/ZkControllerTest.java Mon Aug 26 00:06:04 2013
@@ -17,6 +17,7 @@ package org.apache.solr.cloud;
* the License.
*/
+import org.apache.commons.io.FileUtils;
import org.apache.lucene.util.LuceneTestCase.Slow;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.common.cloud.SolrZkClient;
@@ -26,6 +27,7 @@ import org.apache.solr.core.CoreContaine
import org.apache.solr.core.CoreDescriptor;
import org.apache.solr.util.ExternalPaths;
import org.apache.zookeeper.CreateMode;
+import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -42,12 +44,26 @@ public class ZkControllerTest extends So
static final int TIMEOUT = 10000;
private static final boolean DEBUG = false;
-
+
+
+ private static final File solrHomeDirectory = new File(TEMP_DIR, "ZkControllerTest");
+
@BeforeClass
public static void beforeClass() throws Exception {
+ if (solrHomeDirectory.exists()) {
+ FileUtils.deleteDirectory(solrHomeDirectory);
+ }
+ copyMinFullSetup(solrHomeDirectory);
initCore();
}
+ @AfterClass
+ public static void afterClass() throws Exception {
+ if (solrHomeDirectory.exists()) {
+ FileUtils.deleteDirectory(solrHomeDirectory);
+ }
+ }
+
public void testNodeNameUrlConversion() throws Exception {
// nodeName from parts
@@ -240,7 +256,7 @@ public class ZkControllerTest extends So
}
private CoreContainer getCoreContainer() {
- CoreContainer cc = new CoreContainer(TEMP_DIR.getAbsolutePath());
+ CoreContainer cc = new CoreContainer(solrHomeDirectory.getAbsolutePath());
cc.load();
return cc;
}
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestSolrXmlPersistence.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestSolrXmlPersistence.java?rev=1517398&r1=1517397&r2=1517398&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestSolrXmlPersistence.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestSolrXmlPersistence.java Mon Aug 26 00:06:04 2013
@@ -382,7 +382,10 @@ public class TestSolrXmlPersistence exte
@Test
public void testPersist() throws Exception {
- final CoreContainer cores = init(ConfigSolrXmlOld.DEF_SOLR_XML, "collection1");
+ String defXml = FileUtils.readFileToString(
+ new File(SolrTestCaseJ4.TEST_HOME(), "solr.xml"),
+ Charsets.UTF_8.toString());
+ final CoreContainer cores = init(defXml, "collection1");
SolrXMLCoresLocator.NonPersistingLocator locator
= (SolrXMLCoresLocator.NonPersistingLocator) cores.getCoresLocator();
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestSolrXmlPersistor.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestSolrXmlPersistor.java?rev=1517398&r1=1517397&r2=1517398&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestSolrXmlPersistor.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestSolrXmlPersistor.java Mon Aug 26 00:06:04 2013
@@ -18,15 +18,18 @@ package org.apache.solr.core;
*/
import com.google.common.collect.ImmutableList;
+import org.apache.commons.io.FileUtils;
+import org.apache.solr.SolrTestCaseJ4;
import org.junit.Test;
import java.io.File;
+import java.io.IOException;
import java.util.List;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
-public class TestSolrXmlPersistor {
+public class TestSolrXmlPersistor extends SolrTestCaseJ4 {
private static final List<CoreDescriptor> EMPTY_CD_LIST = ImmutableList.<CoreDescriptor>builder().build();
@@ -58,21 +61,33 @@ public class TestSolrXmlPersistor {
}
@Test
- public void simpleCoreDescriptorIsPersisted() {
+ public void simpleCoreDescriptorIsPersisted() throws IOException {
final String solrxml = "<solr><cores></cores></solr>";
- SolrResourceLoader loader = new SolrResourceLoader("solr/example/solr");
- CoreContainer cc = new CoreContainer(loader);
+ final File solrHomeDirectory = new File(TEMP_DIR, "ZkControllerTest");
+ try {
+ if (solrHomeDirectory.exists()) {
+ FileUtils.deleteDirectory(solrHomeDirectory);
+ }
+ copyMinFullSetup(solrHomeDirectory);
- final CoreDescriptor cd = new CoreDescriptor(cc, "testcore", "instance/dir/");
- List<CoreDescriptor> cds = ImmutableList.of(cd);
+ CoreContainer cc = new CoreContainer(solrHomeDirectory.getAbsolutePath());
- SolrXMLCoresLocator persistor = new SolrXMLCoresLocator(solrxml, null);
- assertEquals(persistor.buildSolrXML(cds),
+ final CoreDescriptor cd = new CoreDescriptor(cc, "testcore", "instance/dir/");
+ List<CoreDescriptor> cds = ImmutableList.of(cd);
+
+ SolrXMLCoresLocator persistor = new SolrXMLCoresLocator(solrxml, null);
+ assertEquals(persistor.buildSolrXML(cds),
"<solr><cores>" + SolrXMLCoresLocator.NEWLINE
- + " <core name=\"testcore\" instanceDir=\"instance/dir/\"/>" + SolrXMLCoresLocator.NEWLINE
- + "</cores></solr>");
+ + " <core name=\"testcore\" instanceDir=\"instance/dir/\"/>" + SolrXMLCoresLocator.NEWLINE
+ + "</cores></solr>");
+ } finally {
+ if (solrHomeDirectory.exists()) {
+ FileUtils.deleteDirectory(solrHomeDirectory);
+ }
+
+ }
}
@Test
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java?rev=1517398&r1=1517397&r2=1517398&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java Mon Aug 26 00:06:04 2013
@@ -69,6 +69,7 @@ import org.apache.solr.core.SolrCore;
import org.apache.solr.core.StandardDirectoryFactory;
import org.apache.solr.servlet.SolrDispatchFilter;
import org.apache.solr.util.AbstractSolrTestCase;
+import org.apache.solr.util.FileUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -139,7 +140,7 @@ public class TestReplicationHandler exte
private static JettySolrRunner createJetty(SolrInstance instance) throws Exception {
System.setProperty("solr.data.dir", instance.getDataDir());
-
+ FileUtils.copyFile(new File(SolrTestCaseJ4.TEST_HOME(), "solr.xml"), new File(instance.getHomeDir(), "solr.xml"));
JettySolrRunner jetty = new JettySolrRunner(instance.getHomeDir(), "/solr", 0);
jetty.start();
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/request/TestRemoteStreaming.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/request/TestRemoteStreaming.java?rev=1517398&r1=1517397&r2=1517398&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/request/TestRemoteStreaming.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/request/TestRemoteStreaming.java Mon Aug 26 00:06:04 2013
@@ -27,10 +27,12 @@ import org.apache.solr.client.solrj.requ
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.SolrInputDocument;
+import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
@@ -44,10 +46,18 @@ import java.net.URLEncoder;
*/
public class TestRemoteStreaming extends SolrJettyTestBase {
+ private static final File solrHomeDirectory = new File(TEMP_DIR, "TestRemoteStreaming");
+
@BeforeClass
public static void beforeTest() throws Exception {
//this one has handleSelect=true which a test here needs
- createJetty("solr/", null, null);
+ setupJettyTestHome(solrHomeDirectory, "collection1");
+ createJetty(solrHomeDirectory.getAbsolutePath(), null, null);
+ }
+
+ @AfterClass
+ public static void afterTest() throws Exception {
+ cleanUpJettyHome(solrHomeDirectory);
}
@Before
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/schema/TestBinaryField.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/schema/TestBinaryField.java?rev=1517398&r1=1517397&r2=1517398&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/schema/TestBinaryField.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/schema/TestBinaryField.java Mon Aug 26 00:06:04 2013
@@ -17,20 +17,17 @@
package org.apache.solr.schema;
import java.io.File;
-import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.util.List;
-import org.apache.commons.io.IOUtils;
import org.apache.commons.io.FileUtils;
+import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.beans.Field;
-import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.*;
-import org.apache.solr.core.SolrResourceLoader;
import org.apache.solr.SolrJettyTestBase;
import org.junit.BeforeClass;
@@ -49,6 +46,8 @@ public class TestBinaryField extends Sol
dataDir.mkdirs();
confDir.mkdirs();
+ FileUtils.copyFile(new File(SolrTestCaseJ4.TEST_HOME(), "solr.xml"), new File(homeDir, "solr.xml"));
+
String src_dir = TEST_HOME() + "/collection1/conf";
FileUtils.copyFile(new File(src_dir, "schema-binaryfield.xml"),
new File(confDir, "schema.xml"));
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/servlet/CacheHeaderTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/servlet/CacheHeaderTest.java?rev=1517398&r1=1517397&r2=1517398&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/servlet/CacheHeaderTest.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/servlet/CacheHeaderTest.java Mon Aug 26 00:06:04 2013
@@ -23,11 +23,13 @@ import java.io.Writer;
import java.util.Arrays;
import java.util.Date;
+import com.google.common.base.Charsets;
import org.apache.http.Header;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.impl.cookie.DateUtils;
import org.apache.solr.common.params.CommonParams;
+import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -37,13 +39,18 @@ import org.apache.lucene.util._TestUtil;
* A test case for the several HTTP cache headers emitted by Solr
*/
public class CacheHeaderTest extends CacheHeaderTestBase {
+ private static final File solrHomeDirectory = new File(TEMP_DIR, "CacheHeaderTest");
@BeforeClass
public static void beforeTest() throws Exception {
- createJetty("solr/", null, null);
+ setupJettyTestHome(solrHomeDirectory, "collection1");
+ createJetty(solrHomeDirectory.getAbsolutePath(), null, null);
}
- protected static final String CHARSET = "UTF-8";
+ @AfterClass
+ public static void afterTest() throws Exception {
+ cleanUpJettyHome(solrHomeDirectory);
+ }
protected static final String CONTENTS = "id\n100\n101\n102";
@@ -241,7 +248,7 @@ public class CacheHeaderTest extends Cac
}
protected File makeFile(String contents) {
- return makeFile(contents, CHARSET);
+ return makeFile(contents, Charsets.UTF_8.toString());
}
protected File makeFile(String contents, String charset) {
Modified: lucene/dev/trunk/solr/solrj/src/test-files/solrj/solr/solr.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/test-files/solrj/solr/solr.xml?rev=1517398&r1=1517397&r2=1517398&view=diff
==============================================================================
--- lucene/dev/trunk/solr/solrj/src/test-files/solrj/solr/solr.xml (original)
+++ lucene/dev/trunk/solr/solrj/src/test-files/solrj/solr/solr.xml Mon Aug 26 00:06:04 2013
@@ -29,6 +29,7 @@
If 'null' (or absent), cores will not be manageable via request handler
-->
<cores adminPath="/admin/cores" defaultCoreName="collection1" host="127.0.0.1" hostPort="${hostPort:8983}" hostContext="${hostContext:solr}" zkClientTimeout="8000" genericCoreNodeNames="${genericCoreNodeNames:true}">
- <core name="collection1" instanceDir="collection1" shard="${shard:}" collection="${collection:collection1}" config="${solrconfig:solrconfig.xml}" schema="${schema:schema.xml}"/>
+ <core name="collection1" instanceDir="collection1" shard="${shard:}" collection="${collection:collection1}" />
+ <!--config="${solrconfig:solrconfig.xml}" schema="${schema:schema.xml}"/-->
</cores>
</solr>
Modified: lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrServer.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrServer.java?rev=1517398&r1=1517397&r2=1517398&view=diff
==============================================================================
--- lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrServer.java (original)
+++ lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrServer.java Mon Aug 26 00:06:04 2013
@@ -273,6 +273,11 @@ public class TestLBHttpSolrServer extend
return "solrj/solr/collection1/conf/solrconfig-slave1.xml";
}
+ public String getSolrXmlFile() {
+ return "solrj/solr/solr.xml";
+ }
+
+
public void setUp() throws Exception {
File home = new File(LuceneTestCase.TEMP_DIR,
getClass().getName() + "-" + System.currentTimeMillis());
@@ -286,6 +291,8 @@ public class TestLBHttpSolrServer extend
dataDir.mkdirs();
confDir.mkdirs();
+ FileUtils.copyFile(SolrTestCaseJ4.getFile(getSolrXmlFile()), new File(homeDir, "solr.xml"));
+
File f = new File(confDir, "solrconfig.xml");
FileUtils.copyFile(SolrTestCaseJ4.getFile(getSolrConfigFile()), f);
f = new File(confDir, "schema.xml");
Modified: lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/SolrJettyTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/SolrJettyTestBase.java?rev=1517398&r1=1517397&r2=1517398&view=diff
==============================================================================
--- lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/SolrJettyTestBase.java (original)
+++ lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/SolrJettyTestBase.java Mon Aug 26 00:06:04 2013
@@ -22,6 +22,7 @@ import java.util.HashMap;
import java.util.Map;
import java.util.SortedMap;
+import org.apache.commons.io.FileUtils;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer;
import org.apache.solr.client.solrj.embedded.JettySolrRunner;
@@ -188,4 +189,21 @@ abstract public class SolrJettyTestBase
return new EmbeddedSolrServer( h.getCoreContainer(), "" );
}
}
+
+ // Sets up the necessary config files for Jetty. At least some tests require that the solrconfig from the test
+ // file directory are used, but some also require that the solr.xml file be explicitly there as of SOLR-4817
+ public static void setupJettyTestHome(File solrHome, String collection) throws Exception {
+ if (solrHome.exists()) {
+ FileUtils.deleteDirectory(solrHome);
+ }
+ copySolrHomeToTemp(solrHome, collection);
+ }
+
+ public static void cleanUpJettyHome(File solrHome) throws Exception {
+ if (solrHome.exists()) {
+ FileUtils.deleteDirectory(solrHome);
+ }
+ }
+
+
}
Modified: lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java?rev=1517398&r1=1517397&r2=1517398&view=diff
==============================================================================
--- lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java (original)
+++ lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java Mon Aug 26 00:06:04 2013
@@ -1599,16 +1599,53 @@ public abstract class SolrTestCaseJ4 ext
}
}
// Creates a mininmal conf dir.
- public void copyMinConf(File dstRoot) throws IOException {
+ public static void copyMinConf(File dstRoot) throws IOException {
File subHome = new File(dstRoot, "conf");
- assertTrue("Failed to make subdirectory ", dstRoot.mkdirs());
+ if (! dstRoot.exists()) {
+ assertTrue("Failed to make subdirectory ", dstRoot.mkdirs());
+ }
+
String top = SolrTestCaseJ4.TEST_HOME() + "/collection1/conf";
FileUtils.copyFile(new File(top, "schema-tiny.xml"), new File(subHome, "schema.xml"));
FileUtils.copyFile(new File(top, "solrconfig-minimal.xml"), new File(subHome, "solrconfig.xml"));
FileUtils.copyFile(new File(top, "solrconfig.snippet.randomindexconfig.xml"), new File(subHome, "solrconfig.snippet.randomindexconfig.xml"));
}
+ // Creates minimal full setup, including the old solr.xml file that used to be hard coded in COnfigSolrXmlOld
+ public static void copyMinFullSetup(File dstRoot) throws IOException {
+ if (! dstRoot.exists()) {
+ assertTrue("Failed to make subdirectory ", dstRoot.mkdirs());
+ }
+ File xmlF = new File(SolrTestCaseJ4.TEST_HOME(), "solr.xml");
+ FileUtils.copyFile(xmlF, new File(dstRoot, "solr.xml"));
+ copyMinConf(dstRoot);
+ }
+
+ // Creates a consistent configuration, _including_ solr.xml at dstRoot. Creates collection1/conf and copies
+ // the stock files in there. Seems to be indicated for some tests when we remove the default, hard-coded
+ // solr.xml from being automatically synthesized from SolrConfigXmlOld.DEFAULT_SOLR_XML.
+ public static void copySolrHomeToTemp(File dstRoot, String collection) throws IOException {
+ if (!dstRoot.exists()) {
+ assertTrue("Failed to make subdirectory ", dstRoot.mkdirs());
+ }
+
+ FileUtils.copyFile(new File(SolrTestCaseJ4.TEST_HOME(), "solr.xml"), new File(dstRoot, "solr.xml"));
+
+ File subHome = new File(dstRoot, collection + File.separator + "conf");
+ String top = SolrTestCaseJ4.TEST_HOME() + "/collection1/conf";
+ FileUtils.copyFile(new File(top, "currency.xml"), new File(subHome, "currency.xml"));
+ FileUtils.copyFile(new File(top, "mapping-ISOLatin1Accent.txt"), new File(subHome, "mapping-ISOLatin1Accent.txt"));
+ FileUtils.copyFile(new File(top, "old_synonyms.txt"), new File(subHome, "old_synonyms.txt"));
+ FileUtils.copyFile(new File(top, "open-exchange-rates.json"), new File(subHome, "open-exchange-rates.json"));
+ FileUtils.copyFile(new File(top, "protwords.txt"), new File(subHome, "protwords.txt"));
+ FileUtils.copyFile(new File(top, "schema.xml"), new File(subHome, "schema.xml"));
+ FileUtils.copyFile(new File(top, "solrconfig.snippet.randomindexconfig.xml"), new File(subHome, "solrconfig.snippet.randomindexconfig.xml"));
+ FileUtils.copyFile(new File(top, "solrconfig.xml"), new File(subHome, "solrconfig.xml"));
+ FileUtils.copyFile(new File(top, "stopwords.txt"), new File(subHome, "stopwords.txt"));
+ 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);
}