From a36827cbc0bded3d59d937565ae91be6f825db1f Mon Sep 17 00:00:00 2001 From: David Pilato Date: Wed, 15 Jan 2014 12:46:37 +0100 Subject: [PATCH] Move tests to elasticsearch test framework Closes #10. --- pom.xml | 112 ++++++++++- .../JavaScriptScriptEngineTests.java | 14 +- .../JavaScriptScriptMultiThreadedTest.java | 11 +- .../JavaScriptScriptSearchTests.java | 175 +++++++----------- 4 files changed, 182 insertions(+), 130 deletions(-) diff --git a/pom.xml b/pom.xml index ed2635e7cfa3e..f99c33a40ece1 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,13 @@ - 0.90.1 + 0.90.10 + 4.6.0 + 1 + true + onerror + + INFO @@ -42,6 +48,13 @@ + + org.apache.lucene + lucene-test-framework + ${lucene.version} + test + + org.elasticsearch elasticsearch @@ -65,9 +78,10 @@ - org.testng - testng - 6.3.1 + org.elasticsearch + elasticsearch + ${elasticsearch.version} + test-jar test @@ -98,13 +112,95 @@ + com.carrotsearch.randomizedtesting + junit4-maven-plugin + 2.0.12 + + + tests + test + + junit4 + + + 20 + pipe,warn + true + + + + + + + + + ${tests.jvms} + + + + + + + **/*Tests.class + **/*Test.class + + + **/Abstract*.class + **/*StressTest.class + + + -Xmx512m + -XX:MaxDirectMemorySize=512m + -Des.logger.prefix= + + ${tests.shuffle} + ${tests.verbose} + ${tests.seed} + ${tests.failfast} + + + ${tests.iters} + ${tests.maxfailures} + ${tests.failfast} + ${tests.class} + ${tests.method} + ${tests.nightly} + ${tests.badapples} + ${tests.weekly} + ${tests.slow} + ${tests.awaitsfix} + ${tests.slow} + ${tests.timeoutSuite} + ${tests.showSuccess} + ${tests.integration} + ${tests.cluster_seed} + ${tests.client.ratio} + ${env.ES_TEST_LOCAL} + ${es.node.mode} + ${es.logger.level} + true + + + + + + + org.apache.maven.plugins maven-surefire-plugin - 2.11 + 2.15 - - **/*Tests.java - + true diff --git a/src/test/java/org/elasticsearch/script/javascript/JavaScriptScriptEngineTests.java b/src/test/java/org/elasticsearch/script/javascript/JavaScriptScriptEngineTests.java index bd78b0ded4e88..e343de9159b25 100644 --- a/src/test/java/org/elasticsearch/script/javascript/JavaScriptScriptEngineTests.java +++ b/src/test/java/org/elasticsearch/script/javascript/JavaScriptScriptEngineTests.java @@ -23,31 +23,31 @@ import org.elasticsearch.common.collect.MapBuilder; import org.elasticsearch.common.settings.ImmutableSettings; import org.elasticsearch.script.ExecutableScript; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; +import org.elasticsearch.test.ElasticsearchTestCase; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; import java.util.HashMap; import java.util.List; import java.util.Map; -import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.instanceOf; /** * */ -public class JavaScriptScriptEngineTests { +public class JavaScriptScriptEngineTests extends ElasticsearchTestCase { private JavaScriptScriptEngineService se; - @BeforeClass + @Before public void setup() { se = new JavaScriptScriptEngineService(ImmutableSettings.Builder.EMPTY_SETTINGS); } - @AfterClass + @After public void close() { se.close(); } diff --git a/src/test/java/org/elasticsearch/script/javascript/JavaScriptScriptMultiThreadedTest.java b/src/test/java/org/elasticsearch/script/javascript/JavaScriptScriptMultiThreadedTest.java index 14d635dd859a4..26eab2091ce7b 100644 --- a/src/test/java/org/elasticsearch/script/javascript/JavaScriptScriptMultiThreadedTest.java +++ b/src/test/java/org/elasticsearch/script/javascript/JavaScriptScriptMultiThreadedTest.java @@ -19,12 +19,11 @@ package org.elasticsearch.script.javascript; -import org.elasticsearch.common.logging.ESLogger; -import org.elasticsearch.common.logging.Loggers; import org.elasticsearch.common.settings.ImmutableSettings; import org.elasticsearch.common.util.concurrent.jsr166y.ThreadLocalRandom; import org.elasticsearch.script.ExecutableScript; -import org.testng.annotations.Test; +import org.elasticsearch.test.ElasticsearchTestCase; +import org.junit.Test; import java.util.HashMap; import java.util.Map; @@ -32,16 +31,12 @@ import java.util.concurrent.CyclicBarrier; import java.util.concurrent.atomic.AtomicBoolean; -import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; /** * */ -@Test -public class JavaScriptScriptMultiThreadedTest { - - protected final ESLogger logger = Loggers.getLogger(getClass()); +public class JavaScriptScriptMultiThreadedTest extends ElasticsearchTestCase { @Test public void testExecutableNoRuntimeParams() throws Exception { diff --git a/src/test/java/org/elasticsearch/script/javascript/JavaScriptScriptSearchTests.java b/src/test/java/org/elasticsearch/script/javascript/JavaScriptScriptSearchTests.java index 18091f988418d..68e6a5c7af403 100644 --- a/src/test/java/org/elasticsearch/script/javascript/JavaScriptScriptSearchTests.java +++ b/src/test/java/org/elasticsearch/script/javascript/JavaScriptScriptSearchTests.java @@ -21,74 +21,39 @@ import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchType; -import org.elasticsearch.client.Client; -import org.elasticsearch.common.logging.ESLogger; -import org.elasticsearch.common.logging.Loggers; -import org.elasticsearch.common.network.NetworkUtils; -import org.elasticsearch.common.settings.ImmutableSettings; -import org.elasticsearch.node.Node; -import org.elasticsearch.node.NodeBuilder; import org.elasticsearch.search.sort.SortOrder; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; +import org.elasticsearch.test.ElasticsearchIntegrationTest; +import org.junit.Test; +import java.util.Arrays; import java.util.List; import java.util.Map; -import static org.elasticsearch.client.Requests.*; +import static org.elasticsearch.client.Requests.searchRequest; import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder; import static org.elasticsearch.index.query.FilterBuilders.scriptFilter; import static org.elasticsearch.index.query.QueryBuilders.*; import static org.elasticsearch.search.builder.SearchSourceBuilder.searchSource; -import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; /** * */ -@Test -public class JavaScriptScriptSearchTests { - - protected final ESLogger logger = Loggers.getLogger(getClass()); - - private Node node; - - private Client client; - - @BeforeMethod - public void createNodes() throws Exception { - node = NodeBuilder.nodeBuilder().settings(ImmutableSettings.settingsBuilder() - .put("cluster.name", "test-cluster-" + NetworkUtils.getLocalAddress()) - .put("gateway.type", "none") - .put("number_of_shards", 1)).node(); - client = node.client(); - } - - @AfterMethod - public void closeNodes() { - client.close(); - node.close(); - } +public class JavaScriptScriptSearchTests extends ElasticsearchIntegrationTest { @Test public void testJavaScriptFilter() throws Exception { - client.admin().indices().prepareCreate("test").execute().actionGet(); - client.prepareIndex("test", "type1", "1") - .setSource(jsonBuilder().startObject().field("test", "value beck").field("num1", 1.0f).endObject()) - .execute().actionGet(); - client.admin().indices().prepareFlush().execute().actionGet(); - client.prepareIndex("test", "type1", "2") - .setSource(jsonBuilder().startObject().field("test", "value beck").field("num1", 2.0f).endObject()) - .execute().actionGet(); - client.admin().indices().prepareFlush().execute().actionGet(); - client.prepareIndex("test", "type1", "3") - .setSource(jsonBuilder().startObject().field("test", "value beck").field("num1", 3.0f).endObject()) - .execute().actionGet(); - client.admin().indices().refresh(refreshRequest()).actionGet(); - - logger.info("running doc['num1'].value > 1"); - SearchResponse response = client.prepareSearch() + wipeIndices("test"); + createIndex("test"); + index("test", "type1", "1", jsonBuilder().startObject().field("test", "value beck").field("num1", 1.0f).endObject()); + flush(); + index("test", "type1", "2", jsonBuilder().startObject().field("test", "value beck").field("num1", 2.0f).endObject()); + flush(); + index("test", "type1", "3", jsonBuilder().startObject().field("test", "value beck").field("num1", 3.0f).endObject()); + refresh(); + + logger.info(" --> running doc['num1'].value > 1"); + SearchResponse response = client().prepareSearch() .setQuery(filteredQuery(matchAllQuery(), scriptFilter("doc['num1'].value > 1").lang("js"))) .addSort("num1", SortOrder.ASC) .addScriptField("sNum1", "js", "doc['num1'].value", null) @@ -100,8 +65,8 @@ public void testJavaScriptFilter() throws Exception { assertThat(response.getHits().getAt(1).id(), equalTo("3")); assertThat((Double) response.getHits().getAt(1).fields().get("sNum1").values().get(0), equalTo(3.0)); - logger.info("running doc['num1'].value > param1"); - response = client.prepareSearch() + logger.info(" --> running doc['num1'].value > param1"); + response = client().prepareSearch() .setQuery(filteredQuery(matchAllQuery(), scriptFilter("doc['num1'].value > param1").lang("js").addParam("param1", 2))) .addSort("num1", SortOrder.ASC) .addScriptField("sNum1", "js", "doc['num1'].value", null) @@ -111,8 +76,8 @@ public void testJavaScriptFilter() throws Exception { assertThat(response.getHits().getAt(0).id(), equalTo("3")); assertThat((Double) response.getHits().getAt(0).fields().get("sNum1").values().get(0), equalTo(3.0)); - logger.info("running doc['num1'].value > param1"); - response = client.prepareSearch() + logger.info(" --> running doc['num1'].value > param1"); + response = client().prepareSearch() .setQuery(filteredQuery(matchAllQuery(), scriptFilter("doc['num1'].value > param1").lang("js").addParam("param1", -1))) .addSort("num1", SortOrder.ASC) .addScriptField("sNum1", "js", "doc['num1'].value", null) @@ -129,16 +94,16 @@ public void testJavaScriptFilter() throws Exception { @Test public void testScriptFieldUsingSource() throws Exception { - client.admin().indices().prepareCreate("test").execute().actionGet(); - client.prepareIndex("test", "type1", "1") - .setSource(jsonBuilder().startObject() + wipeIndices("test"); + createIndex("test"); + index("test", "type1", "1", + jsonBuilder().startObject() .startObject("obj1").field("test", "something").endObject() .startObject("obj2").startArray("arr2").value("arr_value1").value("arr_value2").endArray().endObject() - .endObject()) - .execute().actionGet(); - client.admin().indices().refresh(refreshRequest()).actionGet(); + .endObject()); + refresh(); - SearchResponse response = client.prepareSearch() + SearchResponse response = client().prepareSearch() .setQuery(matchAllQuery()) .addField("_source.obj1") // we also automatically detect _source in fields .addScriptField("s_obj1", "js", "_source.obj1", null) @@ -169,99 +134,95 @@ public void testScriptFieldUsingSource() throws Exception { @Test public void testCustomScriptBoost() throws Exception { - // execute a search before we create an index - try { - client.prepareSearch().setQuery(termQuery("test", "value")).execute().actionGet(); - assert false : "should fail"; - } catch (Exception e) { - // ignore, no indices - } - - try { - client.prepareSearch("test").setQuery(termQuery("test", "value")).execute().actionGet(); - assert false : "should fail"; - } catch (Exception e) { - // ignore, no indices - } - - client.admin().indices().create(createIndexRequest("test")).actionGet(); - client.index(indexRequest("test").type("type1").id("1") - .source(jsonBuilder().startObject().field("test", "value beck").field("num1", 1.0f).endObject())).actionGet(); - client.index(indexRequest("test").type("type1").id("2") - .source(jsonBuilder().startObject().field("test", "value check").field("num1", 2.0f).endObject())).actionGet(); - client.admin().indices().refresh(refreshRequest()).actionGet(); + wipeIndices("test"); + createIndex("test"); + index("test", "type1", "1", jsonBuilder().startObject().field("test", "value beck").field("num1", 1.0f).endObject()); + index("test", "type1", "2", jsonBuilder().startObject().field("test", "value beck").field("num1", 2.0f).endObject()); + refresh(); logger.info("--- QUERY_THEN_FETCH"); - logger.info("running doc['num1'].value"); - SearchResponse response = client.search(searchRequest() + logger.info(" --> running doc['num1'].value"); + SearchResponse response = client().search(searchRequest() .searchType(SearchType.QUERY_THEN_FETCH) .source(searchSource().explain(true).query(customScoreQuery(termQuery("test", "value")).script("doc['num1'].value").lang("js"))) ).actionGet(); + assertThat("Failures " + Arrays.toString(response.getShardFailures()), response.getShardFailures().length, equalTo(0)); + assertThat(response.getHits().totalHits(), equalTo(2l)); - logger.info("Hit[0] {} Explanation {}", response.getHits().getAt(0).id(), response.getHits().getAt(0).explanation()); - logger.info("Hit[1] {} Explanation {}", response.getHits().getAt(1).id(), response.getHits().getAt(1).explanation()); + logger.info(" --> Hit[0] {} Explanation {}", response.getHits().getAt(0).id(), response.getHits().getAt(0).explanation()); + logger.info(" --> Hit[1] {} Explanation {}", response.getHits().getAt(1).id(), response.getHits().getAt(1).explanation()); assertThat(response.getHits().getAt(0).id(), equalTo("2")); assertThat(response.getHits().getAt(1).id(), equalTo("1")); - logger.info("running -doc['num1'].value"); - response = client.search(searchRequest() + logger.info(" --> running -doc['num1'].value"); + response = client().search(searchRequest() .searchType(SearchType.QUERY_THEN_FETCH) .source(searchSource().explain(true).query(customScoreQuery(termQuery("test", "value")).script("-doc['num1'].value").lang("js"))) ).actionGet(); + assertThat("Failures " + Arrays.toString(response.getShardFailures()), response.getShardFailures().length, equalTo(0)); + assertThat(response.getHits().totalHits(), equalTo(2l)); - logger.info("Hit[0] {} Explanation {}", response.getHits().getAt(0).id(), response.getHits().getAt(0).explanation()); - logger.info("Hit[1] {} Explanation {}", response.getHits().getAt(1).id(), response.getHits().getAt(1).explanation()); + logger.info(" --> Hit[0] {} Explanation {}", response.getHits().getAt(0).id(), response.getHits().getAt(0).explanation()); + logger.info(" --> Hit[1] {} Explanation {}", response.getHits().getAt(1).id(), response.getHits().getAt(1).explanation()); assertThat(response.getHits().getAt(0).id(), equalTo("1")); assertThat(response.getHits().getAt(1).id(), equalTo("2")); - logger.info("running pow(doc['num1'].value, 2)"); - response = client.search(searchRequest() + logger.info(" --> running pow(doc['num1'].value, 2)"); + response = client().search(searchRequest() .searchType(SearchType.QUERY_THEN_FETCH) .source(searchSource().explain(true).query(customScoreQuery(termQuery("test", "value")).script("Math.pow(doc['num1'].value, 2)").lang("js"))) ).actionGet(); + assertThat("Failures " + Arrays.toString(response.getShardFailures()), response.getShardFailures().length, equalTo(0)); + assertThat(response.getHits().totalHits(), equalTo(2l)); - logger.info("Hit[0] {} Explanation {}", response.getHits().getAt(0).id(), response.getHits().getAt(0).explanation()); - logger.info("Hit[1] {} Explanation {}", response.getHits().getAt(1).id(), response.getHits().getAt(1).explanation()); + logger.info(" --> Hit[0] {} Explanation {}", response.getHits().getAt(0).id(), response.getHits().getAt(0).explanation()); + logger.info(" --> Hit[1] {} Explanation {}", response.getHits().getAt(1).id(), response.getHits().getAt(1).explanation()); assertThat(response.getHits().getAt(0).id(), equalTo("2")); assertThat(response.getHits().getAt(1).id(), equalTo("1")); - logger.info("running max(doc['num1'].value, 1)"); - response = client.search(searchRequest() + logger.info(" --> running max(doc['num1'].value, 1)"); + response = client().search(searchRequest() .searchType(SearchType.QUERY_THEN_FETCH) .source(searchSource().explain(true).query(customScoreQuery(termQuery("test", "value")).script("Math.max(doc['num1'].value, 1)").lang("js"))) ).actionGet(); + assertThat("Failures " + Arrays.toString(response.getShardFailures()), response.getShardFailures().length, equalTo(0)); + assertThat(response.getHits().totalHits(), equalTo(2l)); - logger.info("Hit[0] {} Explanation {}", response.getHits().getAt(0).id(), response.getHits().getAt(0).explanation()); - logger.info("Hit[1] {} Explanation {}", response.getHits().getAt(1).id(), response.getHits().getAt(1).explanation()); + logger.info(" --> Hit[0] {} Explanation {}", response.getHits().getAt(0).id(), response.getHits().getAt(0).explanation()); + logger.info(" --> Hit[1] {} Explanation {}", response.getHits().getAt(1).id(), response.getHits().getAt(1).explanation()); assertThat(response.getHits().getAt(0).id(), equalTo("2")); assertThat(response.getHits().getAt(1).id(), equalTo("1")); - logger.info("running doc['num1'].value * _score"); - response = client.search(searchRequest() + logger.info(" --> running doc['num1'].value * _score"); + response = client().search(searchRequest() .searchType(SearchType.QUERY_THEN_FETCH) .source(searchSource().explain(true).query(customScoreQuery(termQuery("test", "value")).script("doc['num1'].value * _score").lang("js"))) ).actionGet(); + assertThat("Failures " + Arrays.toString(response.getShardFailures()), response.getShardFailures().length, equalTo(0)); + assertThat(response.getHits().totalHits(), equalTo(2l)); - logger.info("Hit[0] {} Explanation {}", response.getHits().getAt(0).id(), response.getHits().getAt(0).explanation()); - logger.info("Hit[1] {} Explanation {}", response.getHits().getAt(1).id(), response.getHits().getAt(1).explanation()); + logger.info(" --> Hit[0] {} Explanation {}", response.getHits().getAt(0).id(), response.getHits().getAt(0).explanation()); + logger.info(" --> Hit[1] {} Explanation {}", response.getHits().getAt(1).id(), response.getHits().getAt(1).explanation()); assertThat(response.getHits().getAt(0).id(), equalTo("2")); assertThat(response.getHits().getAt(1).id(), equalTo("1")); - logger.info("running param1 * param2 * _score"); - response = client.search(searchRequest() + logger.info(" --> running param1 * param2 * _score"); + response = client().search(searchRequest() .searchType(SearchType.QUERY_THEN_FETCH) .source(searchSource().explain(true).query(customScoreQuery(termQuery("test", "value")).script("param1 * param2 * _score").param("param1", 2).param("param2", 2).lang("js"))) ).actionGet(); + assertThat("Failures " + Arrays.toString(response.getShardFailures()), response.getShardFailures().length, equalTo(0)); + assertThat(response.getHits().totalHits(), equalTo(2l)); - logger.info("Hit[0] {} Explanation {}", response.getHits().getAt(0).id(), response.getHits().getAt(0).explanation()); - logger.info("Hit[1] {} Explanation {}", response.getHits().getAt(1).id(), response.getHits().getAt(1).explanation()); + logger.info(" --> Hit[0] {} Explanation {}", response.getHits().getAt(0).id(), response.getHits().getAt(0).explanation()); + logger.info(" --> Hit[1] {} Explanation {}", response.getHits().getAt(1).id(), response.getHits().getAt(1).explanation()); } }