You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rj...@apache.org on 2014/08/23 19:22:58 UTC
svn commit: r1620055 - in /lucene/dev/branches/branch_4x: ./ lucene/
lucene/test-framework/
lucene/test-framework/src/java/org/apache/lucene/util/ lucene/tools/
lucene/tools/junit4/ solr/ solr/contrib/
solr/contrib/analysis-extras/src/test/org/apache/s...
Author: rjernst
Date: Sat Aug 23 17:22:57 2014
New Revision: 1620055
URL: http://svn.apache.org/r1620055
Log:
LUCENE-5650: Enforce read-only access to any path outside the temporary folder via security manager (merged r1596767, r1600310)
Added:
lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/util/TestRuleTemporaryFilesCleanup.java
- copied unchanged from r1596767, lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/TestRuleTemporaryFilesCleanup.java
Modified:
lucene/dev/branches/branch_4x/ (props changed)
lucene/dev/branches/branch_4x/lucene/ (props changed)
lucene/dev/branches/branch_4x/lucene/CHANGES.txt (contents, props changed)
lucene/dev/branches/branch_4x/lucene/common-build.xml (contents, props changed)
lucene/dev/branches/branch_4x/lucene/test-framework/ (props changed)
lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java
lucene/dev/branches/branch_4x/lucene/tools/ (props changed)
lucene/dev/branches/branch_4x/lucene/tools/junit4/tests.policy
lucene/dev/branches/branch_4x/solr/ (props changed)
lucene/dev/branches/branch_4x/solr/CHANGES.txt
lucene/dev/branches/branch_4x/solr/contrib/ (props changed)
lucene/dev/branches/branch_4x/solr/contrib/analysis-extras/src/test/org/apache/solr/analysis/TestFoldingMultitermExtrasQuery.java
lucene/dev/branches/branch_4x/solr/contrib/analysis-extras/src/test/org/apache/solr/schema/TestICUCollationFieldOptions.java
lucene/dev/branches/branch_4x/solr/contrib/clustering/src/test/org/apache/solr/handler/clustering/AbstractClusteringTestCase.java
lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/build.xml
lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/SimplePropertiesWriter.java
lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/config/PropertyWriter.java
lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractDataImportHandlerTestCase.java
lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestDocBuilder.java
lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestFieldReader.java
lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestNonWritablePersistFile.java
lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestPlainTextEntityProcessor.java
lucene/dev/branches/branch_4x/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineBasicMiniMRTest.java
lucene/dev/branches/branch_4x/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineGoLiveMiniMRTest.java
lucene/dev/branches/branch_4x/solr/contrib/velocity/src/java/org/apache/solr/response/VelocityResponseWriter.java
lucene/dev/branches/branch_4x/solr/contrib/velocity/src/test/org/apache/solr/velocity/VelocityResponseWriterTest.java
lucene/dev/branches/branch_4x/solr/solrj/ (props changed)
lucene/dev/branches/branch_4x/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrServer.java
lucene/dev/branches/branch_4x/solr/solrj/src/test/org/apache/solr/client/solrj/request/SolrPingTest.java
lucene/dev/branches/branch_4x/solr/test-framework/ (props changed)
lucene/dev/branches/branch_4x/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java
Modified: lucene/dev/branches/branch_4x/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/CHANGES.txt?rev=1620055&r1=1620054&r2=1620055&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/branch_4x/lucene/CHANGES.txt Sat Aug 23 17:22:57 2014
@@ -535,6 +535,10 @@ Bug fixes
* LUCENE-5671: Upgrade ICU version to fix an ICU concurrency problem that
could cause exceptions when indexing. (feedly team, Robert Muir)
+* LUCENE-5650: Enforce read-only access to any path outside the temporary
+ folder via security manager, and make test temp dirs absolute.
+ (Ryan Ernst, Dawid Weiss)
+
======================= Lucene 4.8.0 =======================
System Requirements
Modified: lucene/dev/branches/branch_4x/lucene/common-build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/common-build.xml?rev=1620055&r1=1620054&r2=1620055&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/common-build.xml (original)
+++ lucene/dev/branches/branch_4x/lucene/common-build.xml Sat Aug 23 17:22:57 2014
@@ -1012,9 +1012,9 @@
<!-- TODO: create propertyset for test properties, so each project can have its own set -->
<sysproperty key="tests.multiplier" value="@{tests.multiplier}"/>
- <!-- Temporary directory in the cwd. -->
- <sysproperty key="tempDir" value="." />
- <sysproperty key="java.io.tmpdir" value="." />
+ <!-- Temporary directory a subdir of the cwd. -->
+ <sysproperty key="tempDir" value="./temp" />
+ <sysproperty key="java.io.tmpdir" value="./temp" />
<!-- Restrict access to certain Java features and install security manager: -->
<sysproperty key="junit4.tempDir" file="@{workDir}/temp" />
Modified: lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java?rev=1620055&r1=1620054&r2=1620055&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java (original)
+++ lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java Sat Aug 23 17:22:57 2014
@@ -166,7 +166,6 @@ import com.carrotsearch.randomizedtestin
import com.carrotsearch.randomizedtesting.rules.NoInstanceHooksOverridesRule;
import com.carrotsearch.randomizedtesting.rules.StaticFieldsInvariantRule;
import com.carrotsearch.randomizedtesting.rules.SystemPropertiesInvariantRule;
-import com.carrotsearch.randomizedtesting.rules.TestRuleAdapter;
import static com.carrotsearch.randomizedtesting.RandomizedTest.systemPropertyAsBoolean;
import static com.carrotsearch.randomizedtesting.RandomizedTest.systemPropertyAsInt;
@@ -512,6 +511,11 @@ public abstract class LuceneTestCase ext
* Suite failure marker (any error in the test or suite scope).
*/
private static TestRuleMarkFailure suiteFailureMarker;
+
+ /**
+ * Temporary files cleanup rule.
+ */
+ private static TestRuleTemporaryFilesCleanup tempFilesCleanupRule;
/**
* Ignore tests after hitting a designated number of initial failures. This
@@ -588,7 +592,7 @@ public abstract class LuceneTestCase ext
.around(suiteFailureMarker = new TestRuleMarkFailure())
.around(new TestRuleAssertionsRequired())
.around(new TestRuleLimitSysouts(suiteFailureMarker))
- .around(new TemporaryFilesCleanupRule())
+ .around(tempFilesCleanupRule = new TestRuleTemporaryFilesCleanup(suiteFailureMarker))
.around(new StaticFieldsInvariantRule(STATIC_LEAK_THRESHOLD, true) {
@Override
protected boolean accept(java.lang.reflect.Field field) {
@@ -2506,52 +2510,12 @@ public abstract class LuceneTestCase ext
}
/**
- * A base location for temporary files of a given test. Helps in figuring out
- * which tests left which files and where.
- */
- private static File tempDirBase;
-
- /**
- * Retry to create temporary file name this many times.
- */
- private static final int TEMP_NAME_RETRY_THRESHOLD = 9999;
-
- /**
* This method is deprecated for a reason. Do not use it. Call {@link #createTempDir()}
* or {@link #createTempDir(String)} or {@link #createTempFile(String, String)}.
*/
@Deprecated
public static File getBaseTempDirForTestClass() {
- synchronized (LuceneTestCase.class) {
- if (tempDirBase == null) {
- File directory = new File(System.getProperty("tempDir", System.getProperty("java.io.tmpdir")));
- assert directory.exists() &&
- directory.isDirectory() &&
- directory.canWrite();
-
- RandomizedContext ctx = RandomizedContext.current();
- Class<?> clazz = ctx.getTargetClass();
- String prefix = clazz.getName();
- prefix = prefix.replaceFirst("^org.apache.lucene.", "lucene.");
- prefix = prefix.replaceFirst("^org.apache.solr.", "solr.");
-
- int attempt = 0;
- File f;
- do {
- if (attempt++ >= TEMP_NAME_RETRY_THRESHOLD) {
- throw new RuntimeException(
- "Failed to get a temporary name too many times, check your temp directory and consider manually cleaning it: "
- + directory.getAbsolutePath());
- }
- f = new File(directory, prefix + "-" + ctx.getRunnerSeedAsString()
- + "-" + String.format(Locale.ENGLISH, "%03d", attempt));
- } while (!f.mkdirs());
-
- tempDirBase = f;
- registerToRemoveAfterSuite(tempDirBase);
- }
- }
- return tempDirBase;
+ return tempFilesCleanupRule.getPerTestClassTempDir();
}
@@ -2573,21 +2537,7 @@ public abstract class LuceneTestCase ext
* the folder from being removed.
*/
public static File createTempDir(String prefix) {
- File base = getBaseTempDirForTestClass();
-
- int attempt = 0;
- File f;
- do {
- if (attempt++ >= TEMP_NAME_RETRY_THRESHOLD) {
- throw new RuntimeException(
- "Failed to get a temporary name too many times, check your temp directory and consider manually cleaning it: "
- + base.getAbsolutePath());
- }
- f = new File(base, prefix + "-" + String.format(Locale.ENGLISH, "%03d", attempt));
- } while (!f.mkdirs());
-
- registerToRemoveAfterSuite(f);
- return f;
+ return tempFilesCleanupRule.createTempDir(prefix);
}
/**
@@ -2599,21 +2549,7 @@ public abstract class LuceneTestCase ext
* the folder from being removed.
*/
public static File createTempFile(String prefix, String suffix) throws IOException {
- File base = getBaseTempDirForTestClass();
-
- int attempt = 0;
- File f;
- do {
- if (attempt++ >= TEMP_NAME_RETRY_THRESHOLD) {
- throw new RuntimeException(
- "Failed to get a temporary name too many times, check your temp directory and consider manually cleaning it: "
- + base.getAbsolutePath());
- }
- f = new File(base, prefix + "-" + String.format(Locale.ENGLISH, "%03d", attempt) + suffix);
- } while (!f.createNewFile());
-
- registerToRemoveAfterSuite(f);
- return f;
+ return tempFilesCleanupRule.createTempFile(prefix, suffix);
}
/**
@@ -2624,79 +2560,4 @@ public abstract class LuceneTestCase ext
public static File createTempFile() throws IOException {
return createTempFile("tempFile", ".tmp");
}
-
- /**
- * A queue of temporary resources to be removed after the
- * suite completes.
- * @see #registerToRemoveAfterSuite(File)
- */
- private final static List<File> cleanupQueue = new ArrayList<File>();
-
- /**
- * Register temporary folder for removal after the suite completes.
- */
- private static void registerToRemoveAfterSuite(File f) {
- assert f != null;
-
- if (LuceneTestCase.LEAVE_TEMPORARY) {
- System.err.println("INFO: Will leave temporary file: " + f.getAbsolutePath());
- return;
- }
-
- synchronized (cleanupQueue) {
- cleanupQueue.add(f);
- }
- }
-
- /**
- * Checks and cleans up temporary files.
- *
- * @see LuceneTestCase#createTempDir()
- * @see LuceneTestCase#createTempFile()
- */
- private static class TemporaryFilesCleanupRule extends TestRuleAdapter {
- @Override
- protected void before() throws Throwable {
- super.before();
- assert tempDirBase == null;
- }
-
- @Override
- protected void afterAlways(List<Throwable> errors) throws Throwable {
- // Drain cleanup queue and clear it.
- final File [] everything;
- final String tempDirBasePath;
- synchronized (cleanupQueue) {
- tempDirBasePath = (tempDirBase != null ? tempDirBase.getAbsolutePath() : null);
- tempDirBase = null;
-
- Collections.reverse(cleanupQueue);
- everything = new File [cleanupQueue.size()];
- cleanupQueue.toArray(everything);
- cleanupQueue.clear();
- }
-
- // Only check and throw an IOException on un-removable files if the test
- // was successful. Otherwise just report the path of temporary files
- // and leave them there.
- if (LuceneTestCase.suiteFailureMarker.wasSuccessful()) {
- try {
- TestUtil.rm(everything);
- } catch (IOException e) {
- Class<?> suiteClass = RandomizedContext.current().getTargetClass();
- if (suiteClass.isAnnotationPresent(SuppressTempFileChecks.class)) {
- System.err.println("WARNING: Leftover undeleted temporary files (bugUrl: "
- + suiteClass.getAnnotation(SuppressTempFileChecks.class).bugUrl() + "): "
- + e.getMessage());
- return;
- }
- throw e;
- }
- } else {
- if (tempDirBasePath != null) {
- System.err.println("NOTE: leaving temporary files on disk at: " + tempDirBasePath);
- }
- }
- }
- }
}
Modified: lucene/dev/branches/branch_4x/lucene/tools/junit4/tests.policy
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/tools/junit4/tests.policy?rev=1620055&r1=1620054&r2=1620055&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/tools/junit4/tests.policy (original)
+++ lucene/dev/branches/branch_4x/lucene/tools/junit4/tests.policy Sat Aug 23 17:22:57 2014
@@ -26,8 +26,9 @@
grant {
// permissions for file access, write access only to sandbox:
permission java.io.FilePermission "<<ALL FILES>>", "read,execute";
- permission java.io.FilePermission "${junit4.childvm.cwd}", "read,execute,write";
- permission java.io.FilePermission "${junit4.childvm.cwd}${/}-", "read,execute,write,delete";
+ permission java.io.FilePermission "${junit4.childvm.cwd}", "read,execute";
+ permission java.io.FilePermission "${junit4.childvm.cwd}${/}temp", "read,execute,write,delete";
+ permission java.io.FilePermission "${junit4.childvm.cwd}${/}temp${/}-", "read,execute,write,delete";
permission java.io.FilePermission "${junit4.tempDir}${/}*", "read,execute,write,delete";
permission java.io.FilePermission "${clover.db.dir}${/}-", "read,execute,write,delete";
Modified: lucene/dev/branches/branch_4x/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/CHANGES.txt?rev=1620055&r1=1620054&r2=1620055&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/CHANGES.txt (original)
+++ lucene/dev/branches/branch_4x/solr/CHANGES.txt Sat Aug 23 17:22:57 2014
@@ -41,6 +41,9 @@ Bug Fixes
* SOLR-6410: Ensure all Lookup instances are closed via CloseHook
(hossman, Areek Zillur, Ryan Ernst, Dawid Weiss)
+* LUCENE-5650: Tests can no longer write to CWD. Update log dir is now made relative
+ to the instance dir if it is not an absolute path. (Ryan Ernst, Dawid Weiss)
+
Other Changes
---------------------
Modified: lucene/dev/branches/branch_4x/solr/contrib/analysis-extras/src/test/org/apache/solr/analysis/TestFoldingMultitermExtrasQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/contrib/analysis-extras/src/test/org/apache/solr/analysis/TestFoldingMultitermExtrasQuery.java?rev=1620055&r1=1620054&r2=1620055&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/contrib/analysis-extras/src/test/org/apache/solr/analysis/TestFoldingMultitermExtrasQuery.java (original)
+++ lucene/dev/branches/branch_4x/solr/contrib/analysis-extras/src/test/org/apache/solr/analysis/TestFoldingMultitermExtrasQuery.java Sat Aug 23 17:22:57 2014
@@ -17,6 +17,9 @@ package org.apache.solr.analysis;
* limitations under the License.
*/
+import java.io.File;
+
+import org.apache.commons.io.FileUtils;
import org.apache.solr.SolrTestCaseJ4;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -29,7 +32,9 @@ public class TestFoldingMultitermExtrasQ
@BeforeClass
public static void beforeTests() throws Exception {
- initCore("solrconfig-icucollate.xml","schema-folding-extra.xml", "analysis-extras/solr");
+ File testHome = createTempDir();
+ FileUtils.copyDirectory(getFile("analysis-extras/solr"), testHome);
+ initCore("solrconfig-icucollate.xml","schema-folding-extra.xml", testHome.getAbsolutePath());
int idx = 1;
// ICUFoldingFilterFactory
Modified: lucene/dev/branches/branch_4x/solr/contrib/analysis-extras/src/test/org/apache/solr/schema/TestICUCollationFieldOptions.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/contrib/analysis-extras/src/test/org/apache/solr/schema/TestICUCollationFieldOptions.java?rev=1620055&r1=1620054&r2=1620055&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/contrib/analysis-extras/src/test/org/apache/solr/schema/TestICUCollationFieldOptions.java (original)
+++ lucene/dev/branches/branch_4x/solr/contrib/analysis-extras/src/test/org/apache/solr/schema/TestICUCollationFieldOptions.java Sat Aug 23 17:22:57 2014
@@ -18,9 +18,12 @@ package org.apache.solr.schema;
*/
import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
+import org.apache.commons.io.FileUtils;
import org.apache.solr.SolrTestCaseJ4;
import org.junit.BeforeClass;
+import java.io.File;
+
/**
* Tests expert options of {@link ICUCollationField}.
*/
@@ -28,7 +31,9 @@ import org.junit.BeforeClass;
public class TestICUCollationFieldOptions extends SolrTestCaseJ4 {
@BeforeClass
public static void beforeClass() throws Exception {
- initCore("solrconfig-icucollate.xml","schema-icucollateoptions.xml", "analysis-extras/solr");
+ File testHome = createTempDir();
+ FileUtils.copyDirectory(getFile("analysis-extras/solr"), testHome);
+ initCore("solrconfig-icucollate.xml","schema-icucollateoptions.xml", testHome.getAbsolutePath());
// add some docs
assertU(adoc("id", "1", "text", "foo-bar"));
assertU(adoc("id", "2", "text", "foo bar"));
Modified: lucene/dev/branches/branch_4x/solr/contrib/clustering/src/test/org/apache/solr/handler/clustering/AbstractClusteringTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/contrib/clustering/src/test/org/apache/solr/handler/clustering/AbstractClusteringTestCase.java?rev=1620055&r1=1620054&r2=1620055&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/contrib/clustering/src/test/org/apache/solr/handler/clustering/AbstractClusteringTestCase.java (original)
+++ lucene/dev/branches/branch_4x/solr/contrib/clustering/src/test/org/apache/solr/handler/clustering/AbstractClusteringTestCase.java Sat Aug 23 17:22:57 2014
@@ -16,8 +16,10 @@ package org.apache.solr.handler.clusteri
* limitations under the License.
*/
+import java.io.File;
import java.util.Map;
+import org.apache.commons.io.FileUtils;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.common.SolrInputDocument;
import org.junit.BeforeClass;
@@ -31,7 +33,9 @@ public abstract class AbstractClustering
@BeforeClass
public static void beforeClass() throws Exception {
- initCore("solrconfig.xml", "schema.xml", "clustering/solr");
+ File testHome = createTempDir();
+ FileUtils.copyDirectory(getFile("clustering/solr"), testHome);
+ initCore("solrconfig.xml", "schema.xml", testHome.getAbsolutePath());
numberOfDocs = 0;
for (String[] doc : DOCUMENTS) {
assertNull(h.validateUpdate(adoc("id", Integer.toString(numberOfDocs), "url", doc[0], "title", doc[1], "snippet", doc[2])));
Modified: lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/build.xml?rev=1620055&r1=1620054&r2=1620055&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/build.xml (original)
+++ lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/build.xml Sat Aug 23 17:22:57 2014
@@ -23,9 +23,6 @@
Data Import Handler
</description>
- <!-- the tests have some parallel problems: writability to single copy of dataimport.properties -->
- <property name="tests.jvms.override" value="1"/>
-
<import file="../contrib-build.xml"/>
<path id="test.classpath">
Modified: lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/SimplePropertiesWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/SimplePropertiesWriter.java?rev=1620055&r1=1620054&r2=1620055&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/SimplePropertiesWriter.java (original)
+++ lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/SimplePropertiesWriter.java Sat Aug 23 17:22:57 2014
@@ -27,6 +27,7 @@ import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.nio.charset.StandardCharsets;
+import java.security.AccessControlException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -37,6 +38,7 @@ import java.util.Properties;
import org.apache.lucene.util.IOUtils;
import org.apache.solr.core.SolrCore;
+import org.apache.solr.core.SolrResourceLoader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
@@ -113,22 +115,34 @@ public class SimplePropertiesWriter exte
configDir = params.get(DIRECTORY);
} else {
SolrCore core = dataImporter.getCore();
- configDir = (core == null ? "." : core.getResourceLoader().getConfigDir());
+ if (core == null) {
+ configDir = SolrResourceLoader.locateSolrHome();
+ } else {
+ configDir = core.getResourceLoader().getConfigDir();
+ }
}
}
private File getPersistFile() {
- String filePath = configDir;
- if (configDir != null && !configDir.endsWith(File.separator)) filePath += File.separator;
- filePath += filename;
- return new File(filePath);
+ final File filePath;
+ if (new File(filename).isAbsolute() || configDir == null) {
+ filePath = new File(filename);
+ } else {
+ filePath = new File(new File(configDir), filename);
+ }
+ return filePath;
}
+
@Override
public boolean isWritable() {
File persistFile = getPersistFile();
- return persistFile.exists() ? persistFile.canWrite() : persistFile
- .getParentFile().canWrite();
-
+ try {
+ return persistFile.exists()
+ ? persistFile.canWrite()
+ : persistFile.getParentFile().canWrite();
+ } catch (AccessControlException e) {
+ return false;
+ }
}
@Override
@@ -188,12 +202,7 @@ public class SimplePropertiesWriter exte
Properties newProps = mapToProperties(propObjs);
try {
existingProps.putAll(newProps);
- String filePath = configDir;
- if (configDir != null && !configDir.endsWith(File.separator)) {
- filePath += File.separator;
- }
- filePath += filename;
- propOutput = new OutputStreamWriter(new FileOutputStream(filePath), StandardCharsets.UTF_8);
+ propOutput = new OutputStreamWriter(new FileOutputStream(getPersistFile()), StandardCharsets.UTF_8);
existingProps.store(propOutput, null);
log.info("Wrote last indexed time to " + filename);
} catch (Exception e) {
Modified: lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/config/PropertyWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/config/PropertyWriter.java?rev=1620055&r1=1620054&r2=1620055&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/config/PropertyWriter.java (original)
+++ lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/config/PropertyWriter.java Sat Aug 23 17:22:57 2014
@@ -1,6 +1,5 @@
package org.apache.solr.handler.dataimport.config;
-import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@@ -23,17 +22,17 @@ import java.util.Map;
public class PropertyWriter {
private final String type;
- private final Map<String,String> parameters;
+ private Map<String,String> parameters;
public PropertyWriter(String type, Map<String,String> parameters) {
this.type = type;
- this.parameters = Collections.unmodifiableMap(new HashMap<>(parameters));
+ this.parameters = new HashMap<String,String>(parameters);
}
public Map<String,String> getParameters() {
return parameters;
}
-
+
public String getType() {
return type;
}
Modified: lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractDataImportHandlerTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractDataImportHandlerTestCase.java?rev=1620055&r1=1620054&r2=1620055&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractDataImportHandlerTestCase.java (original)
+++ lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractDataImportHandlerTestCase.java Sat Aug 23 17:22:57 2014
@@ -16,7 +16,17 @@
*/
package org.apache.solr.handler.dataimport;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.io.FileUtils;
import org.apache.solr.SolrTestCaseJ4;
+import org.apache.solr.common.util.NamedList;
import org.apache.solr.core.SolrCore;
import org.apache.solr.request.LocalSolrQueryRequest;
import org.apache.solr.request.SolrQueryRequest;
@@ -28,18 +38,8 @@ import org.apache.solr.update.MergeIndex
import org.apache.solr.update.RollbackUpdateCommand;
import org.apache.solr.update.processor.UpdateRequestProcessor;
import org.apache.solr.update.processor.UpdateRequestProcessorFactory;
-import org.apache.solr.common.util.NamedList;
-import org.junit.After;
import org.junit.Before;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.File;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
/**
* <p>
* Abstract base class for DataImportHandler tests
@@ -55,27 +55,17 @@ public abstract class AbstractDataImport
// note, a little twisted that we shadow this static method
public static void initCore(String config, String schema) throws Exception {
- initCore(config, schema, getFile("dih/solr").getAbsolutePath());
+ File testHome = createTempDir("core-home");
+ FileUtils.copyDirectory(getFile("dih/solr"), testHome);
+ initCore(config, schema, testHome.getAbsolutePath());
}
@Override
@Before
public void setUp() throws Exception {
super.setUp();
- }
-
- @Override
- @After
- public void tearDown() throws Exception {
- // remove dataimport.properties
- File f = new File("solr/collection1/conf/dataimport.properties");
- log.info("Looking for dataimport.properties at: " + f.getAbsolutePath());
- if (f.exists()) {
- log.info("Deleting dataimport.properties");
- if (!f.delete())
- log.warn("Could not delete dataimport.properties");
- }
- super.tearDown();
+ File home = createTempDir("dih-properties");
+ System.setProperty("solr.solr.home", home.getAbsolutePath());
}
protected String loadDataConfig(String dataConfigFileName) {
@@ -104,6 +94,21 @@ public abstract class AbstractDataImport
}
/**
+ * Redirect {@link SimplePropertiesWriter#filename} to a temporary location
+ * and return it.
+ */
+ protected File redirectTempProperties(DataImporter di) {
+ try {
+ File tempFile = createTempFile();
+ di.getConfig().getPropertyWriter().getParameters()
+ .put(SimplePropertiesWriter.FILENAME, tempFile.getAbsolutePath());
+ return tempFile;
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
* Runs a full-import using the given dataConfig and the provided request parameters.
*
* By default, debug=on, clean=true and commit=true are passed which can be overridden.
Modified: lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestDocBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestDocBuilder.java?rev=1620055&r1=1620054&r2=1620055&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestDocBuilder.java (original)
+++ lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestDocBuilder.java Sat Aug 23 17:22:57 2014
@@ -73,6 +73,8 @@ public class TestDocBuilder extends Abst
public void testDeltaImportNoRows_MustNotCommit() {
DataImporter di = new DataImporter();
di.loadAndInit(dc_deltaConfig);
+ redirectTempProperties(di);
+
DIHConfiguration cfg = di.getConfig();
Entity ent = cfg.getEntities().get(0);
MockDataSource.setIterator("select * from x", new ArrayList<Map<String, Object>>().iterator());
Modified: lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestFieldReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestFieldReader.java?rev=1620055&r1=1620054&r2=1620055&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestFieldReader.java (original)
+++ lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestFieldReader.java Sat Aug 23 17:22:57 2014
@@ -35,6 +35,8 @@ public class TestFieldReader extends Abs
public void simple() {
DataImporter di = new DataImporter();
di.loadAndInit(config);
+ redirectTempProperties(di);
+
TestDocBuilder.SolrWriterImpl sw = new TestDocBuilder.SolrWriterImpl();
RequestInfo rp = new RequestInfo(null, createMap("command", "full-import"), null);
List<Map<String, Object>> l = new ArrayList<>();
Modified: lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestNonWritablePersistFile.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestNonWritablePersistFile.java?rev=1620055&r1=1620054&r2=1620055&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestNonWritablePersistFile.java (original)
+++ lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestNonWritablePersistFile.java Sat Aug 23 17:22:57 2014
@@ -72,8 +72,8 @@ public class TestNonWritablePersistFile
try {
// execute the test only if we are able to set file to read only mode
assumeTrue("No dataimport.properties file", f.exists() || f.createNewFile());
- assumeTrue("dataimport.proprties can't be set read only", f.setReadOnly());
- assumeFalse("dataimport.proprties is still writable even though " +
+ assumeTrue("dataimport.properties can't be set read only", f.setReadOnly());
+ assumeFalse("dataimport.properties is still writable even though " +
"marked readonly - test running as superuser?", f.canWrite());
ignoreException("Properties is not writable");
Modified: lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestPlainTextEntityProcessor.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestPlainTextEntityProcessor.java?rev=1620055&r1=1620054&r2=1620055&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestPlainTextEntityProcessor.java (original)
+++ lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestPlainTextEntityProcessor.java Sat Aug 23 17:22:57 2014
@@ -16,11 +16,13 @@
*/
package org.apache.solr.handler.dataimport;
-import org.junit.Test;
-
+import java.io.File;
+import java.io.IOException;
import java.io.StringReader;
import java.util.Properties;
+import org.junit.Test;
+
/**
* Test for PlainTextEntityProcessor
*
@@ -30,9 +32,11 @@ import java.util.Properties;
*/
public class TestPlainTextEntityProcessor extends AbstractDataImportHandlerTestCase {
@Test
- public void testSimple() {
+ public void testSimple() throws IOException {
DataImporter di = new DataImporter();
di.loadAndInit(DATA_CONFIG);
+ redirectTempProperties(di);
+
TestDocBuilder.SolrWriterImpl sw = new TestDocBuilder.SolrWriterImpl();
RequestInfo rp = new RequestInfo(null, createMap("command", "full-import"), null);
di.runCmd(rp, sw);
Modified: lucene/dev/branches/branch_4x/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineBasicMiniMRTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineBasicMiniMRTest.java?rev=1620055&r1=1620054&r2=1620055&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineBasicMiniMRTest.java (original)
+++ lucene/dev/branches/branch_4x/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineBasicMiniMRTest.java Sat Aug 23 17:22:57 2014
@@ -69,7 +69,7 @@ public class MorphlineBasicMiniMRTest ex
private static final String DOCUMENTS_DIR = RESOURCES_DIR + "/test-documents";
private static final File MINIMR_CONF_DIR = new File(RESOURCES_DIR + "/solr/minimr");
- private static final String SEARCH_ARCHIVES_JAR = JarFinder.getJar(MapReduceIndexerTool.class);
+ private static String SEARCH_ARCHIVES_JAR;
private static MiniDFSCluster dfsCluster = null;
private static MiniMRCluster mrCluster = null;
@@ -150,6 +150,9 @@ public class MorphlineBasicMiniMRTest ex
System.setProperty("test.build.data", dataDir + File.separator + "hdfs" + File.separator + "build");
System.setProperty("test.cache.data", dataDir + File.separator + "hdfs" + File.separator + "cache");
+ // Initialize AFTER test.build.dir is set, JarFinder uses it.
+ SEARCH_ARCHIVES_JAR = JarFinder.getJar(MapReduceIndexerTool.class);
+
JobConf conf = new JobConf();
conf.set("dfs.block.access.token.enable", "false");
conf.set("dfs.permissions", "true");
Modified: lucene/dev/branches/branch_4x/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineGoLiveMiniMRTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineGoLiveMiniMRTest.java?rev=1620055&r1=1620054&r2=1620055&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineGoLiveMiniMRTest.java (original)
+++ lucene/dev/branches/branch_4x/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineGoLiveMiniMRTest.java Sat Aug 23 17:22:57 2014
@@ -101,7 +101,7 @@ public class MorphlineGoLiveMiniMRTest e
private static final File MINIMR_INSTANCE_DIR = new File(RESOURCES_DIR + "/solr/minimr");
private static final File MINIMR_CONF_DIR = new File(RESOURCES_DIR + "/solr/minimr");
- private static final String SEARCH_ARCHIVES_JAR = JarFinder.getJar(MapReduceIndexerTool.class);
+ private static String SEARCH_ARCHIVES_JAR;
private static MiniDFSCluster dfsCluster = null;
private static MiniMRClientCluster mrCluster = null;
@@ -176,6 +176,9 @@ public class MorphlineGoLiveMiniMRTest e
System.setProperty("test.build.dir", tempDir + File.separator + "hdfs" + File.separator + "test-build-dir");
System.setProperty("test.build.data", tempDir + File.separator + "hdfs" + File.separator + "build");
System.setProperty("test.cache.data", tempDir + File.separator + "hdfs" + File.separator + "cache");
+
+ // Initialize AFTER test.build.dir is set, JarFinder uses it.
+ SEARCH_ARCHIVES_JAR = JarFinder.getJar(MapReduceIndexerTool.class);
dfsCluster = new MiniDFSCluster(conf, dataNodes, true, null);
FileSystem fileSystem = dfsCluster.getFileSystem();
Modified: lucene/dev/branches/branch_4x/solr/contrib/velocity/src/java/org/apache/solr/response/VelocityResponseWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/contrib/velocity/src/java/org/apache/solr/response/VelocityResponseWriter.java?rev=1620055&r1=1620054&r2=1620055&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/contrib/velocity/src/java/org/apache/solr/response/VelocityResponseWriter.java (original)
+++ lucene/dev/branches/branch_4x/solr/contrib/velocity/src/java/org/apache/solr/response/VelocityResponseWriter.java Sat Aug 23 17:22:57 2014
@@ -133,13 +133,16 @@ public class VelocityResponseWriter impl
// TODO: Externalize Velocity properties
String propFile = request.getParams().get("v.properties");
try {
- if (propFile == null)
- engine.init();
- else {
+ Properties props = new Properties();
+ // Don't create a separate velocity log file by default.
+ props.put(RuntimeConstants.RUNTIME_LOG, "");
+
+ if (propFile == null) {
+ engine.init(props);
+ } else {
InputStream is = null;
try {
is = resourceLoader.getResourceStream(propFile);
- Properties props = new Properties();
props.load(new InputStreamReader(is, StandardCharsets.UTF_8));
engine.init(props);
}
Modified: lucene/dev/branches/branch_4x/solr/contrib/velocity/src/test/org/apache/solr/velocity/VelocityResponseWriterTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/contrib/velocity/src/test/org/apache/solr/velocity/VelocityResponseWriterTest.java?rev=1620055&r1=1620054&r2=1620055&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/contrib/velocity/src/test/org/apache/solr/velocity/VelocityResponseWriterTest.java (original)
+++ lucene/dev/branches/branch_4x/solr/contrib/velocity/src/test/org/apache/solr/velocity/VelocityResponseWriterTest.java Sat Aug 23 17:22:57 2014
@@ -22,12 +22,10 @@ import org.apache.solr.response.QueryRes
import org.apache.solr.response.SolrQueryResponse;
import org.apache.solr.response.VelocityResponseWriter;
import org.apache.solr.request.SolrQueryRequest;
-import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import java.io.StringWriter;
-import java.io.IOException;
public class VelocityResponseWriterTest extends SolrTestCaseJ4 {
@BeforeClass
Modified: lucene/dev/branches/branch_4x/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrServer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrServer.java?rev=1620055&r1=1620054&r2=1620055&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrServer.java (original)
+++ lucene/dev/branches/branch_4x/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrServer.java Sat Aug 23 17:22:57 2014
@@ -92,7 +92,7 @@ public class TestLBHttpSolrServer extend
httpClient = HttpClientUtil.createClient(null);
HttpClientUtil.setConnectionTimeout(httpClient, 1000);
for (int i = 0; i < solr.length; i++) {
- solr[i] = new SolrInstance("solr/collection1" + i, 0);
+ solr[i] = new SolrInstance("solr/collection1" + i, createTempDir("instance-" + i), 0);
solr[i].setUp();
solr[i].startJetty();
addDocs(solr[i]);
@@ -252,9 +252,13 @@ public class TestLBHttpSolrServer extend
int port;
JettySolrRunner jetty;
- public SolrInstance(String name, int port) {
+ public SolrInstance(String name, File homeDir, int port) {
this.name = name;
+ this.homeDir = homeDir;
this.port = port;
+
+ dataDir = new File(homeDir + "/collection1", "data");
+ confDir = new File(homeDir + "/collection1", "conf");
}
public String getHomeDir() {
@@ -287,12 +291,6 @@ public class TestLBHttpSolrServer extend
public void setUp() throws Exception {
- File home = new File(dataDir,
- getClass().getName() + "-" + System.currentTimeMillis());
- homeDir = new File(home, name);
- dataDir = new File(homeDir + "/collection1", "data");
- confDir = new File(homeDir + "/collection1", "conf");
-
homeDir.mkdirs();
dataDir.mkdirs();
confDir.mkdirs();
@@ -303,7 +301,6 @@ public class TestLBHttpSolrServer extend
FileUtils.copyFile(SolrTestCaseJ4.getFile(getSolrConfigFile()), f);
f = new File(confDir, "schema.xml");
FileUtils.copyFile(SolrTestCaseJ4.getFile(getSchemaFile()), f);
-
}
public void tearDown() throws Exception {
Modified: lucene/dev/branches/branch_4x/solr/solrj/src/test/org/apache/solr/client/solrj/request/SolrPingTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/solrj/src/test/org/apache/solr/client/solrj/request/SolrPingTest.java?rev=1620055&r1=1620054&r2=1620055&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/solrj/src/test/org/apache/solr/client/solrj/request/SolrPingTest.java (original)
+++ lucene/dev/branches/branch_4x/solr/solrj/src/test/org/apache/solr/client/solrj/request/SolrPingTest.java Sat Aug 23 17:22:57 2014
@@ -19,6 +19,7 @@ package org.apache.solr.client.solrj.req
import junit.framework.Assert;
+import org.apache.commons.io.FileUtils;
import org.apache.solr.SolrJettyTestBase;
import org.apache.solr.client.solrj.response.SolrPingResponse;
import org.apache.solr.common.SolrException;
@@ -27,6 +28,8 @@ import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
+import java.io.File;
+
/**
* Test SolrPing in Solrj
*/
@@ -34,7 +37,9 @@ public class SolrPingTest extends SolrJe
@BeforeClass
public static void beforeClass() throws Exception {
- initCore("solrconfig.xml", "schema.xml", "solrj/solr", "collection1");
+ File testHome = createTempDir();
+ FileUtils.copyDirectory(getFile("solrj/solr"), testHome);
+ initCore("solrconfig.xml", "schema.xml", testHome.getAbsolutePath(), "collection1");
}
@Before
Modified: lucene/dev/branches/branch_4x/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java?rev=1620055&r1=1620054&r2=1620055&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java (original)
+++ lucene/dev/branches/branch_4x/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java Sat Aug 23 17:22:57 2014
@@ -48,14 +48,15 @@ public class MiniSolrCloudCluster {
* "Mini" SolrCloud cluster to be used for testing
* @param numServers number of Solr servers to start
* @param hostContext context path of Solr servers used by Jetty
+ * @param baseDir base directory that the mini cluster should be run from
* @param solrXml solr.xml file to be uploaded to ZooKeeper
* @param extraServlets Extra servlets to be started by Jetty
* @param extraRequestFilters extra filters to be started by Jetty
*/
- public MiniSolrCloudCluster(int numServers, String hostContext, File solrXml,
+ public MiniSolrCloudCluster(int numServers, String hostContext, File baseDir, File solrXml,
SortedMap<ServletHolder, String> extraServlets,
SortedMap<Class, String> extraRequestFilters) throws Exception {
- testDir = Files.createTempDir();
+ testDir = baseDir;
String zkDir = testDir.getAbsolutePath() + File.separator
+ "zookeeper/server1/data";