From dc858d20087870a5081ebf3dbdd481eea92ba495 Mon Sep 17 00:00:00 2001 From: Martijn van Groningen Date: Wed, 30 Sep 2015 21:48:17 +0200 Subject: [PATCH] test: fixed some messy tests --- .../percolator/PercolatorIT.java | 34 ++---- .../script/MockScriptEngine.java | 44 ++++++- .../aggregations/metrics/TopHitsIT.java | 20 ++-- .../search/child/ChildQuerySearchIT.java | 27 ++--- .../search/innerhits/InnerHitsIT.java | 21 ++-- .../search/nested/SimpleNestedIT.java | 110 +----------------- 6 files changed, 91 insertions(+), 165 deletions(-) rename plugins/lang-groovy/src/test/java/org/elasticsearch/messy/tests/PercolatorTests.java => core/src/test/java/org/elasticsearch/percolator/PercolatorIT.java (98%) rename plugins/lang-groovy/src/test/java/org/elasticsearch/messy/tests/TopHitsTests.java => core/src/test/java/org/elasticsearch/search/aggregations/metrics/TopHitsIT.java (98%) rename plugins/lang-groovy/src/test/java/org/elasticsearch/messy/tests/ChildQuerySearchTests.java => core/src/test/java/org/elasticsearch/search/child/ChildQuerySearchIT.java (99%) rename plugins/lang-groovy/src/test/java/org/elasticsearch/messy/tests/InnerHitsTests.java => core/src/test/java/org/elasticsearch/search/innerhits/InnerHitsIT.java (98%) rename plugins/lang-groovy/src/test/java/org/elasticsearch/messy/tests/SimpleNestedTests.java => core/src/test/java/org/elasticsearch/search/nested/SimpleNestedIT.java (89%) diff --git a/plugins/lang-groovy/src/test/java/org/elasticsearch/messy/tests/PercolatorTests.java b/core/src/test/java/org/elasticsearch/percolator/PercolatorIT.java similarity index 98% rename from plugins/lang-groovy/src/test/java/org/elasticsearch/messy/tests/PercolatorTests.java rename to core/src/test/java/org/elasticsearch/percolator/PercolatorIT.java index 72db43f83ff..4cde86a6677 100644 --- a/plugins/lang-groovy/src/test/java/org/elasticsearch/messy/tests/PercolatorTests.java +++ b/core/src/test/java/org/elasticsearch/percolator/PercolatorIT.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.elasticsearch.messy.tests; +package org.elasticsearch.percolator; import org.apache.lucene.search.join.ScoreMode; import org.elasticsearch.action.ShardOperationFailedException; @@ -32,7 +32,6 @@ import org.elasticsearch.action.percolate.PercolateSourceBuilder; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.support.IndicesOptions; import org.elasticsearch.client.Requests; -import org.elasticsearch.common.Strings; import org.elasticsearch.common.lucene.search.function.CombineFunction; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.settings.Settings.Builder; @@ -47,11 +46,7 @@ import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.query.QueryShardException; import org.elasticsearch.index.query.functionscore.weight.WeightBuilder; import org.elasticsearch.index.query.support.QueryInnerHits; -import org.elasticsearch.percolator.PercolatorService; -import org.elasticsearch.plugins.Plugin; import org.elasticsearch.rest.RestStatus; -import org.elasticsearch.script.Script; -import org.elasticsearch.script.groovy.GroovyPlugin; import org.elasticsearch.search.highlight.HighlightBuilder; import org.elasticsearch.search.sort.SortBuilders; import org.elasticsearch.test.ESIntegTestCase; @@ -65,21 +60,16 @@ import static org.elasticsearch.common.settings.Settings.builder; import static org.elasticsearch.common.settings.Settings.settingsBuilder; import static org.elasticsearch.common.xcontent.XContentFactory.*; import static org.elasticsearch.index.query.QueryBuilders.*; -import static org.elasticsearch.index.query.functionscore.ScoreFunctionBuilders.scriptFunction; -import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.*; +import static org.elasticsearch.index.query.functionscore.ScoreFunctionBuilders.fieldValueFactorFunction; import static org.elasticsearch.percolator.PercolatorTestUtil.convertFromTextArray; +import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.*; import static org.hamcrest.Matchers.*; /** * */ -public class PercolatorTests extends ESIntegTestCase { +public class PercolatorIT extends ESIntegTestCase { - @Override - protected Collection> nodePlugins() { - return Collections.singleton(GroovyPlugin.class); - } - @Test public void testSimple1() throws Exception { client().admin().indices().prepareCreate("test").execute().actionGet(); @@ -1183,7 +1173,7 @@ public class PercolatorTests extends ESIntegTestCase { .setScore(true) .setSize(size) .setPercolateDoc(docBuilder().setDoc("field", "value")) - .setPercolateQuery(QueryBuilders.functionScoreQuery(matchAllQuery(), scriptFunction(new Script("doc['level'].value")))) + .setPercolateQuery(QueryBuilders.functionScoreQuery(matchAllQuery(), fieldValueFactorFunction("level"))) .execute().actionGet(); assertMatchCount(response, numQueries); assertThat(response.getMatches().length, equalTo(size)); @@ -1200,7 +1190,7 @@ public class PercolatorTests extends ESIntegTestCase { .setSortByScore(true) .setSize(size) .setPercolateDoc(docBuilder().setDoc("field", "value")) - .setPercolateQuery(QueryBuilders.functionScoreQuery(matchAllQuery(), scriptFunction(new Script("doc['level'].value")))) + .setPercolateQuery(QueryBuilders.functionScoreQuery(matchAllQuery(), fieldValueFactorFunction("level"))) .execute().actionGet(); assertMatchCount(response, numQueries); assertThat(response.getMatches().length, equalTo(size)); @@ -1224,7 +1214,7 @@ public class PercolatorTests extends ESIntegTestCase { .setSize(size) .setPercolateDoc(docBuilder().setDoc("field", "value")) .setPercolateQuery( - QueryBuilders.functionScoreQuery(matchQuery("field1", value), scriptFunction(new Script("doc['level'].value"))) + QueryBuilders.functionScoreQuery(matchQuery("field1", value), fieldValueFactorFunction("level")) .boostMode( CombineFunction.REPLACE)) .execute().actionGet(); @@ -1258,7 +1248,7 @@ public class PercolatorTests extends ESIntegTestCase { .setSortByScore(true) .setSize(2) .setPercolateDoc(docBuilder().setDoc("field", "value")) - .setPercolateQuery(QueryBuilders.functionScoreQuery(matchAllQuery(), scriptFunction(new Script("doc['level'].value")))) + .setPercolateQuery(QueryBuilders.functionScoreQuery(matchAllQuery(), fieldValueFactorFunction("level"))) .execute().actionGet(); assertMatchCount(response, 2l); assertThat(response.getMatches()[0].getId().string(), equalTo("2")); @@ -1269,7 +1259,7 @@ public class PercolatorTests extends ESIntegTestCase { response = client().preparePercolate().setIndices("my-index").setDocumentType("my-type") .setSortByScore(true) .setPercolateDoc(docBuilder().setDoc("field", "value")) - .setPercolateQuery(QueryBuilders.functionScoreQuery(matchAllQuery(), scriptFunction(new Script("doc['level'].value")))) + .setPercolateQuery(QueryBuilders.functionScoreQuery(matchAllQuery(), fieldValueFactorFunction("level"))) .execute().actionGet(); assertThat(response.getCount(), equalTo(0l)); assertThat(response.getShardFailures().length, greaterThan(0)); @@ -1298,7 +1288,7 @@ public class PercolatorTests extends ESIntegTestCase { PercolateResponse response = client().preparePercolate().setIndices("my-index").setDocumentType("my-type") .setSize(2) .setPercolateDoc(docBuilder().setDoc("field", "value")) - .setPercolateQuery(QueryBuilders.functionScoreQuery(matchAllQuery(), scriptFunction(new Script("doc['level'].value")))) + .setPercolateQuery(QueryBuilders.functionScoreQuery(matchAllQuery(), fieldValueFactorFunction("level"))) .addSort(SortBuilders.fieldSort("level")) .get(); @@ -1316,7 +1306,7 @@ public class PercolatorTests extends ESIntegTestCase { .setSortByScore(true) .setSize(2) .setPercolateDoc(docBuilder().setDoc("field", "value")) - .setPercolateQuery(QueryBuilders.functionScoreQuery(matchAllQuery(), scriptFunction(new Script("doc['level'].value")))) + .setPercolateQuery(QueryBuilders.functionScoreQuery(matchAllQuery(), fieldValueFactorFunction("level"))) .execute().actionGet(); assertMatchCount(response, 0l); } @@ -1336,7 +1326,7 @@ public class PercolatorTests extends ESIntegTestCase { .setSortByScore(true) .setSize(2) .setPercolateDoc(docBuilder().setDoc("field", "value")) - .setPercolateQuery(QueryBuilders.functionScoreQuery(matchAllQuery(), scriptFunction(new Script("doc['level'].value")))) + .setPercolateQuery(QueryBuilders.functionScoreQuery(matchAllQuery(), fieldValueFactorFunction("level"))) .execute().actionGet(); assertMatchCount(response, 0l); } diff --git a/core/src/test/java/org/elasticsearch/script/MockScriptEngine.java b/core/src/test/java/org/elasticsearch/script/MockScriptEngine.java index eb7998c3e83..aa7cd457569 100644 --- a/core/src/test/java/org/elasticsearch/script/MockScriptEngine.java +++ b/core/src/test/java/org/elasticsearch/script/MockScriptEngine.java @@ -19,7 +19,9 @@ package org.elasticsearch.script; +import org.apache.lucene.index.LeafReaderContext; import org.elasticsearch.common.Nullable; +import org.elasticsearch.plugins.Plugin; import org.elasticsearch.search.lookup.SearchLookup; import java.io.IOException; @@ -31,6 +33,27 @@ import java.util.Map; public class MockScriptEngine implements ScriptEngineService { public static final String NAME = "mockscript"; + public static class TestPlugin extends Plugin { + + public TestPlugin() { + } + + @Override + public String name() { + return NAME; + } + + @Override + public String description() { + return "Mock script engine for integration tests"; + } + + public void onModule(ScriptModule module) { + module.addScriptEngine(MockScriptEngine.class); + } + + } + @Override public String[] types() { return new String[]{ NAME }; @@ -58,7 +81,26 @@ public class MockScriptEngine implements ScriptEngineService { @Override public SearchScript search(CompiledScript compiledScript, SearchLookup lookup, @Nullable Map vars) { - return null; + return new SearchScript() { + @Override + public LeafSearchScript getLeafSearchScript(LeafReaderContext context) throws IOException { + AbstractSearchScript leafSearchScript = new AbstractSearchScript() { + + @Override + public Object run() { + return compiledScript.compiled(); + } + + }; + leafSearchScript.setLookup(lookup.getLeafSearchLookup(context)); + return leafSearchScript; + } + + @Override + public boolean needsScores() { + return false; + } + }; } @Override diff --git a/plugins/lang-groovy/src/test/java/org/elasticsearch/messy/tests/TopHitsTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/TopHitsIT.java similarity index 98% rename from plugins/lang-groovy/src/test/java/org/elasticsearch/messy/tests/TopHitsTests.java rename to core/src/test/java/org/elasticsearch/search/aggregations/metrics/TopHitsIT.java index b8993b408bb..ae01ea1aafa 100644 --- a/plugins/lang-groovy/src/test/java/org/elasticsearch/messy/tests/TopHitsTests.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/TopHitsIT.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.elasticsearch.messy.tests; +package org.elasticsearch.search.aggregations.metrics; import org.apache.lucene.search.Explanation; import org.apache.lucene.util.ArrayUtil; @@ -28,8 +28,9 @@ import org.elasticsearch.common.bytes.BytesArray; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.plugins.Plugin; +import org.elasticsearch.script.MockScriptEngine; import org.elasticsearch.script.Script; -import org.elasticsearch.script.groovy.GroovyPlugin; +import org.elasticsearch.script.ScriptService; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.SearchHitField; import org.elasticsearch.search.SearchHits; @@ -84,14 +85,14 @@ import static org.hamcrest.Matchers.sameInstance; * */ @ESIntegTestCase.SuiteScopeTestCase() -public class TopHitsTests extends ESIntegTestCase { +public class TopHitsIT extends ESIntegTestCase { private static final String TERMS_AGGS_FIELD = "terms"; private static final String SORT_FIELD = "sort"; @Override protected Collection> nodePlugins() { - return Collections.singleton(GroovyPlugin.class); + return Collections.singleton(MockScriptEngine.TestPlugin.class); } public static String randomExecutionHint() { @@ -151,6 +152,7 @@ public class TopHitsTests extends ESIntegTestCase { .startObject() .field("group", "a") .field("text", "term x y z n rare") + .field("value", 1) .endObject())); builders.add(client().prepareIndex("idx", "field-collapsing", "3").setSource(jsonBuilder() .startObject() @@ -171,6 +173,7 @@ public class TopHitsTests extends ESIntegTestCase { .startObject() .field("group", "b") .field("text", "term rare") + .field("value", 3) .endObject())); builders.add(client().prepareIndex("idx", "field-collapsing", "7").setSource(jsonBuilder() .startObject() @@ -186,6 +189,7 @@ public class TopHitsTests extends ESIntegTestCase { .startObject() .field("group", "c") .field("text", "rare x term") + .field("value", 2) .endObject())); numArticles = scaledRandomIntBetween(10, 100); @@ -493,7 +497,7 @@ public class TopHitsTests extends ESIntegTestCase { .addAggregation( terms("terms").executionHint(randomExecutionHint()).field("group") .order(Terms.Order.aggregation("max_score", false)).subAggregation(topHits("hits").setSize(1)) - .subAggregation(max("max_score").script(new Script("_score.doubleValue()")))).get(); + .subAggregation(max("max_score").field("value"))).get(); assertSearchResponse(response); Terms terms = response.getAggregations().get("terms"); @@ -539,7 +543,7 @@ public class TopHitsTests extends ESIntegTestCase { .addHighlightedField("text") .setExplain(true) .addFieldDataField("field1") - .addScriptField("script", new Script("doc['field1'].value")) + .addScriptField("script", new Script("5", ScriptService.ScriptType.INLINE, MockScriptEngine.NAME, Collections.emptyMap())) .setFetchSource("text", null) .setVersion(true) ) @@ -860,7 +864,7 @@ public class TopHitsTests extends ESIntegTestCase { nested("to-comments").path("comments").subAggregation( topHits("top-comments").setSize(1).addHighlightedField(hlField).setExplain(true) .addFieldDataField("comments.user") - .addScriptField("script", new Script("doc['comments.user'].value")).setFetchSource("message", null) + .addScriptField("script", new Script("5", ScriptService.ScriptType.INLINE, MockScriptEngine.NAME, Collections.emptyMap())).setFetchSource("message", null) .setVersion(true).addSort("comments.date", SortOrder.ASC))).get(); assertHitCount(searchResponse, 2); Nested nested = searchResponse.getAggregations().get("to-comments"); @@ -892,7 +896,7 @@ public class TopHitsTests extends ESIntegTestCase { assertThat(field.getValue().toString(), equalTo("a")); field = searchHit.field("script"); - assertThat(field.getValue().toString(), equalTo("a")); + assertThat(field.getValue().toString(), equalTo("5")); assertThat(searchHit.sourceAsMap().size(), equalTo(1)); assertThat(searchHit.sourceAsMap().get("message").toString(), equalTo("some comment")); diff --git a/plugins/lang-groovy/src/test/java/org/elasticsearch/messy/tests/ChildQuerySearchTests.java b/core/src/test/java/org/elasticsearch/search/child/ChildQuerySearchIT.java similarity index 99% rename from plugins/lang-groovy/src/test/java/org/elasticsearch/messy/tests/ChildQuerySearchTests.java rename to core/src/test/java/org/elasticsearch/search/child/ChildQuerySearchIT.java index fd2b2bb8f42..335b584e12b 100644 --- a/plugins/lang-groovy/src/test/java/org/elasticsearch/messy/tests/ChildQuerySearchTests.java +++ b/core/src/test/java/org/elasticsearch/search/child/ChildQuerySearchIT.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.elasticsearch.messy.tests; +package org.elasticsearch.search.child; import org.apache.lucene.search.join.ScoreMode; import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsResponse; @@ -34,12 +34,12 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.unit.TimeValue; import org.elasticsearch.index.cache.IndexCacheModule; import org.elasticsearch.index.mapper.MergeMappingException; -import org.elasticsearch.index.query.*; +import org.elasticsearch.index.query.HasChildQueryBuilder; +import org.elasticsearch.index.query.IdsQueryBuilder; +import org.elasticsearch.index.query.QueryBuilder; +import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.query.functionscore.FunctionScoreQueryBuilder; -import org.elasticsearch.plugins.Plugin; import org.elasticsearch.rest.RestStatus; -import org.elasticsearch.script.Script; -import org.elasticsearch.script.groovy.GroovyPlugin; import org.elasticsearch.search.aggregations.AggregationBuilders; import org.elasticsearch.search.aggregations.bucket.filter.Filter; import org.elasticsearch.search.aggregations.bucket.global.Global; @@ -58,7 +58,7 @@ import java.util.*; import static org.elasticsearch.common.settings.Settings.settingsBuilder; import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder; import static org.elasticsearch.index.query.QueryBuilders.*; -import static org.elasticsearch.index.query.functionscore.ScoreFunctionBuilders.scriptFunction; +import static org.elasticsearch.index.query.functionscore.ScoreFunctionBuilders.fieldValueFactorFunction; import static org.elasticsearch.index.query.functionscore.ScoreFunctionBuilders.weightFactorFunction; import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.*; import static org.hamcrest.Matchers.*; @@ -67,13 +67,8 @@ import static org.hamcrest.Matchers.*; * */ @ClusterScope(scope = Scope.SUITE) -public class ChildQuerySearchTests extends ESIntegTestCase { +public class ChildQuerySearchIT extends ESIntegTestCase { - @Override - protected Collection> nodePlugins() { - return Collections.singleton(GroovyPlugin.class); - } - @Override protected Settings nodeSettings(int nodeOrdinal) { return Settings.settingsBuilder().put(super.nodeSettings(nodeOrdinal)) @@ -656,7 +651,7 @@ public class ChildQuerySearchTests extends ESIntegTestCase { QueryBuilders.hasChildQuery( "child", QueryBuilders.functionScoreQuery(matchQuery("c_field2", 0), - scriptFunction(new Script("doc['c_field1'].value"))) + fieldValueFactorFunction("c_field1")) .boostMode(CombineFunction.REPLACE)).scoreMode(ScoreMode.Total)).get(); assertThat(response.getHits().totalHits(), equalTo(3l)); @@ -673,7 +668,7 @@ public class ChildQuerySearchTests extends ESIntegTestCase { QueryBuilders.hasChildQuery( "child", QueryBuilders.functionScoreQuery(matchQuery("c_field2", 0), - scriptFunction(new Script("doc['c_field1'].value"))) + fieldValueFactorFunction("c_field1")) .boostMode(CombineFunction.REPLACE)).scoreMode(ScoreMode.Max)).get(); assertThat(response.getHits().totalHits(), equalTo(3l)); @@ -690,7 +685,7 @@ public class ChildQuerySearchTests extends ESIntegTestCase { QueryBuilders.hasChildQuery( "child", QueryBuilders.functionScoreQuery(matchQuery("c_field2", 0), - scriptFunction(new Script("doc['c_field1'].value"))) + fieldValueFactorFunction("c_field1")) .boostMode(CombineFunction.REPLACE)).scoreMode(ScoreMode.Avg)).get(); assertThat(response.getHits().totalHits(), equalTo(3l)); @@ -707,7 +702,7 @@ public class ChildQuerySearchTests extends ESIntegTestCase { QueryBuilders.hasParentQuery( "parent", QueryBuilders.functionScoreQuery(matchQuery("p_field1", "p_value3"), - scriptFunction(new Script("doc['p_field2'].value"))) + fieldValueFactorFunction("p_field2")) .boostMode(CombineFunction.REPLACE)).score(true)) .addSort(SortBuilders.fieldSort("c_field3")).addSort(SortBuilders.scoreSort()).get(); diff --git a/plugins/lang-groovy/src/test/java/org/elasticsearch/messy/tests/InnerHitsTests.java b/core/src/test/java/org/elasticsearch/search/innerhits/InnerHitsIT.java similarity index 98% rename from plugins/lang-groovy/src/test/java/org/elasticsearch/messy/tests/InnerHitsTests.java rename to core/src/test/java/org/elasticsearch/search/innerhits/InnerHitsIT.java index 4fe80b27b99..84a315c8585 100644 --- a/plugins/lang-groovy/src/test/java/org/elasticsearch/messy/tests/InnerHitsTests.java +++ b/core/src/test/java/org/elasticsearch/search/innerhits/InnerHitsIT.java @@ -17,7 +17,7 @@ * under the License. */ -package org.elasticsearch.messy.tests; +package org.elasticsearch.search.innerhits; import org.apache.lucene.util.ArrayUtil; import org.elasticsearch.Version; @@ -30,8 +30,9 @@ import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.support.QueryInnerHits; import org.elasticsearch.plugins.Plugin; +import org.elasticsearch.script.MockScriptEngine; import org.elasticsearch.script.Script; -import org.elasticsearch.script.groovy.GroovyPlugin; +import org.elasticsearch.script.ScriptService; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.SearchHits; import org.elasticsearch.search.fetch.innerhits.InnerHitsBuilder; @@ -53,11 +54,11 @@ import static org.hamcrest.Matchers.*; /** */ -public class InnerHitsTests extends ESIntegTestCase { +public class InnerHitsIT extends ESIntegTestCase { @Override protected Collection> nodePlugins() { - return Collections.singleton(GroovyPlugin.class); + return Collections.singleton(MockScriptEngine.TestPlugin.class); } @Test @@ -151,7 +152,7 @@ public class InnerHitsTests extends ESIntegTestCase { innerHit.highlightBuilder().field("comments.message"); innerHit.setExplain(true); innerHit.addFieldDataField("comments.message"); - innerHit.addScriptField("script", new Script("doc['comments.message'].value")); + innerHit.addScriptField("script", new Script("5", ScriptService.ScriptType.INLINE, MockScriptEngine.NAME, Collections.emptyMap())); innerHit.setSize(1); searchRequests = new SearchRequest[] { client().prepareSearch("articles") @@ -161,7 +162,7 @@ public class InnerHitsTests extends ESIntegTestCase { .addHighlightedField("comments.message") .setExplain(true) .addFieldDataField("comments.message") - .addScriptField("script", new Script("doc['comments.message'].value")) + .addScriptField("script", new Script("5", ScriptService.ScriptType.INLINE, MockScriptEngine.NAME, Collections.emptyMap())) .setSize(1)).request(), client().prepareSearch("articles") .setQuery(nestedQuery("comments", matchQuery("comments.message", "fox")).innerHit(new QueryInnerHits(null, innerHit))).request() @@ -176,7 +177,7 @@ public class InnerHitsTests extends ESIntegTestCase { assertThat(innerHits.getAt(0).getHighlightFields().get("comments.message").getFragments()[0].string(), equalTo("fox eat quick")); assertThat(innerHits.getAt(0).explanation().toString(), containsString("weight(comments.message:fox in")); assertThat(innerHits.getAt(0).getFields().get("comments.message").getValue().toString(), equalTo("eat")); - assertThat(innerHits.getAt(0).getFields().get("script").getValue().toString(), equalTo("eat")); + assertThat(innerHits.getAt(0).getFields().get("script").getValue().toString(), equalTo("5")); } } @@ -329,7 +330,7 @@ public class InnerHitsTests extends ESIntegTestCase { innerHit.highlightBuilder().field("message"); innerHit.setExplain(true); innerHit.addFieldDataField("message"); - innerHit.addScriptField("script", new Script("doc['message'].value")); + innerHit.addScriptField("script", new Script("5", ScriptService.ScriptType.INLINE, MockScriptEngine.NAME, Collections.emptyMap())); innerHit.setSize(1); searchRequests = new SearchRequest[] { client().prepareSearch("articles") @@ -339,7 +340,7 @@ public class InnerHitsTests extends ESIntegTestCase { .addHighlightedField("message") .setExplain(true) .addFieldDataField("message") - .addScriptField("script", new Script("doc['message'].value")) + .addScriptField("script", new Script("5", ScriptService.ScriptType.INLINE, MockScriptEngine.NAME, Collections.emptyMap())) .setSize(1) ).request(), @@ -356,7 +357,7 @@ public class InnerHitsTests extends ESIntegTestCase { assertThat(innerHits.getAt(0).getHighlightFields().get("message").getFragments()[0].string(), equalTo("fox eat quick")); assertThat(innerHits.getAt(0).explanation().toString(), containsString("weight(message:fox")); assertThat(innerHits.getAt(0).getFields().get("message").getValue().toString(), equalTo("eat")); - assertThat(innerHits.getAt(0).getFields().get("script").getValue().toString(), equalTo("eat")); + assertThat(innerHits.getAt(0).getFields().get("script").getValue().toString(), equalTo("5")); } } diff --git a/plugins/lang-groovy/src/test/java/org/elasticsearch/messy/tests/SimpleNestedTests.java b/core/src/test/java/org/elasticsearch/search/nested/SimpleNestedIT.java similarity index 89% rename from plugins/lang-groovy/src/test/java/org/elasticsearch/messy/tests/SimpleNestedTests.java rename to core/src/test/java/org/elasticsearch/search/nested/SimpleNestedIT.java index 590c6008e87..23f6e6f6c61 100644 --- a/plugins/lang-groovy/src/test/java/org/elasticsearch/messy/tests/SimpleNestedTests.java +++ b/core/src/test/java/org/elasticsearch/search/nested/SimpleNestedIT.java @@ -17,7 +17,7 @@ * under the License. */ -package org.elasticsearch.messy.tests; +package org.elasticsearch.search.nested; import org.apache.lucene.search.Explanation; import org.apache.lucene.search.join.ScoreMode; @@ -26,7 +26,6 @@ import org.elasticsearch.action.admin.cluster.stats.ClusterStatsResponse; import org.elasticsearch.action.admin.indices.stats.IndicesStatsResponse; import org.elasticsearch.action.delete.DeleteResponse; import org.elasticsearch.action.get.GetResponse; -import org.elasticsearch.action.search.SearchPhaseExecutionException; import org.elasticsearch.action.search.SearchRequestBuilder; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchType; @@ -34,31 +33,19 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.index.query.QueryBuilders; -import org.elasticsearch.plugins.Plugin; -import org.elasticsearch.script.Script; -import org.elasticsearch.script.groovy.GroovyPlugin; import org.elasticsearch.search.sort.SortBuilders; import org.elasticsearch.search.sort.SortOrder; import org.elasticsearch.test.ESIntegTestCase; -import org.junit.Assert; import org.junit.Test; -import java.util.Collection; -import java.util.Collections; - import static org.elasticsearch.common.settings.Settings.settingsBuilder; import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder; import static org.elasticsearch.index.query.QueryBuilders.*; import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.*; import static org.hamcrest.Matchers.*; -public class SimpleNestedTests extends ESIntegTestCase { +public class SimpleNestedIT extends ESIntegTestCase { - @Override - protected Collection> nodePlugins() { - return Collections.singleton(GroovyPlugin.class); - } - @Test public void simpleNested() throws Exception { assertAcked(prepareCreate("test").addMapping("type1", "nested1", "type=nested").addMapping("type2", "nested1", "type=nested")); @@ -419,99 +406,6 @@ public class SimpleNestedTests extends ESIntegTestCase { assertThat(searchResponse.getHits().hits()[1].sortValues()[0].toString(), equalTo("4")); assertThat(searchResponse.getHits().hits()[2].id(), equalTo("2")); assertThat(searchResponse.getHits().hits()[2].sortValues()[0].toString(), equalTo("2")); - - searchResponse = client().prepareSearch("test") - .setTypes("type1") - .setQuery(QueryBuilders.matchAllQuery()) - .addSort( - SortBuilders.scriptSort(new Script("_fields['nested1.field1'].value + 1"), "number").setNestedPath("nested1") - .order(SortOrder.DESC)).execute().actionGet(); - - assertHitCount(searchResponse, 3); - assertThat(searchResponse.getHits().hits()[0].id(), equalTo("1")); - assertThat(searchResponse.getHits().hits()[0].sortValues()[0].toString(), equalTo("6.0")); - assertThat(searchResponse.getHits().hits()[1].id(), equalTo("3")); - assertThat(searchResponse.getHits().hits()[1].sortValues()[0].toString(), equalTo("5.0")); - assertThat(searchResponse.getHits().hits()[2].id(), equalTo("2")); - assertThat(searchResponse.getHits().hits()[2].sortValues()[0].toString(), equalTo("3.0")); - - searchResponse = client() - .prepareSearch("test") - .setTypes("type1") - .setQuery(QueryBuilders.matchAllQuery()) - .addSort( - SortBuilders.scriptSort(new Script("_fields['nested1.field1'].value + 1"), "number").setNestedPath("nested1") - .sortMode("sum").order(SortOrder.DESC)).execute().actionGet(); - - // B/c of sum it is actually +2 - assertHitCount(searchResponse, 3); - assertThat(searchResponse.getHits().hits()[0].id(), equalTo("1")); - assertThat(searchResponse.getHits().hits()[0].sortValues()[0].toString(), equalTo("11.0")); - assertThat(searchResponse.getHits().hits()[1].id(), equalTo("3")); - assertThat(searchResponse.getHits().hits()[1].sortValues()[0].toString(), equalTo("9.0")); - assertThat(searchResponse.getHits().hits()[2].id(), equalTo("2")); - assertThat(searchResponse.getHits().hits()[2].sortValues()[0].toString(), equalTo("5.0")); - - searchResponse = client() - .prepareSearch("test") - .setTypes("type1") - .setQuery(QueryBuilders.matchAllQuery()) - .addSort( - SortBuilders.scriptSort(new Script("_fields['nested1.field1'].value"), "number") - .setNestedFilter(rangeQuery("nested1.field1").from(1).to(3)).setNestedPath("nested1").sortMode("avg") - .order(SortOrder.DESC)).execute().actionGet(); - - assertHitCount(searchResponse, 3); - assertThat(searchResponse.getHits().hits()[0].id(), equalTo("1")); - assertThat(searchResponse.getHits().hits()[0].sortValues()[0].toString(), equalTo(Double.toString(Double.MAX_VALUE))); - assertThat(searchResponse.getHits().hits()[1].id(), equalTo("3")); - assertThat(searchResponse.getHits().hits()[1].sortValues()[0].toString(), equalTo("3.0")); - assertThat(searchResponse.getHits().hits()[2].id(), equalTo("2")); - assertThat(searchResponse.getHits().hits()[2].sortValues()[0].toString(), equalTo("1.5")); - - searchResponse = client() - .prepareSearch("test") - .setTypes("type1") - .setQuery(QueryBuilders.matchAllQuery()) - .addSort( - SortBuilders.scriptSort(new Script("_fields['nested1.field1'].value"), "string").setNestedPath("nested1") - .order(SortOrder.DESC)).execute().actionGet(); - - assertHitCount(searchResponse, 3); - assertThat(searchResponse.getHits().hits()[0].id(), equalTo("1")); - assertThat(searchResponse.getHits().hits()[0].sortValues()[0].toString(), equalTo("5")); - assertThat(searchResponse.getHits().hits()[1].id(), equalTo("3")); - assertThat(searchResponse.getHits().hits()[1].sortValues()[0].toString(), equalTo("4")); - assertThat(searchResponse.getHits().hits()[2].id(), equalTo("2")); - assertThat(searchResponse.getHits().hits()[2].sortValues()[0].toString(), equalTo("2")); - - searchResponse = client() - .prepareSearch("test") - .setTypes("type1") - .setQuery(QueryBuilders.matchAllQuery()) - .addSort( - SortBuilders.scriptSort(new Script("_fields['nested1.field1'].value"), "string").setNestedPath("nested1") - .order(SortOrder.ASC)).execute().actionGet(); - - assertHitCount(searchResponse, 3); - assertThat(searchResponse.getHits().hits()[0].id(), equalTo("2")); - assertThat(searchResponse.getHits().hits()[0].sortValues()[0].toString(), equalTo("1")); - assertThat(searchResponse.getHits().hits()[1].id(), equalTo("3")); - assertThat(searchResponse.getHits().hits()[1].sortValues()[0].toString(), equalTo("3")); - assertThat(searchResponse.getHits().hits()[2].id(), equalTo("1")); - assertThat(searchResponse.getHits().hits()[2].sortValues()[0].toString(), equalTo("4")); - - try { - client().prepareSearch("test") - .setTypes("type1") - .setQuery(QueryBuilders.matchAllQuery()) - .addSort( - SortBuilders.scriptSort(new Script("_fields['nested1.field1'].value"), "string").setNestedPath("nested1") - .sortMode("sum").order(SortOrder.ASC)).execute().actionGet(); - Assert.fail("SearchPhaseExecutionException should have been thrown"); - } catch (SearchPhaseExecutionException e) { - assertThat(e.toString(), containsString("type [string] doesn't support mode [SUM]")); - } }