SOLR-2570: randomize more indexConfig settings in tests

git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1510637 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Chris M. Hostetter 2013-08-05 18:18:39 +00:00
parent acaa4eab02
commit 26a914558b
3 changed files with 45 additions and 7 deletions

View File

@ -22,6 +22,18 @@ A solrconfig.xml snippet containing indexConfig settings for randomized testing.
-->
<indexConfig>
<useCompoundFile>${useCompoundFile:false}</useCompoundFile>
<!-- allways use this randomized policy -->
<mergePolicy class="org.apache.solr.util.RandomMergePolicy" />
<useCompoundFile>${useCompoundFile:false}</useCompoundFile>
<maxBufferedDocs>${solr.tests.maxBufferedDocs}</maxBufferedDocs>
<maxIndexingThreads>${solr.tests.maxIndexingThreads}</maxIndexingThreads>
<ramBufferSizeMB>${solr.tests.ramBufferSizeMB}</ramBufferSizeMB>
<mergeScheduler class="${solr.tests.mergeScheduler}" />
<writeLockTimeout>1000</writeLockTimeout>
<commitLockTimeout>10000</commitLockTimeout>
<lockType>single</lockType>
</indexConfig>

View File

@ -129,14 +129,15 @@ public class TestConfig extends SolrTestCaseJ4 {
// sanity check that sys propertis are working as expected
public void testSanityCheckTestSysPropsAreUsed() throws Exception {
final boolean expectCFS
= Boolean.parseBoolean(System.getProperty("useCompoundFile"));
SolrConfig sc = new SolrConfig(new SolrResourceLoader("solr/collection1"), "solrconfig-basic.xml", null);
SolrIndexConfig sic = sc.indexConfig;
assertEquals("default ramBufferSizeMB", 100.0D, sic.ramBufferSizeMB, 0.0D);
assertEquals("default LockType", SolrIndexConfig.LOCK_TYPE_NATIVE, sic.lockType);
assertEquals("useCompoundFile sysprop", expectCFS, sic.useCompoundFile);
assertEquals("ramBufferSizeMB sysprop",
Double.parseDouble(System.getProperty("solr.tests.ramBufferSizeMB")),
sic.ramBufferSizeMB, 0.0D);
assertEquals("useCompoundFile sysprop",
Boolean.parseBoolean(System.getProperty("useCompoundFile")), sic.useCompoundFile);
}
}

View File

@ -21,8 +21,11 @@ import com.carrotsearch.randomizedtesting.RandomizedContext;
import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
import com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule;
import org.apache.commons.io.FileUtils;
import org.apache.lucene.analysis.MockAnalyzer;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.util.IOUtils;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util._TestUtil;
import org.apache.lucene.util.QuickPatchThreadsFilter;
import org.apache.solr.client.solrj.util.ClientUtils;
import org.apache.solr.common.SolrException;
@ -112,13 +115,13 @@ public abstract class SolrTestCaseJ4 extends LuceneTestCase {
private static void beforeClass() {
System.setProperty("jetty.testMode", "true");
System.setProperty("useCompoundFile", Boolean.toString(random().nextBoolean()));
System.setProperty("enable.update.log", usually() ? "true" : "false");
System.setProperty("tests.shardhandler.randomSeed", Long.toString(random().nextLong()));
setupLogging();
startTrackingSearchers();
startTrackingZkClients();
ignoreException("ignore_exception");
newRandomConfig();
}
@AfterClass
@ -182,6 +185,28 @@ public abstract class SolrTestCaseJ4 extends LuceneTestCase {
lrf = h.getRequestFactory("standard", 0, 20, CommonParams.VERSION, "2.2");
}
/** sets system properties based on
* {@link #newIndexWriterConfig(org.apache.lucene.util.Version, org.apache.lucene.analysis.Analyzer)}
*
* configs can use these system properties to vary the indexwriter settings
*/
public static void newRandomConfig() {
IndexWriterConfig iwc = newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random()));
System.setProperty("useCompoundFile", String.valueOf(iwc.getUseCompoundFile()));
System.setProperty("solr.tests.maxBufferedDocs", String.valueOf(iwc.getMaxBufferedDocs()));
System.setProperty("solr.tests.ramBufferSizeMB", String.valueOf(iwc.getRAMBufferSizeMB()));
System.setProperty("solr.tests.mergeScheduler", iwc.getMergeScheduler().getClass().getName());
// don't ask iwc.getMaxThreadStates(), sometimes newIWC uses
// RandomDocumentsWriterPerThreadPool and all hell breaks loose
int maxIndexingThreads = rarely(random())
? _TestUtil.nextInt(random(), 5, 20) // crazy value
: _TestUtil.nextInt(random(), 1, 4); // reasonable value
System.setProperty("solr.tests.maxIndexingThreads", String.valueOf(maxIndexingThreads));
}
@Override
public void setUp() throws Exception {
super.setUp();