You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by cp...@apache.org on 2016/02/09 18:48:50 UTC

lucene-solr git commit: SOLR-8621: more vs. test coverage

Repository: lucene-solr
Updated Branches:
  refs/heads/master be807919b -> b47eeb2bb


SOLR-8621: more <mergePolicy> vs. <mergePolicyFactory> test coverage

* added bad-mpf-solrconfig.xml as MergePolicyFactory equivalent of bad-mp-solrconfig.xml (with DummyMergePolicyFactory as equivalent to DummyMergePolicy)

* added solrconfig-logmergepolicyfactory.xml as MergePolicyFactory equivalent of solrconfig-logmergepolicy.xml

* added solrconfig-mergepolicyfactory-nocfs.xml as MergePolicyFactory equivalent of solrconfig-mergepolicy-nocfs.xml

* added solrconfig-indexconfig-mergepolicyfactory.xml as MergePolicyFactory equivalent of solrconfig-indexconfig.xml

* added solrconfig-warmer-randommergepolicyfactory.xml as MergePolicyFactory equivalent of solrconfig-warmer.xml


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/b47eeb2b
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/b47eeb2b
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/b47eeb2b

Branch: refs/heads/master
Commit: b47eeb2bb39e94f23d64df3c4621e7303bbe9dd9
Parents: be80791
Author: Christine Poerschke <cp...@apache.org>
Authored: Tue Feb 9 17:47:05 2016 +0000
Committer: Christine Poerschke <cp...@apache.org>
Committed: Tue Feb 9 17:47:05 2016 +0000

----------------------------------------------------------------------
 .../collection1/conf/bad-mpf-solrconfig.xml     | 37 ++++++++++++++++
 ...olrconfig-indexconfig-mergepolicyfactory.xml | 31 +++++++++++++
 .../conf/solrconfig-logmergepolicyfactory.xml   | 37 ++++++++++++++++
 .../solrconfig-mergepolicyfactory-nocfs.xml     | 34 +++++++++++++++
 ...lrconfig-warmer-randommergepolicyfactory.xml | 46 ++++++++++++++++++++
 .../org/apache/solr/core/TestBadConfig.java     |  2 +
 .../apache/solr/core/TestMergePolicyConfig.java | 28 ++++++++++--
 .../apache/solr/core/TestSolrIndexConfig.java   |  2 +-
 .../solr/index/DummyMergePolicyFactory.java     | 32 ++++++++++++++
 .../apache/solr/update/SolrIndexConfigTest.java | 17 +++++---
 10 files changed, 255 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b47eeb2b/solr/core/src/test-files/solr/collection1/conf/bad-mpf-solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/bad-mpf-solrconfig.xml b/solr/core/src/test-files/solr/collection1/conf/bad-mpf-solrconfig.xml
