diff --git a/TESTING.asciidoc b/TESTING.asciidoc
index b2290a42f48..12396bc4e19 100644
--- a/TESTING.asciidoc
+++ b/TESTING.asciidoc
@@ -62,6 +62,29 @@ Run any test methods that contain 'esi' (like: ...r*esi*ze...).
mvn test "-Dtests.method=*esi*"
-------------------------------
+You can also filter tests by certain annotations ie:
+
+ * `@Slow` - tests that are know to take a long time to execute
+ * `@Nightly` - tests that only run in nightly builds (disabled by default)
+ * `@Integration` - integration tests
+ * `@Backwards` - backwards compatibility tests (disabled by default)
+ * `@AwaitsFix` - tests that are waiting for a bugfix (disabled by default)
+ * `@BadApple` - tests that are known to fail randomly (disabled by default)
+
+Those annotation names can be combined into a filter expression like:
+
+------------------------------------------------
+mvn test -Dtests.filter="@nightly and not @slow"
+------------------------------------------------
+
+to run all nightly test but not the ones that are slow. `tests.filter` supports
+the boolean operators `and, or, not` and grouping ie:
+
+
+---------------------------------------------------------------
+mvn test -Dtests.filter="@nightly and not(@slow or @backwards)"
+---------------------------------------------------------------
+
=== Seed and repetitions.
Run with a given seed (seed is a hex-encoded long).
@@ -184,14 +207,14 @@ To run backwards compatibiilty tests untar or unzip a release and run the tests
with the following command:
---------------------------------------------------------------------------
-mvn test -Dtests.bwc=true -Dtests.bwc.version=x.y.z -Dtests.bwc.path=/path/to/elasticsearch
+mvn test -Dtests.filter="@backwards" -Dtests.bwc.version=x.y.z -Dtests.bwc.path=/path/to/elasticsearch
---------------------------------------------------------------------------
If the elasticsearch release is placed under `./backwards/elasticsearch-x.y.z` the path
can be omitted:
---------------------------------------------------------------------------
-mvn test -Dtests.bwc=true -Dtests.bwc.version=x.y.z
+mvn test -Dtests.filter="@backwards" -Dtests.bwc.version=x.y.z
---------------------------------------------------------------------------
To setup the bwc test environment execute the following steps (provided you are
diff --git a/pom.xml b/pom.xml
index 0c5a190c27e..9287f0348ff 100644
--- a/pom.xml
+++ b/pom.xml
@@ -501,6 +501,7 @@
${tests.network}
${tests.cluster}
${tests.heap.size}
+ ${tests.filter}
${env.ES_TEST_LOCAL}
${es.node.mode}
${es.logger.level}
diff --git a/src/test/java/org/apache/lucene/search/postingshighlight/CustomPassageFormatterTests.java b/src/test/java/org/apache/lucene/search/postingshighlight/CustomPassageFormatterTests.java
index 1bdf4e13978..23995029259 100644
--- a/src/test/java/org/apache/lucene/search/postingshighlight/CustomPassageFormatterTests.java
+++ b/src/test/java/org/apache/lucene/search/postingshighlight/CustomPassageFormatterTests.java
@@ -21,6 +21,7 @@ package org.apache.lucene.search.postingshighlight;
import org.apache.lucene.search.highlight.DefaultEncoder;
import org.apache.lucene.search.highlight.SimpleHTMLEncoder;
import org.apache.lucene.util.BytesRef;
+import org.elasticsearch.test.ElasticsearchTestCase;
import org.junit.Test;
import static org.hamcrest.CoreMatchers.equalTo;
@@ -28,7 +29,7 @@ import static org.hamcrest.CoreMatchers.notNullValue;
import static org.hamcrest.MatcherAssert.assertThat;
-public class CustomPassageFormatterTests {
+public class CustomPassageFormatterTests extends ElasticsearchTestCase {
@Test
public void testSimpleFormat() {
diff --git a/src/test/java/org/apache/lucene/util/AbstractRandomizedTest.java b/src/test/java/org/apache/lucene/util/AbstractRandomizedTest.java
index c934eb624a8..88eaf9baf16 100644
--- a/src/test/java/org/apache/lucene/util/AbstractRandomizedTest.java
+++ b/src/test/java/org/apache/lucene/util/AbstractRandomizedTest.java
@@ -77,12 +77,12 @@ public abstract class AbstractRandomizedTest extends RandomizedTest {
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@TestGroup(enabled = false, sysProperty = TESTS_BACKWARDS_COMPATIBILITY)
- public @interface BackwardsCompatibilityTest {
+ public @interface Backwards {
}
/**
* Key used to set the path for the elasticsearch executable used to run backwards compatibility tests from
- * via the commandline -D{@value #TESTS_BACKWARDS_COMPATIBILITY_PATH}
+ * via the commandline -D{@value #TESTS_BACKWARDS_COMPATIBILITY}
*/
public static final String TESTS_BACKWARDS_COMPATIBILITY = "tests.bwc";
@@ -101,7 +101,7 @@ public abstract class AbstractRandomizedTest extends RandomizedTest {
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@TestGroup(enabled = true, sysProperty = SYSPROP_INTEGRATION)
- public @interface IntegrationTests {
+ public @interface Integration {
}
// --------------------------------------------------------------------
diff --git a/src/test/java/org/elasticsearch/common/lucene/LuceneTest.java b/src/test/java/org/elasticsearch/common/lucene/LuceneTest.java
index 159bc25bee6..7768697c94d 100644
--- a/src/test/java/org/elasticsearch/common/lucene/LuceneTest.java
+++ b/src/test/java/org/elasticsearch/common/lucene/LuceneTest.java
@@ -20,6 +20,7 @@ package org.elasticsearch.common.lucene;
import org.apache.lucene.util.Version;
import org.elasticsearch.common.logging.ESLogger;
import org.elasticsearch.common.logging.ESLoggerFactory;
+import org.elasticsearch.test.ElasticsearchTestCase;
import org.junit.Test;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -28,7 +29,7 @@ import static org.hamcrest.core.IsEqual.equalTo;
/**
*
*/
-public class LuceneTest {
+public class LuceneTest extends ElasticsearchTestCase {
/*
diff --git a/src/test/java/org/elasticsearch/common/util/ArrayUtilsTests.java b/src/test/java/org/elasticsearch/common/util/ArrayUtilsTests.java
index aef86c24949..f85ab890214 100644
--- a/src/test/java/org/elasticsearch/common/util/ArrayUtilsTests.java
+++ b/src/test/java/org/elasticsearch/common/util/ArrayUtilsTests.java
@@ -19,6 +19,7 @@
package org.elasticsearch.common.util;
+import org.elasticsearch.test.ElasticsearchTestCase;
import org.junit.Test;
import java.util.Arrays;
@@ -30,7 +31,7 @@ import static org.hamcrest.Matchers.is;
/**
*
*/
-public class ArrayUtilsTests {
+public class ArrayUtilsTests extends ElasticsearchTestCase {
@Test
public void binarySearch() throws Exception {
diff --git a/src/test/java/org/elasticsearch/index/analysis/PreBuiltCharFilterFactoryFactoryTests.java b/src/test/java/org/elasticsearch/index/analysis/PreBuiltCharFilterFactoryFactoryTests.java
index d7d5f71a460..7643f611641 100644
--- a/src/test/java/org/elasticsearch/index/analysis/PreBuiltCharFilterFactoryFactoryTests.java
+++ b/src/test/java/org/elasticsearch/index/analysis/PreBuiltCharFilterFactoryFactoryTests.java
@@ -22,6 +22,7 @@ import org.elasticsearch.Version;
import org.elasticsearch.cluster.metadata.IndexMetaData;
import org.elasticsearch.common.settings.ImmutableSettings;
import org.elasticsearch.indices.analysis.PreBuiltCharFilters;
+import org.elasticsearch.test.ElasticsearchTestCase;
import org.junit.Test;
import static org.hamcrest.CoreMatchers.*;
@@ -30,7 +31,7 @@ import static org.hamcrest.MatcherAssert.assertThat;
/**
*
*/
-public class PreBuiltCharFilterFactoryFactoryTests {
+public class PreBuiltCharFilterFactoryFactoryTests extends ElasticsearchTestCase {
@Test
public void testThatDifferentVersionsCanBeLoaded() {
diff --git a/src/test/java/org/elasticsearch/index/mapper/lucene/DoubleIndexingDocTest.java b/src/test/java/org/elasticsearch/index/mapper/lucene/DoubleIndexingDocTest.java
index b2f90aa4476..37ac8d13bc0 100644
--- a/src/test/java/org/elasticsearch/index/mapper/lucene/DoubleIndexingDocTest.java
+++ b/src/test/java/org/elasticsearch/index/mapper/lucene/DoubleIndexingDocTest.java
@@ -24,12 +24,15 @@ import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.TopDocs;
+import org.apache.lucene.store.Directory;
import org.apache.lucene.store.RAMDirectory;
import org.elasticsearch.common.lucene.Lucene;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.index.mapper.DocumentMapper;
import org.elasticsearch.index.mapper.ParsedDocument;
import org.elasticsearch.index.mapper.MapperTestUtils;
+import org.elasticsearch.test.ElasticsearchLuceneTestCase;
+import org.elasticsearch.test.ElasticsearchTestCase;
import org.junit.Test;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -38,11 +41,12 @@ import static org.hamcrest.Matchers.equalTo;
/**
*
*/
-public class DoubleIndexingDocTest {
+public class DoubleIndexingDocTest extends ElasticsearchLuceneTestCase {
@Test
public void testDoubleIndexingSameDoc() throws Exception {
- IndexWriter writer = new IndexWriter(new RAMDirectory(), new IndexWriterConfig(Lucene.VERSION, Lucene.STANDARD_ANALYZER));
+ Directory dir = newDirectory();
+ IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(random(), TEST_VERSION_CURRENT, Lucene.STANDARD_ANALYZER));
String mapping = XContentFactory.jsonBuilder().startObject().startObject("type")
.startObject("properties").endObject()
@@ -85,5 +89,8 @@ public class DoubleIndexingDocTest {
topDocs = searcher.search(mapper.mappers().smartName("field5").mapper().termQuery("3", null), 10);
assertThat(topDocs.totalHits, equalTo(2));
+ writer.close();
+ reader.close();
+ dir.close();
}
}
diff --git a/src/test/java/org/elasticsearch/index/mapper/lucene/StoredNumericValuesTest.java b/src/test/java/org/elasticsearch/index/mapper/lucene/StoredNumericValuesTest.java
index 354d9ea352f..ac70e92a054 100644
--- a/src/test/java/org/elasticsearch/index/mapper/lucene/StoredNumericValuesTest.java
+++ b/src/test/java/org/elasticsearch/index/mapper/lucene/StoredNumericValuesTest.java
@@ -33,6 +33,7 @@ import org.elasticsearch.index.fieldvisitor.CustomFieldsVisitor;
import org.elasticsearch.index.mapper.DocumentMapper;
import org.elasticsearch.index.mapper.ParsedDocument;
import org.elasticsearch.index.mapper.MapperTestUtils;
+import org.elasticsearch.test.ElasticsearchTestCase;
import org.junit.Test;
import java.util.*;
@@ -43,7 +44,7 @@ import static org.hamcrest.Matchers.equalTo;
/**
*
*/
-public class StoredNumericValuesTest {
+public class StoredNumericValuesTest extends ElasticsearchTestCase{
@Test
public void testBytesAndNumericRepresentation() throws Exception {
diff --git a/src/test/java/org/elasticsearch/index/merge/policy/MergePolicySettingsTest.java b/src/test/java/org/elasticsearch/index/merge/policy/MergePolicySettingsTest.java
index de3456b7228..e62aca50b1d 100644
--- a/src/test/java/org/elasticsearch/index/merge/policy/MergePolicySettingsTest.java
+++ b/src/test/java/org/elasticsearch/index/merge/policy/MergePolicySettingsTest.java
@@ -28,6 +28,7 @@ import org.elasticsearch.index.store.DirectoryService;
import org.elasticsearch.index.store.Store;
import org.elasticsearch.index.store.distributor.LeastUsedDistributor;
import org.elasticsearch.index.store.ram.RamDirectoryService;
+import org.elasticsearch.test.ElasticsearchTestCase;
import org.junit.Test;
import java.io.IOException;
@@ -35,8 +36,9 @@ import java.io.IOException;
import static org.elasticsearch.common.settings.ImmutableSettings.Builder.EMPTY_SETTINGS;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.is;
-public class MergePolicySettingsTest {
+public class MergePolicySettingsTest extends ElasticsearchTestCase {
protected final ShardId shardId = new ShardId(new Index("index"), 1);
@@ -87,19 +89,19 @@ public class MergePolicySettingsTest {
IndexSettingsService service = new IndexSettingsService(new Index("test"), EMPTY_SETTINGS);
try {
new LogDocMergePolicyProvider(createStore(build(-0.1)), service).newMergePolicy().getNoCFSRatio();
- assertThat("exception expected", false);
+ fail("exception expected");
} catch (ElasticsearchIllegalArgumentException ex) {
}
try {
new LogDocMergePolicyProvider(createStore(build(1.1)), service).newMergePolicy().getNoCFSRatio();
- assertThat("exception expected", false);
+ fail("exception expected");
} catch (ElasticsearchIllegalArgumentException ex) {
}
try {
new LogDocMergePolicyProvider(createStore(build("Falsch")), service).newMergePolicy().getNoCFSRatio();
- assertThat("exception expected", false);
+ fail("exception expected");
} catch (ElasticsearchIllegalArgumentException ex) {
}
diff --git a/src/test/java/org/elasticsearch/search/aggregations/support/PathTests.java b/src/test/java/org/elasticsearch/search/aggregations/support/PathTests.java
index a1fd529dfb6..26b485bc1f7 100644
--- a/src/test/java/org/elasticsearch/search/aggregations/support/PathTests.java
+++ b/src/test/java/org/elasticsearch/search/aggregations/support/PathTests.java
@@ -20,6 +20,7 @@
package org.elasticsearch.search.aggregations.support;
import org.elasticsearch.search.aggregations.AggregationExecutionException;
+import org.elasticsearch.test.ElasticsearchTestCase;
import org.junit.Test;
import java.util.ArrayList;
@@ -32,7 +33,7 @@ import static org.junit.Assert.fail;
/**
*
*/
-public class PathTests {
+public class PathTests extends ElasticsearchTestCase {
@Test
public void testInvalidPaths() throws Exception {
diff --git a/src/test/java/org/elasticsearch/snapshots/SnapshotUtilsTests.java b/src/test/java/org/elasticsearch/snapshots/SnapshotUtilsTests.java
index 54753334b3a..8304028f2bc 100644
--- a/src/test/java/org/elasticsearch/snapshots/SnapshotUtilsTests.java
+++ b/src/test/java/org/elasticsearch/snapshots/SnapshotUtilsTests.java
@@ -20,6 +20,7 @@ package org.elasticsearch.snapshots;
import com.google.common.collect.ImmutableList;
import org.elasticsearch.action.support.IndicesOptions;
+import org.elasticsearch.test.ElasticsearchTestCase;
import org.junit.Test;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -27,7 +28,7 @@ import static org.hamcrest.Matchers.containsInAnyOrder;
/**
*/
-public class SnapshotUtilsTests {
+public class SnapshotUtilsTests extends ElasticsearchTestCase {
@Test
public void testIndexNameFiltering() {
assertIndexNameFiltering(new String[]{"foo", "bar", "baz"}, new String[]{}, new String[]{"foo", "bar", "baz"});
diff --git a/src/test/java/org/elasticsearch/test/ElasticsearchBackwardsCompatIntegrationTest.java b/src/test/java/org/elasticsearch/test/ElasticsearchBackwardsCompatIntegrationTest.java
index d290b03616a..94772ca7276 100644
--- a/src/test/java/org/elasticsearch/test/ElasticsearchBackwardsCompatIntegrationTest.java
+++ b/src/test/java/org/elasticsearch/test/ElasticsearchBackwardsCompatIntegrationTest.java
@@ -18,6 +18,7 @@
*/
package org.elasticsearch.test;
+import org.apache.lucene.util.AbstractRandomizedTest;
import org.elasticsearch.common.settings.ImmutableSettings;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.discovery.DiscoveryModule;
@@ -43,12 +44,12 @@ import java.io.IOException;
*
* Note: this base class is still experimental and might have bugs or leave external processes running behind.
*
- * Backwards compatibility tests are disabled by default via {@link BackwardsCompatibilityTest} annotation.
+ * Backwards compatibility tests are disabled by default via {@link org.apache.lucene.util.AbstractRandomizedTest.Backwards} annotation.
* The following system variables control the test execution:
*
* -
* {@value #TESTS_BACKWARDS_COMPATIBILITY} enables / disables
- * tests annotated with {@link BackwardsCompatibilityTest} (defaults to
+ * tests annotated with {@link org.apache.lucene.util.AbstractRandomizedTest.Backwards} (defaults to
* false)
*
* -
@@ -66,7 +67,7 @@ import java.io.IOException;
*
*/
// the transportClientRatio is tricky here since we don't fully control the cluster nodes
-@ElasticsearchBackwardsCompatIntegrationTest.BackwardsCompatibilityTest
+@AbstractRandomizedTest.Backwards
@ElasticsearchIntegrationTest.ClusterScope(minNumDataNodes = 0, maxNumDataNodes = 2, scope = ElasticsearchIntegrationTest.Scope.SUITE, numClientNodes = 0, transportClientRatio = 0.0)
@Ignore
public abstract class ElasticsearchBackwardsCompatIntegrationTest extends ElasticsearchIntegrationTest {
diff --git a/src/test/java/org/elasticsearch/test/ElasticsearchIntegrationTest.java b/src/test/java/org/elasticsearch/test/ElasticsearchIntegrationTest.java
index b09eef5d437..9b101322493 100644
--- a/src/test/java/org/elasticsearch/test/ElasticsearchIntegrationTest.java
+++ b/src/test/java/org/elasticsearch/test/ElasticsearchIntegrationTest.java
@@ -168,7 +168,7 @@ import static org.hamcrest.Matchers.equalTo;
*
*/
@Ignore
-@AbstractRandomizedTest.IntegrationTests
+@AbstractRandomizedTest.Integration
public abstract class ElasticsearchIntegrationTest extends ElasticsearchTestCase {
private static TestCluster GLOBAL_CLUSTER;
/**