diff --git a/pom.xml b/pom.xml index 19ddf997057..8a757e67d37 100644 --- a/pom.xml +++ b/pom.xml @@ -427,6 +427,7 @@ ${tests.integration} ${tests.cluster_seed} ${tests.client.ratio} + ${tests.enable_mock_modules} ${tests.rest} ${tests.rest.suite} ${tests.rest.spec} diff --git a/src/test/java/org/elasticsearch/test/ElasticsearchIntegrationTest.java b/src/test/java/org/elasticsearch/test/ElasticsearchIntegrationTest.java index 7e573404a07..f2bb75dff79 100644 --- a/src/test/java/org/elasticsearch/test/ElasticsearchIntegrationTest.java +++ b/src/test/java/org/elasticsearch/test/ElasticsearchIntegrationTest.java @@ -125,6 +125,8 @@ import static org.hamcrest.Matchers.equalTo; * *

diff --git a/src/test/java/org/elasticsearch/test/TestCluster.java b/src/test/java/org/elasticsearch/test/TestCluster.java index 8a9248b52b5..15092378d4d 100644 --- a/src/test/java/org/elasticsearch/test/TestCluster.java +++ b/src/test/java/org/elasticsearch/test/TestCluster.java @@ -62,7 +62,10 @@ import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; +import static com.carrotsearch.randomizedtesting.RandomizedTest.systemPropertyAsBoolean; import static com.google.common.collect.Maps.newTreeMap; +import static org.apache.lucene.util.LuceneTestCase.rarely; +import static org.apache.lucene.util.LuceneTestCase.usually; import static org.elasticsearch.common.settings.ImmutableSettings.settingsBuilder; import static org.elasticsearch.node.NodeBuilder.nodeBuilder; @@ -91,6 +94,13 @@ public final class TestCluster implements Iterable { */ public static final String TESTS_CLUSTER_SEED = "tests.cluster_seed"; + /** + * Key used to set the shared cluster random seed via the commandline -D{@value #TESTS_CLUSTER_SEED} + */ + public static final String TESTS_ENABLE_MOCK_MODULES = "tests.enable_mock_modules"; + + private static final boolean ENABLE_MOCK_MODULES = systemPropertyAsBoolean(TESTS_ENABLE_MOCK_MODULES, true); + private static long clusterSeed() { String property = System.getProperty(TESTS_CLUSTER_SEED); if (!Strings.hasLength(property)) { @@ -191,18 +201,19 @@ public final class TestCluster implements Iterable { Builder builder = ImmutableSettings.settingsBuilder() /* use RAM directories in 10% of the runs */ //.put("index.store.type", random.nextInt(10) == 0 ? MockRamIndexStoreModule.class.getName() : MockFSIndexStoreModule.class.getName()) - // TODO we should run without those mock modules once in a while to make sure we don't hide any bugs in the actual impl. - .put("index.store.type", MockFSIndexStoreModule.class.getName()) // no RAM dir for now! - .put(IndexEngineModule.EngineSettings.ENGINE_TYPE, MockEngineModule.class.getName()) .put("cluster.name", clusterName) // decrease the routing schedule so new nodes will be added quickly - some random value between 30 and 80 ms .put("cluster.routing.schedule", (30 + random.nextInt(50)) + "ms") // default to non gateway .put("gateway.type", "none"); + if (ENABLE_MOCK_MODULES && usually(random)) { + builder.put("index.store.type", MockFSIndexStoreModule.class.getName()); // no RAM dir for now! + builder.put(IndexEngineModule.EngineSettings.ENGINE_TYPE, MockEngineModule.class.getName()); + } if (isLocalTransportConfigured()) { builder.put(TransportModule.TRANSPORT_TYPE_KEY, AssertingLocalTransportModule.class.getName()); } else { - builder.put(Transport.TransportSettings.TRANSPORT_TCP_COMPRESS, random.nextInt(10) == 0); + builder.put(Transport.TransportSettings.TRANSPORT_TCP_COMPRESS, rarely(random)); } builder.put("type", RandomPicks.randomFrom(random, CacheRecycler.Type.values())); return builder.build(); diff --git a/src/test/java/org/elasticsearch/test/junit/listeners/ReproduceInfoPrinter.java b/src/test/java/org/elasticsearch/test/junit/listeners/ReproduceInfoPrinter.java index 56f2c231fc2..daefbfab208 100644 --- a/src/test/java/org/elasticsearch/test/junit/listeners/ReproduceInfoPrinter.java +++ b/src/test/java/org/elasticsearch/test/junit/listeners/ReproduceInfoPrinter.java @@ -9,6 +9,7 @@ import org.elasticsearch.common.logging.ESLogger; import org.elasticsearch.common.logging.Loggers; import org.elasticsearch.test.ElasticsearchIntegrationTest; import org.elasticsearch.test.ElasticsearchTestCase; +import org.elasticsearch.test.TestCluster; import org.junit.internal.AssumptionViolatedException; import org.junit.runner.Description; import org.junit.runner.notification.Failure; @@ -111,7 +112,7 @@ public class ReproduceInfoPrinter extends RunListener { } public ReproduceErrorMessageBuilder appendESProperties() { - appendProperties("es.logger.level", "es.node.mode", "es.node.local"); + appendProperties("es.logger.level", "es.node.mode", "es.node.local", TestCluster.TESTS_ENABLE_MOCK_MODULES); if (System.getProperty("tests.jvm.argline") != null && !System.getProperty("tests.jvm.argline").isEmpty()) { appendOpt("tests.jvm.argline", "\"" + System.getProperty("tests.jvm.argline") + "\"");