new file mode 100644
index 0000000..0adf321
--- /dev/null
+++ b/solr/core/src/test-files/solr/collection1/conf/bad-mpf-solrconfig.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" ?>
+
+<!--
+ 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.
+-->
+
+<config>
+
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
+
+  <luceneMatchVersion>${tests.luceneMatchVersion:LATEST}</luceneMatchVersion>
+
+  <indexConfig>
+    <mergePolicyFactory class="org.apache.solr.update.DummyMergePolicyFactory">
+      <int name="mergeFactor">8</int>
+    </mergePolicyFactory>
+  </indexConfig>
+
+  <updateHandler class="solr.DirectUpdateHandler2"/>
+  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+
+  <schemaFactory class="ClassicIndexSchemaFactory"/>
+
+</config>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b47eeb2b/solr/core/src/test-files/solr/collection1/conf/solrconfig-indexconfig-mergepolicyfactory.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-indexconfig-mergepolicyfactory.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-indexconfig-mergepolicyfactory.xml
new file mode 100644
index 0000000..efdd7ff
--- /dev/null
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-indexconfig-mergepolicyfactory.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" ?>
+
+<!--
+ 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.
+-->
+<config>
+  <dataDir>${solr.data.dir:}</dataDir>
+
+  <luceneMatchVersion>${tests.luceneMatchVersion:LATEST}</luceneMatchVersion>
+
+  <indexConfig>
+    <useCompoundFile>${useCompoundFile:false}</useCompoundFile>
+    <infoStream>true</infoStream>
+    <mergePolicyFactory class="org.apache.solr.util.RandomMergePolicyFactory" />
+  </indexConfig>
+
+  <schemaFactory class="ClassicIndexSchemaFactory"/>
+</config>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b47eeb2b/solr/core/src/test-files/solr/collection1/conf/solrconfig-logmergepolicyfactory.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-logmergepolicyfactory.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-logmergepolicyfactory.xml
new file mode 100644
index 0000000..27a1867
--- /dev/null
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-logmergepolicyfactory.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" ?>
+
+<!--
+ 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.
+-->
+
+<config>
+  <luceneMatchVersion>${tests.luceneMatchVersion:LATEST}</luceneMatchVersion>
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
+  <schemaFactory class="ClassicIndexSchemaFactory"/>
+  <indexConfig>
+    <!-- set some values to -1 to force the use of internal lucene defaults -->
+    <maxBufferedDocs>-1</maxBufferedDocs>
+    <ramBufferSizeMB>-1</ramBufferSizeMB>
+
+    <mergePolicyFactory class="${solr.test.log.merge.policy.factory}">
+      <int name="mergeFactor">11</int>
+      <int name="maxMergeDocs">456</int>
+    </mergePolicyFactory>
+  </indexConfig>
+
+  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+
+</config>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b47eeb2b/solr/core/src/test-files/solr/collection1/conf/solrconfig-mergepolicyfactory-nocfs.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-mergepolicyfactory-nocfs.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-mergepolicyfactory-nocfs.xml
new file mode 100644
index 0000000..4dd82d7
--- /dev/null
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-mergepolicyfactory-nocfs.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" ?>
+
+<!--
+ 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.
+-->
+
+<config>
+  <luceneMatchVersion>${tests.luceneMatchVersion:LATEST}</luceneMatchVersion>
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
+  <schemaFactory class="ClassicIndexSchemaFactory"/>
+
+  <indexConfig>
+    <useCompoundFile>${testSetNoCFSMergePolicyConfig.useCompoundFile:false}</useCompoundFile>
+    <mergePolicyFactory class="org.apache.solr.index.TieredMergePolicyFactory">
+      <double name="noCFSRatio">0.5</double>
+    </mergePolicyFactory>
+  </indexConfig>
+
+  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+
+</config>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b47eeb2b/solr/core/src/test-files/solr/collection1/conf/solrconfig-warmer-randommergepolicyfactory.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/solrconfig-warmer-randommergepolicyfactory.xml b/solr/core/src/test-files/solr/collection1/conf/solrconfig-warmer-randommergepolicyfactory.xml
new file mode 100644
index 0000000..1e1936b
--- /dev/null
+++ b/solr/core/src/test-files/solr/collection1/conf/solrconfig-warmer-randommergepolicyfactory.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" ?>
+
+<!--
+ 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.
+-->
+
+<!-- a basic solrconfig that tests can use when they want simple minimal solrconfig/schema
+     DO NOT ADD THINGS TO THIS CONFIG! -->
+<config>
+  <luceneMatchVersion>${tests.luceneMatchVersion:LATEST}</luceneMatchVersion>
+  <dataDir>${solr.data.dir:}</dataDir>
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
+  <schemaFactory class="ClassicIndexSchemaFactory"/>
+  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+  
+  <indexConfig>
+    <!-- we don't use solrconfig.snippet.randomindexconfig.xml here
+         because we explicitly test that a mergedSegmentWarmer works, 
+         but we can still test some of the other randomized indexConfig 
+         settings
+    -->
+    <mergedSegmentWarmer class="org.apache.lucene.index.SimpleMergedSegmentWarmer"/>
+    <mergePolicyFactory class="org.apache.solr.util.RandomMergePolicyFactory" />
+  
+    <useCompoundFile>${useCompoundFile}</useCompoundFile>
+    <maxBufferedDocs>${solr.tests.maxBufferedDocs}</maxBufferedDocs>
+    <ramBufferSizeMB>${solr.tests.ramBufferSizeMB}</ramBufferSizeMB>
+    <mergeScheduler class="${solr.tests.mergeScheduler}" />
+    <writeLockTimeout>1000</writeLockTimeout>
+    <commitLockTimeout>10000</commitLockTimeout>
+    <lockType>single</lockType>
+  </indexConfig>
+</config>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b47eeb2b/solr/core/src/test/org/apache/solr/core/TestBadConfig.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/TestBadConfig.java b/solr/core/src/test/org/apache/solr/core/TestBadConfig.java
index 5d335b6..637c975 100644
--- a/solr/core/src/test/org/apache/solr/core/TestBadConfig.java
+++ b/solr/core/src/test/org/apache/solr/core/TestBadConfig.java
@@ -78,6 +78,8 @@ public class TestBadConfig extends AbstractBadConfigTestBase {
   public void testBogusMergePolicy() throws Exception {
     assertConfigs("bad-mp-solrconfig.xml", "schema-minimal.xml",
                   "DummyMergePolicy");
+    assertConfigs("bad-mpf-solrconfig.xml", "schema-minimal.xml",
+                  "DummyMergePolicyFactory");
   }
 
   public void testSchemaMutableButNotManaged() throws Exception {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b47eeb2b/solr/core/src/test/org/apache/solr/core/TestMergePolicyConfig.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/TestMergePolicyConfig.java b/solr/core/src/test/org/apache/solr/core/TestMergePolicyConfig.java
index 5342477..ffc5211 100644
--- a/solr/core/src/test/org/apache/solr/core/TestMergePolicyConfig.java
+++ b/solr/core/src/test/org/apache/solr/core/TestMergePolicyConfig.java
@@ -27,6 +27,9 @@ import org.apache.lucene.index.LogMergePolicy;
 import org.apache.lucene.index.SegmentReader;
 import org.apache.lucene.index.TieredMergePolicy;
 import org.apache.solr.SolrTestCaseJ4;
+import org.apache.solr.index.LogByteSizeMergePolicyFactory;
+import org.apache.solr.index.LogDocMergePolicyFactory;
+import org.apache.solr.index.MergePolicyFactory;
 import org.apache.solr.search.SolrIndexSearcher;
 import org.apache.solr.update.SolrIndexConfigTest;
 import org.apache.solr.util.RefCounted;
@@ -46,7 +49,7 @@ public class TestMergePolicyConfig extends SolrTestCaseJ4 {
     final boolean useCompoundFile = random().nextBoolean();
     System.setProperty("testSetNoCFSMergePolicyConfig.useCompoundFile", String.valueOf(useCompoundFile));
     try {
-      initCore("solrconfig-mergepolicy-nocfs.xml","schema-minimal.xml");
+      initCore(random().nextBoolean() ? "solrconfig-mergepolicy-nocfs.xml" : "solrconfig-mergepolicyfactory-nocfs.xml","schema-minimal.xml");
       IndexWriterConfig iwc = solrConfig.indexConfig.toIndexWriterConfig(h.getCore());
       assertEquals(useCompoundFile, iwc.getUseCompoundFile());
 
@@ -132,7 +135,26 @@ public class TestMergePolicyConfig extends SolrTestCaseJ4 {
 
     System.setProperty("solr.test.log.merge.policy", mpClass.getName());
 
-    initCore("solrconfig-logmergepolicy.xml","schema-minimal.xml");
+    implTestLogMergePolicyConfig("solrconfig-logmergepolicy.xml", mpClass);
+  }
+
+  public void testLogMergePolicyFactoryConfig() throws Exception {
+
+    final boolean byteSizeMP = random().nextBoolean();
+    final Class<? extends LogMergePolicy> mpClass = byteSizeMP
+        ? LogByteSizeMergePolicy.class : LogDocMergePolicy.class;
+    final Class<? extends MergePolicyFactory> mpfClass = byteSizeMP
+        ? LogByteSizeMergePolicyFactory.class : LogDocMergePolicyFactory.class;
+
+    System.setProperty("solr.test.log.merge.policy.factory", mpfClass.getName());
+
+    implTestLogMergePolicyConfig("solrconfig-logmergepolicyfactory.xml", mpClass);
+  }
+
+  private void implTestLogMergePolicyConfig(String solrConfigFileName,
+      Class<? extends LogMergePolicy> mpClass) throws Exception {
+
+    initCore(solrConfigFileName, "schema-minimal.xml");
     IndexWriterConfig iwc = solrConfig.indexConfig.toIndexWriterConfig(h.getCore());
 
     // verify some props set to -1 get lucene internal defaults
@@ -146,9 +168,7 @@ public class TestMergePolicyConfig extends SolrTestCaseJ4 {
 
     LogMergePolicy logMP = assertAndCast(mpClass, iwc.getMergePolicy());
 
-    // set by legacy <mergeFactor> setting
     assertEquals(11, logMP.getMergeFactor());
-    // set by legacy <maxMergeDocs> setting
     assertEquals(456, logMP.getMaxMergeDocs());
 
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b47eeb2b/solr/core/src/test/org/apache/solr/core/TestSolrIndexConfig.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/TestSolrIndexConfig.java b/solr/core/src/test/org/apache/solr/core/TestSolrIndexConfig.java
index 6416639..978ad0f 100644
--- a/solr/core/src/test/org/apache/solr/core/TestSolrIndexConfig.java
+++ b/solr/core/src/test/org/apache/solr/core/TestSolrIndexConfig.java
@@ -31,7 +31,7 @@ public class TestSolrIndexConfig extends SolrTestCaseJ4 {
 
   @BeforeClass
   public static void beforeClass() throws Exception {
-    initCore("solrconfig-indexconfig.xml","schema.xml");
+    initCore(random().nextBoolean() ? "solrconfig-indexconfig.xml" : "solrconfig-indexconfig-mergepolicyfactory.xml","schema.xml");
   }
 
   public void testLiveWriter() throws Exception {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b47eeb2b/solr/core/src/test/org/apache/solr/index/DummyMergePolicyFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/index/DummyMergePolicyFactory.java b/solr/core/src/test/org/apache/solr/index/DummyMergePolicyFactory.java
new file mode 100644
index 0000000..e8b3d43
--- /dev/null
+++ b/solr/core/src/test/org/apache/solr/index/DummyMergePolicyFactory.java
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+package org.apache.solr.index;
+
+import org.apache.solr.core.SolrResourceLoader;
+
+/**
+ * Dummy implementation of {@link org.apache.solr.index.MergePolicyFactory}
+ * which doesn't have a suitable public constructor and thus is expected to
+ * fail if used within Solr.
+ */
+class DummyMergePolicyFactory extends LogByteSizeMergePolicyFactory {
+
+  private DummyMergePolicyFactory(SolrResourceLoader resourceLoader, MergePolicyFactoryArgs args) {
+    super(resourceLoader, args);
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b47eeb2b/solr/core/src/test/org/apache/solr/update/SolrIndexConfigTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/update/SolrIndexConfigTest.java b/solr/core/src/test/org/apache/solr/update/SolrIndexConfigTest.java
index a51d5fb..b9911e3 100644
--- a/solr/core/src/test/org/apache/solr/update/SolrIndexConfigTest.java
+++ b/solr/core/src/test/org/apache/solr/update/SolrIndexConfigTest.java
@@ -40,7 +40,8 @@ import org.junit.Test;
 public class SolrIndexConfigTest extends SolrTestCaseJ4 {
 
   private static final String solrConfigFileName = "solrconfig.xml";
-  private static final String solrConfigFileNameWarmer = "solrconfig-warmer.xml";
+  private static final String solrConfigFileNameWarmerRandomMergePolicy = "solrconfig-warmer.xml";
+  private static final String solrConfigFileNameWarmerRandomMergePolicyFactory = "solrconfig-warmer-randommergepolicyfactory.xml";
   private static final String solrConfigFileNameTieredMergePolicy = "solrconfig-tieredmergepolicy.xml";
   private static final String solrConfigFileNameTieredMergePolicyFactory = "solrconfig-tieredmergepolicyfactory.xml";
   private static final String schemaFileName = "schema.xml";
@@ -55,7 +56,7 @@ public class SolrIndexConfigTest extends SolrTestCaseJ4 {
   @Test
   public void testFailingSolrIndexConfigCreation() {
     try {
-      SolrConfig solrConfig = new SolrConfig("bad-mp-solrconfig.xml");
+      SolrConfig solrConfig = new SolrConfig(random().nextBoolean() ? "bad-mp-solrconfig.xml" : "bad-mpf-solrconfig.xml");
       SolrIndexConfig solrIndexConfig = new SolrIndexConfig(solrConfig, null, null);
       IndexSchema indexSchema = IndexSchemaFactory.buildIndexSchema(schemaFileName, solrConfig);
       h.getCore().setLatestSchema(indexSchema);
@@ -91,7 +92,7 @@ public class SolrIndexConfigTest extends SolrTestCaseJ4 {
   }
 
   public void testMergedSegmentWarmerIndexConfigCreation() throws Exception {
-    SolrConfig solrConfig = new SolrConfig(instanceDir, solrConfigFileNameWarmer, null);
+    SolrConfig solrConfig = new SolrConfig(instanceDir, random().nextBoolean() ? solrConfigFileNameWarmerRandomMergePolicy : solrConfigFileNameWarmerRandomMergePolicyFactory, null);
     SolrIndexConfig solrIndexConfig = new SolrIndexConfig(solrConfig, null, null);
     assertNotNull(solrIndexConfig);
     assertNotNull(solrIndexConfig.mergedSegmentWarmerInfo);
@@ -104,17 +105,20 @@ public class SolrIndexConfigTest extends SolrTestCaseJ4 {
   }
 
   public void testToMap() throws Exception {
+    final String solrConfigFileNameWarmer = random().nextBoolean() ? solrConfigFileNameWarmerRandomMergePolicy : solrConfigFileNameWarmerRandomMergePolicyFactory;
     final String solrConfigFileNameTMP = random().nextBoolean() ? solrConfigFileNameTieredMergePolicy : solrConfigFileNameTieredMergePolicyFactory;
     final String solrConfigFileName = (random().nextBoolean() ? solrConfigFileNameWarmer : solrConfigFileNameTMP);
     SolrConfig solrConfig = new SolrConfig(instanceDir, solrConfigFileName, null);
     SolrIndexConfig solrIndexConfig = new SolrIndexConfig(solrConfig, null, null);
     assertNotNull(solrIndexConfig);
-    if (solrConfigFileName.equals(solrConfigFileNameTieredMergePolicyFactory)) {
+    if (solrConfigFileName.equals(solrConfigFileNameTieredMergePolicyFactory) ||
+        solrConfigFileName.equals(solrConfigFileNameWarmerRandomMergePolicyFactory)) {
       assertNotNull(solrIndexConfig.mergePolicyFactoryInfo);
     } else {
       assertNotNull(solrIndexConfig.mergePolicyInfo);
     }
-    if (solrConfigFileName.equals(solrConfigFileNameWarmer)) {
+    if (solrConfigFileName.equals(solrConfigFileNameWarmerRandomMergePolicy) ||
+        solrConfigFileName.equals(solrConfigFileNameWarmerRandomMergePolicyFactory)) {
       assertNotNull(solrIndexConfig.mergedSegmentWarmerInfo);
     } else {
       assertNull(solrIndexConfig.mergedSegmentWarmerInfo);
@@ -151,7 +155,8 @@ public class SolrIndexConfigTest extends SolrTestCaseJ4 {
     
     ++mSizeExpected; assertTrue(m.get("mergeScheduler") instanceof Map);
     ++mSizeExpected; assertTrue(m.get("mergePolicy") instanceof Map);
-    if (solrConfigFileName.equals(solrConfigFileNameWarmer)) {
+    if (solrConfigFileName.equals(solrConfigFileNameWarmerRandomMergePolicy) ||
+        solrConfigFileName.equals(solrConfigFileNameWarmerRandomMergePolicyFactory)) {
       ++mSizeExpected; assertTrue(m.get("mergedSegmentWarmer") instanceof Map);
     } else {
       assertNull(m.get("mergedSegmentWarmer"));