diff options
author | Nik Everett <nik9000@gmail.com> | 2017-04-26 16:04:38 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-26 16:04:38 -0400 |
commit | bc45d10e82e169e93d331866c7e2a7f3cae51db7 (patch) | |
tree | 0f6025614de6a38114fb2cd25c2862e6d6d14d6a | |
parent | 149629fec657e9948488195087f30583cd561f11 (diff) |
Remove most usages of 1-arg Script ctor (#24325)
The one argument ctor for `Script` creates a script with the
default language but most usages of are for testing and either
don't care about the language or are for use with
`MockScriptEngine`. This replaces most usages of the one argument
ctor on `Script` with calls to `ESTestCase#mockScript` to make
it clear that the tests don't need the default scripting language.
I've also factored out some copy and pasted script generation
code into a single place. I would have had to change that code
to use `mockScript` anyway, so it was easier to perform the
refactor.
Relates to #16314
25 files changed, 76 insertions, 173 deletions
diff --git a/client/rest-high-level/src/test/java/org/elasticsearch/client/RequestTests.java b/client/rest-high-level/src/test/java/org/elasticsearch/client/RequestTests.java index 58b7df9227..c527125e10 100644 --- a/client/rest-high-level/src/test/java/org/elasticsearch/client/RequestTests.java +++ b/client/rest-high-level/src/test/java/org/elasticsearch/client/RequestTests.java @@ -39,7 +39,6 @@ import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.index.VersionType; -import org.elasticsearch.script.Script; import org.elasticsearch.search.fetch.subphase.FetchSourceContext; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.RandomObjects; @@ -287,7 +286,7 @@ public class RequestTests extends ESTestCase { expectedParams.put("doc_as_upsert", "true"); } } else { - updateRequest.script(new Script("_value + 1")); + updateRequest.script(mockScript("_value + 1")); updateRequest.scriptedUpsert(randomBoolean()); } if (randomBoolean()) { @@ -520,7 +519,7 @@ public class RequestTests extends ESTestCase { { BulkRequest bulkRequest = new BulkRequest(); bulkRequest.add(new DeleteRequest("index", "type", "0")); - bulkRequest.add(new UpdateRequest("index", "type", "1").script(new Script("test"))); + bulkRequest.add(new UpdateRequest("index", "type", "1").script(mockScript("test"))); bulkRequest.add(new DeleteRequest("index", "type", "2")); Request request = Request.bulk(bulkRequest); diff --git a/core/src/main/java/org/elasticsearch/index/query/functionscore/ScoreFunctionBuilders.java b/core/src/main/java/org/elasticsearch/index/query/functionscore/ScoreFunctionBuilders.java index e6fb632f5a..100ff29dfe 100644 --- a/core/src/main/java/org/elasticsearch/index/query/functionscore/ScoreFunctionBuilders.java +++ b/core/src/main/java/org/elasticsearch/index/query/functionscore/ScoreFunctionBuilders.java @@ -20,6 +20,9 @@ package org.elasticsearch.index.query.functionscore; import org.elasticsearch.script.Script; +import org.elasticsearch.script.ScriptType; + +import static java.util.Collections.emptyMap; /** * Static method aliases for constructors of known {@link ScoreFunctionBuilder}s. @@ -69,7 +72,7 @@ public class ScoreFunctionBuilders { } public static ScriptScoreFunctionBuilder scriptFunction(String script) { - return (new ScriptScoreFunctionBuilder(new Script(script))); + return (new ScriptScoreFunctionBuilder(new Script(ScriptType.INLINE, Script.DEFAULT_SCRIPT_LANG, script, emptyMap()))); } public static RandomScoreFunctionBuilder randomFunction(int seed) { diff --git a/core/src/test/java/org/elasticsearch/common/lucene/search/function/ScriptScoreFunctionTests.java b/core/src/test/java/org/elasticsearch/common/lucene/search/function/ScriptScoreFunctionTests.java index 21fbf43a13..d7ee7629c9 100644 --- a/core/src/test/java/org/elasticsearch/common/lucene/search/function/ScriptScoreFunctionTests.java +++ b/core/src/test/java/org/elasticsearch/common/lucene/search/function/ScriptScoreFunctionTests.java @@ -21,9 +21,8 @@ package org.elasticsearch.common.lucene.search.function; import org.apache.lucene.index.LeafReaderContext; import org.elasticsearch.script.AbstractDoubleSearchScript; -import org.elasticsearch.script.LeafSearchScript; -import org.elasticsearch.script.Script; import org.elasticsearch.script.GeneralScriptException; +import org.elasticsearch.script.LeafSearchScript; import org.elasticsearch.script.SearchScript; import org.elasticsearch.test.ESTestCase; @@ -35,7 +34,7 @@ public class ScriptScoreFunctionTests extends ESTestCase { */ public void testScriptScoresReturnsNaN() throws IOException { // script that always returns NaN - ScoreFunction scoreFunction = new ScriptScoreFunction(new Script("Double.NaN"), new SearchScript() { + ScoreFunction scoreFunction = new ScriptScoreFunction(mockScript("Double.NaN"), new SearchScript() { @Override public LeafSearchScript getLeafSearchScript(LeafReaderContext context) throws IOException { return new AbstractDoubleSearchScript() { diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/BaseAggregationTestCase.java b/core/src/test/java/org/elasticsearch/search/aggregations/BaseAggregationTestCase.java index 651c261aa8..c76d1a5f0d 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/BaseAggregationTestCase.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/BaseAggregationTestCase.java @@ -34,6 +34,7 @@ import org.elasticsearch.env.Environment; import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.indices.IndicesModule; import org.elasticsearch.search.SearchModule; +import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; import org.elasticsearch.test.AbstractQueryTestCase; import org.elasticsearch.test.ESTestCase; @@ -176,4 +177,22 @@ public abstract class BaseAggregationTestCase<AB extends AbstractAggregationBuil return INT_FIELD_NAME; } } + + protected void randomFieldOrScript(ValuesSourceAggregationBuilder<?, ?> factory, String field) { + int choice = randomInt(2); + switch (choice) { + case 0: + factory.field(field); + break; + case 1: + factory.field(field); + factory.script(mockScript("_value + 1")); + break; + case 2: + factory.script(mockScript("doc[" + field + "] + 1")); + break; + default: + throw new AssertionError("Unknow random operation [" + choice + "]"); + } + } } diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/SignificantTermsTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/SignificantTermsTests.java index f545ae500a..9fe1c0ea47 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/SignificantTermsTests.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/SignificantTermsTests.java @@ -22,7 +22,6 @@ package org.elasticsearch.search.aggregations.bucket; import org.apache.lucene.util.BytesRef; import org.apache.lucene.util.automaton.RegExp; import org.elasticsearch.index.query.QueryBuilders; -import org.elasticsearch.script.Script; import org.elasticsearch.search.aggregations.BaseAggregationTestCase; import org.elasticsearch.search.aggregations.bucket.significant.SignificantTermsAggregationBuilder; import org.elasticsearch.search.aggregations.bucket.significant.heuristics.ChiSquare; @@ -34,6 +33,7 @@ import org.elasticsearch.search.aggregations.bucket.significant.heuristics.Scrip import org.elasticsearch.search.aggregations.bucket.significant.heuristics.SignificanceHeuristic; import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregatorFactory.ExecutionMode; import org.elasticsearch.search.aggregations.bucket.terms.support.IncludeExclude; + import java.util.SortedSet; import java.util.TreeSet; @@ -54,21 +54,8 @@ public class SignificantTermsTests extends BaseAggregationTestCase<SignificantTe String name = randomAlphaOfLengthBetween(3, 20); SignificantTermsAggregationBuilder factory = new SignificantTermsAggregationBuilder(name, null); String field = randomAlphaOfLengthBetween(3, 20); - int randomFieldBranch = randomInt(2); - switch (randomFieldBranch) { - case 0: - factory.field(field); - break; - case 1: - factory.field(field); - factory.script(new Script("_value + 1")); - break; - case 2: - factory.script(new Script("doc[" + field + "] + 1")); - break; - default: - fail(); - } + randomFieldOrScript(factory, field); + if (randomBoolean()) { factory.missing("MISSING"); } @@ -179,7 +166,7 @@ public class SignificantTermsTests extends BaseAggregationTestCase<SignificantTe significanceHeuristic = new MutualInformation(randomBoolean(), randomBoolean()); break; case 4: - significanceHeuristic = new ScriptHeuristic(new Script("foo")); + significanceHeuristic = new ScriptHeuristic(mockScript("foo")); break; case 5: significanceHeuristic = new JLHScore(); diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/TermsTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/TermsTests.java index d0a38d0890..42f6ef78f4 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/TermsTests.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/TermsTests.java @@ -21,13 +21,13 @@ package org.elasticsearch.search.aggregations.bucket; import org.apache.lucene.util.BytesRef; import org.apache.lucene.util.automaton.RegExp; -import org.elasticsearch.script.Script; import org.elasticsearch.search.aggregations.Aggregator.SubAggCollectionMode; import org.elasticsearch.search.aggregations.BaseAggregationTestCase; import org.elasticsearch.search.aggregations.bucket.terms.Terms; import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder; import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregatorFactory.ExecutionMode; import org.elasticsearch.search.aggregations.bucket.terms.support.IncludeExclude; + import java.util.ArrayList; import java.util.List; import java.util.SortedSet; @@ -50,21 +50,7 @@ public class TermsTests extends BaseAggregationTestCase<TermsAggregationBuilder> String name = randomAlphaOfLengthBetween(3, 20); TermsAggregationBuilder factory = new TermsAggregationBuilder(name, null); String field = randomAlphaOfLengthBetween(3, 20); - int randomFieldBranch = randomInt(2); - switch (randomFieldBranch) { - case 0: - factory.field(field); - break; - case 1: - factory.field(field); - factory.script(new Script("_value + 1")); - break; - case 2: - factory.script(new Script("doc[" + field + "] + 1")); - break; - default: - fail(); - } + randomFieldOrScript(factory, field); if (randomBoolean()) { factory.missing("MISSING"); } diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/sampler/DiversifiedAggregationBuilderTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/sampler/DiversifiedAggregationBuilderTests.java index eed258bb78..635cedcb09 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/sampler/DiversifiedAggregationBuilderTests.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/sampler/DiversifiedAggregationBuilderTests.java @@ -19,7 +19,6 @@ package org.elasticsearch.search.aggregations.bucket.sampler; -import org.elasticsearch.script.Script; import org.elasticsearch.search.aggregations.BaseAggregationTestCase; import org.elasticsearch.search.aggregations.bucket.sampler.SamplerAggregator.ExecutionMode; @@ -29,19 +28,7 @@ public class DiversifiedAggregationBuilderTests extends BaseAggregationTestCase< protected final DiversifiedAggregationBuilder createTestAggregatorBuilder() { DiversifiedAggregationBuilder factory = new DiversifiedAggregationBuilder("foo"); String field = randomNumericField(); - int randomFieldBranch = randomInt(3); - switch (randomFieldBranch) { - case 0: - factory.field(field); - break; - case 1: - factory.field(field); - factory.script(new Script("_value + 1")); - break; - case 2: - factory.script(new Script("doc[" + field + "] + 1")); - break; - } + randomFieldOrScript(factory, field); if (randomBoolean()) { factory.missing("MISSING"); } diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/AbstractNumericMetricTestCase.java b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/AbstractNumericMetricTestCase.java index f1ccf344a7..975a1610a6 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/AbstractNumericMetricTestCase.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/AbstractNumericMetricTestCase.java @@ -19,7 +19,6 @@ package org.elasticsearch.search.aggregations.metrics; -import org.elasticsearch.script.Script; import org.elasticsearch.search.aggregations.BaseAggregationTestCase; import org.elasticsearch.search.aggregations.support.ValuesSource; import org.elasticsearch.search.aggregations.support.ValuesSourceAggregationBuilder; @@ -31,19 +30,7 @@ public abstract class AbstractNumericMetricTestCase<AF extends ValuesSourceAggre protected final AF createTestAggregatorBuilder() { AF factory = doCreateTestAggregatorFactory(); String field = randomNumericField(); - int randomFieldBranch = randomInt(3); - switch (randomFieldBranch) { - case 0: - factory.field(field); - break; - case 1: - factory.field(field); - factory.script(new Script("_value + 1")); - break; - case 2: - factory.script(new Script("doc[" + field + "] + 1")); - break; - } + randomFieldOrScript(factory, field); if (randomBoolean()) { factory.missing("MISSING"); } diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/GeoCentroidTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/GeoCentroidTests.java index c61336134f..90067df601 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/GeoCentroidTests.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/GeoCentroidTests.java @@ -19,7 +19,6 @@ package org.elasticsearch.search.aggregations.metrics; -import org.elasticsearch.script.Script; import org.elasticsearch.search.aggregations.BaseAggregationTestCase; import org.elasticsearch.search.aggregations.metrics.geocentroid.GeoCentroidAggregationBuilder; @@ -29,19 +28,7 @@ public class GeoCentroidTests extends BaseAggregationTestCase<GeoCentroidAggrega protected GeoCentroidAggregationBuilder createTestAggregatorBuilder() { GeoCentroidAggregationBuilder factory = new GeoCentroidAggregationBuilder(randomAlphaOfLengthBetween(1, 20)); String field = randomNumericField(); - int randomFieldBranch = randomInt(3); - switch (randomFieldBranch) { - case 0: - factory.field(field); - break; - case 1: - factory.field(field); - factory.script(new Script("_value + 1")); - break; - case 2: - factory.script(new Script("doc[" + field + "] + 1")); - break; - } + randomFieldOrScript(factory, field); if (randomBoolean()) { factory.missing("0,0"); } diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/MissingTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/MissingTests.java index 979747ade2..168e01a269 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/MissingTests.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/MissingTests.java @@ -19,7 +19,6 @@ package org.elasticsearch.search.aggregations.metrics; -import org.elasticsearch.script.Script; import org.elasticsearch.search.aggregations.BaseAggregationTestCase; import org.elasticsearch.search.aggregations.bucket.missing.MissingAggregationBuilder; @@ -29,19 +28,7 @@ public class MissingTests extends BaseAggregationTestCase<MissingAggregationBuil protected final MissingAggregationBuilder createTestAggregatorBuilder() { MissingAggregationBuilder factory = new MissingAggregationBuilder("foo", null); String field = randomNumericField(); - int randomFieldBranch = randomInt(3); - switch (randomFieldBranch) { - case 0: - factory.field(field); - break; - case 1: - factory.field(field); - factory.script(new Script("_value + 1")); - break; - case 2: - factory.script(new Script("doc[" + field + "] + 1")); - break; - } + randomFieldOrScript(factory, field); return factory; } diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/PercentileRanksTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/PercentileRanksTests.java index c4a8a2837a..b78a67e951 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/PercentileRanksTests.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/PercentileRanksTests.java @@ -44,19 +44,7 @@ public class PercentileRanksTests extends BaseAggregationTestCase<PercentileRank factory.compression(randomIntBetween(1, 50000)); } String field = randomNumericField(); - int randomFieldBranch = randomInt(3); - switch (randomFieldBranch) { - case 0: - factory.field(field); - break; - case 1: - factory.field(field); - factory.script(new Script("_value + 1")); - break; - case 2: - factory.script(new Script("doc[" + field + "] + 1")); - break; - } + randomFieldOrScript(factory, field); if (randomBoolean()) { factory.missing("MISSING"); } diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/PercentilesTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/PercentilesTests.java index 3c9b5dfeb4..679bf32417 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/PercentilesTests.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/PercentilesTests.java @@ -19,7 +19,6 @@ package org.elasticsearch.search.aggregations.metrics; -import org.elasticsearch.script.Script; import org.elasticsearch.search.aggregations.BaseAggregationTestCase; import org.elasticsearch.search.aggregations.metrics.percentiles.PercentilesAggregationBuilder; @@ -46,19 +45,7 @@ public class PercentilesTests extends BaseAggregationTestCase<PercentilesAggrega factory.compression(randomIntBetween(1, 50000)); } String field = randomNumericField(); - int randomFieldBranch = randomInt(3); - switch (randomFieldBranch) { - case 0: - factory.field(field); - break; - case 1: - factory.field(field); - factory.script(new Script("_value + 1")); - break; - case 2: - factory.script(new Script("doc[" + field + "] + 1")); - break; - } + randomFieldOrScript(factory, field); if (randomBoolean()) { factory.missing("MISSING"); } diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/ScriptedMetricTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/ScriptedMetricTests.java index 15a78a5d4f..3ca4dfd253 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/ScriptedMetricTests.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/ScriptedMetricTests.java @@ -53,7 +53,7 @@ public class ScriptedMetricTests extends BaseAggregationTestCase<ScriptedMetricA private Script randomScript(String script) { if (randomBoolean()) { - return new Script(script); + return mockScript(script); } else { ScriptType type = randomFrom(ScriptType.values()); return new Script( diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/TopHitsTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/TopHitsTests.java index 3d8a64ee00..9e7ae83617 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/TopHitsTests.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/TopHitsTests.java @@ -90,9 +90,9 @@ public class TopHitsTests extends BaseAggregationTestCase<TopHitsAggregationBuil int scriptFieldsSize = randomInt(25); for (int i = 0; i < scriptFieldsSize; i++) { if (randomBoolean()) { - factory.scriptField(randomAlphaOfLengthBetween(5, 50), new Script("foo"), randomBoolean()); + factory.scriptField(randomAlphaOfLengthBetween(5, 50), mockScript("foo"), randomBoolean()); } else { - factory.scriptField(randomAlphaOfLengthBetween(5, 50), new Script("foo")); + factory.scriptField(randomAlphaOfLengthBetween(5, 50), mockScript("foo")); } } } @@ -148,7 +148,7 @@ public class TopHitsTests extends BaseAggregationTestCase<TopHitsAggregationBuil factory.sort(SortBuilders.scoreSort().order(randomFrom(SortOrder.values()))); break; case 3: - factory.sort(SortBuilders.scriptSort(new Script("foo"), ScriptSortType.NUMBER).order(randomFrom(SortOrder.values()))); + factory.sort(SortBuilders.scriptSort(mockScript("foo"), ScriptSortType.NUMBER).order(randomFrom(SortOrder.values()))); break; case 4: factory.sort(randomAlphaOfLengthBetween(5, 20)); diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/ValueCountTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/ValueCountTests.java index 99d4d41839..9a3ed32604 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/ValueCountTests.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/ValueCountTests.java @@ -19,7 +19,6 @@ package org.elasticsearch.search.aggregations.metrics; -import org.elasticsearch.script.Script; import org.elasticsearch.search.aggregations.BaseAggregationTestCase; import org.elasticsearch.search.aggregations.metrics.valuecount.ValueCountAggregationBuilder; @@ -29,19 +28,7 @@ public class ValueCountTests extends BaseAggregationTestCase<ValueCountAggregati protected final ValueCountAggregationBuilder createTestAggregatorBuilder() { ValueCountAggregationBuilder factory = new ValueCountAggregationBuilder("foo", null); String field = randomNumericField(); - int randomFieldBranch = randomInt(3); - switch (randomFieldBranch) { - case 0: - factory.field(field); - break; - case 1: - factory.field(field); - factory.script(new Script("_value + 1")); - break; - case 2: - factory.script(new Script("doc[" + field + "] + 1")); - break; - } + randomFieldOrScript(factory, field); if (randomBoolean()) { factory.missing("MISSING"); } diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/cardinality/CardinalityTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/cardinality/CardinalityTests.java index ab0377c633..1b3a185817 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/cardinality/CardinalityTests.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/cardinality/CardinalityTests.java @@ -19,7 +19,6 @@ package org.elasticsearch.search.aggregations.metrics.cardinality; -import org.elasticsearch.script.Script; import org.elasticsearch.search.aggregations.BaseAggregationTestCase; public class CardinalityTests extends BaseAggregationTestCase<CardinalityAggregationBuilder> { @@ -28,19 +27,7 @@ public class CardinalityTests extends BaseAggregationTestCase<CardinalityAggrega protected final CardinalityAggregationBuilder createTestAggregatorBuilder() { CardinalityAggregationBuilder factory = new CardinalityAggregationBuilder("foo", null); String field = randomNumericField(); - int randomFieldBranch = randomInt(3); - switch (randomFieldBranch) { - case 0: - factory.field(field); - break; - case 1: - factory.field(field); - factory.script(new Script("_value + 1")); - break; - case 2: - factory.script(new Script("doc[" + field + "] + 1")); - break; - } + randomFieldOrScript(factory, field); if (randomBoolean()) { factory.missing("MISSING"); } diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/pipeline/BucketScriptTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/pipeline/BucketScriptTests.java index b6d133f171..c213619183 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/pipeline/BucketScriptTests.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/pipeline/BucketScriptTests.java @@ -40,7 +40,7 @@ public class BucketScriptTests extends BasePipelineAggregationTestCase<BucketScr } Script script; if (randomBoolean()) { - script = new Script("script"); + script = mockScript("script"); } else { Map<String, Object> params = new HashMap<>(); if (randomBoolean()) { diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/pipeline/BucketSelectorTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/pipeline/BucketSelectorTests.java index c3e477a3a5..8dd63942d8 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/pipeline/BucketSelectorTests.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/pipeline/BucketSelectorTests.java @@ -40,7 +40,7 @@ public class BucketSelectorTests extends BasePipelineAggregationTestCase<BucketS } Script script; if (randomBoolean()) { - script = new Script("script"); + script = mockScript("script"); } else { Map<String, Object> params = new HashMap<>(); if (randomBoolean()) { diff --git a/core/src/test/java/org/elasticsearch/search/sort/ScriptSortBuilderTests.java b/core/src/test/java/org/elasticsearch/search/sort/ScriptSortBuilderTests.java index 526be491f3..0b9d250832 100644 --- a/core/src/test/java/org/elasticsearch/search/sort/ScriptSortBuilderTests.java +++ b/core/src/test/java/org/elasticsearch/search/sort/ScriptSortBuilderTests.java @@ -43,7 +43,7 @@ public class ScriptSortBuilderTests extends AbstractSortTestCase<ScriptSortBuild public static ScriptSortBuilder randomScriptSortBuilder() { ScriptSortType type = randomBoolean() ? ScriptSortType.NUMBER : ScriptSortType.STRING; - ScriptSortBuilder builder = new ScriptSortBuilder(new Script(randomAlphaOfLengthBetween(5, 10)), + ScriptSortBuilder builder = new ScriptSortBuilder(mockScript(randomAlphaOfLengthBetween(5, 10)), type); if (randomBoolean()) { builder.order(randomFrom(SortOrder.values())); @@ -76,7 +76,7 @@ public class ScriptSortBuilderTests extends AbstractSortTestCase<ScriptSortBuild Script script = original.script(); ScriptSortType type = original.type(); if (randomBoolean()) { - result = new ScriptSortBuilder(new Script(script.getIdOrCode() + "_suffix"), type); + result = new ScriptSortBuilder(mockScript(script.getIdOrCode() + "_suffix"), type); } else { result = new ScriptSortBuilder(script, type.equals(ScriptSortType.NUMBER) ? ScriptSortType.STRING : ScriptSortType.NUMBER); } @@ -251,7 +251,7 @@ public class ScriptSortBuilderTests extends AbstractSortTestCase<ScriptSortBuild * script sort of type {@link ScriptSortType} does not work with {@link SortMode#AVG}, {@link SortMode#MEDIAN} or {@link SortMode#SUM} */ public void testBadSortMode() throws IOException { - ScriptSortBuilder builder = new ScriptSortBuilder(new Script("something"), ScriptSortType.STRING); + ScriptSortBuilder builder = new ScriptSortBuilder(mockScript("something"), ScriptSortType.STRING); String sortMode = randomFrom(new String[] { "avg", "median", "sum" }); Exception e = expectThrows(IllegalArgumentException.class, () -> builder.sortMode(SortMode.fromString(sortMode))); assertEquals("script sort of type [string] doesn't support mode [" + sortMode + "]", e.getMessage()); diff --git a/modules/ingest-common/src/test/java/org/elasticsearch/ingest/common/ScriptProcessorTests.java b/modules/ingest-common/src/test/java/org/elasticsearch/ingest/common/ScriptProcessorTests.java index e76f3016dd..5356d9c9e0 100644 --- a/modules/ingest-common/src/test/java/org/elasticsearch/ingest/common/ScriptProcessorTests.java +++ b/modules/ingest-common/src/test/java/org/elasticsearch/ingest/common/ScriptProcessorTests.java @@ -45,7 +45,7 @@ public class ScriptProcessorTests extends ESTestCase { int randomBytesTotal = randomBytesIn + randomBytesOut; ScriptService scriptService = mock(ScriptService.class); - Script script = new Script("_script"); + Script script = mockScript("_script"); ExecutableScript executableScript = mock(ExecutableScript.class); when(scriptService.executable(any(CompiledScript.class), any())).thenReturn(executableScript); diff --git a/modules/reindex/src/test/java/org/elasticsearch/index/reindex/AbstractAsyncBulkByScrollActionScriptTestCase.java b/modules/reindex/src/test/java/org/elasticsearch/index/reindex/AbstractAsyncBulkByScrollActionScriptTestCase.java index b565f0749f..fd41a6d25f 100644 --- a/modules/reindex/src/test/java/org/elasticsearch/index/reindex/AbstractAsyncBulkByScrollActionScriptTestCase.java +++ b/modules/reindex/src/test/java/org/elasticsearch/index/reindex/AbstractAsyncBulkByScrollActionScriptTestCase.java @@ -30,7 +30,6 @@ import org.elasticsearch.action.delete.DeleteRequest; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.script.CompiledScript; import org.elasticsearch.script.ExecutableScript; -import org.elasticsearch.script.Script; import org.elasticsearch.script.ScriptService; import org.junit.Before; import org.mockito.Matchers; @@ -49,8 +48,6 @@ public abstract class AbstractAsyncBulkByScrollActionScriptTestCase< Response extends BulkByScrollResponse> extends AbstractAsyncBulkByScrollActionTestCase<Request, Response> { - private static final Script EMPTY_SCRIPT = new Script(""); - protected ScriptService scriptService; @Before @@ -66,7 +63,7 @@ public abstract class AbstractAsyncBulkByScrollActionScriptTestCase< when(scriptService.executable(any(CompiledScript.class), Matchers.<Map<String, Object>>any())) .thenReturn(executableScript); - AbstractAsyncBulkByScrollAction<Request> action = action(scriptService, request().setScript(EMPTY_SCRIPT)); + AbstractAsyncBulkByScrollAction<Request> action = action(scriptService, request().setScript(mockScript(""))); RequestWrapper<?> result = action.buildScriptApplier().apply(AbstractAsyncBulkByScrollAction.wrap(index), doc); return (result != null) ? (T) result.self() : null; } diff --git a/modules/reindex/src/test/java/org/elasticsearch/index/reindex/ReindexRequestTests.java b/modules/reindex/src/test/java/org/elasticsearch/index/reindex/ReindexRequestTests.java index c2b0723967..d1bb6f6096 100644 --- a/modules/reindex/src/test/java/org/elasticsearch/index/reindex/ReindexRequestTests.java +++ b/modules/reindex/src/test/java/org/elasticsearch/index/reindex/ReindexRequestTests.java @@ -25,7 +25,6 @@ import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.common.bytes.BytesArray; import org.elasticsearch.index.reindex.remote.RemoteInfo; -import org.elasticsearch.script.Script; import org.elasticsearch.search.slice.SliceBuilder; import static java.util.Collections.emptyMap; @@ -71,7 +70,7 @@ public class ReindexRequestTests extends AbstractBulkByScrollRequestTestCase<Rei @Override protected void extraRandomizationForSlice(ReindexRequest original) { if (randomBoolean()) { - original.setScript(new Script(randomAlphaOfLength(5))); + original.setScript(mockScript(randomAlphaOfLength(5))); } if (randomBoolean()) { original.setRemoteInfo(new RemoteInfo(randomAlphaOfLength(5), randomAlphaOfLength(5), between(1, 10000), diff --git a/modules/reindex/src/test/java/org/elasticsearch/index/reindex/UpdateByQueryRequestTests.java b/modules/reindex/src/test/java/org/elasticsearch/index/reindex/UpdateByQueryRequestTests.java index c932e83ce1..700f45b42c 100644 --- a/modules/reindex/src/test/java/org/elasticsearch/index/reindex/UpdateByQueryRequestTests.java +++ b/modules/reindex/src/test/java/org/elasticsearch/index/reindex/UpdateByQueryRequestTests.java @@ -22,7 +22,6 @@ package org.elasticsearch.index.reindex; import org.elasticsearch.action.bulk.byscroll.AbstractBulkByScrollRequestTestCase; import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.support.IndicesOptions; -import org.elasticsearch.script.Script; import static org.apache.lucene.util.TestUtil.randomSimpleString; @@ -68,7 +67,7 @@ public class UpdateByQueryRequestTests extends AbstractBulkByScrollRequestTestCa @Override protected void extraRandomizationForSlice(UpdateByQueryRequest original) { if (randomBoolean()) { - original.setScript(new Script(randomAlphaOfLength(5))); + original.setScript(mockScript(randomAlphaOfLength(5))); } if (randomBoolean()) { original.setPipeline(randomAlphaOfLength(5)); diff --git a/test/framework/src/main/java/org/elasticsearch/search/RandomSearchRequestGenerator.java b/test/framework/src/main/java/org/elasticsearch/search/RandomSearchRequestGenerator.java index 2a072a1d3b..18448b5829 100644 --- a/test/framework/src/main/java/org/elasticsearch/search/RandomSearchRequestGenerator.java +++ b/test/framework/src/main/java/org/elasticsearch/search/RandomSearchRequestGenerator.java @@ -31,6 +31,7 @@ import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.script.Script; +import org.elasticsearch.script.ScriptType; import org.elasticsearch.search.aggregations.AggregationBuilders; import org.elasticsearch.search.builder.SearchSourceBuilder; import org.elasticsearch.search.collapse.CollapseBuilder; @@ -50,8 +51,10 @@ import java.util.ArrayList; import java.util.List; import java.util.function.Supplier; +import static java.util.Collections.emptyMap; import static org.elasticsearch.test.ESTestCase.between; import static org.elasticsearch.test.ESTestCase.generateRandomStringArray; +import static org.elasticsearch.test.ESTestCase.mockScript; import static org.elasticsearch.test.ESTestCase.randomAlphaOfLengthBetween; import static org.elasticsearch.test.ESTestCase.randomBoolean; import static org.elasticsearch.test.ESTestCase.randomByte; @@ -164,9 +167,9 @@ public class RandomSearchRequestGenerator { int scriptFieldsSize = randomInt(25); for (int i = 0; i < scriptFieldsSize; i++) { if (randomBoolean()) { - builder.scriptField(randomAlphaOfLengthBetween(5, 50), new Script("foo"), randomBoolean()); + builder.scriptField(randomAlphaOfLengthBetween(5, 50), mockScript("foo"), randomBoolean()); } else { - builder.scriptField(randomAlphaOfLengthBetween(5, 50), new Script("foo")); + builder.scriptField(randomAlphaOfLengthBetween(5, 50), mockScript("foo")); } } } @@ -242,8 +245,11 @@ public class RandomSearchRequestGenerator { builder.sort(SortBuilders.scoreSort().order(randomFrom(SortOrder.values()))); break; case 3: - builder.sort(SortBuilders.scriptSort(new Script("foo"), - ScriptSortBuilder.ScriptSortType.NUMBER).order(randomFrom(SortOrder.values()))); + builder.sort(SortBuilders + .scriptSort( + new Script(ScriptType.INLINE, Script.DEFAULT_SCRIPT_LANG, "foo", emptyMap()), + ScriptSortBuilder.ScriptSortType.NUMBER) + .order(randomFrom(SortOrder.values()))); break; case 4: builder.sort(randomAlphaOfLengthBetween(5, 20)); diff --git a/test/framework/src/main/java/org/elasticsearch/test/ESTestCase.java b/test/framework/src/main/java/org/elasticsearch/test/ESTestCase.java index 29241b4b19..58d67ea3b9 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/ESTestCase.java +++ b/test/framework/src/main/java/org/elasticsearch/test/ESTestCase.java @@ -29,6 +29,7 @@ import com.carrotsearch.randomizedtesting.generators.RandomNumbers; import com.carrotsearch.randomizedtesting.generators.RandomPicks; import com.carrotsearch.randomizedtesting.generators.RandomStrings; import com.carrotsearch.randomizedtesting.rules.TestRuleAdapter; + import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -90,8 +91,10 @@ import org.elasticsearch.indices.analysis.AnalysisModule; import org.elasticsearch.plugins.AnalysisPlugin; import org.elasticsearch.plugins.MapperPlugin; import org.elasticsearch.script.MockScriptEngine; +import org.elasticsearch.script.Script; import org.elasticsearch.script.ScriptModule; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.script.ScriptType; import org.elasticsearch.search.MockSearchService; import org.elasticsearch.test.junit.listeners.LoggingListener; import org.elasticsearch.test.junit.listeners.ReproduceInfoPrinter; @@ -133,6 +136,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; import static java.util.Collections.emptyList; +import static java.util.Collections.emptyMap; import static java.util.Collections.singletonList; import static org.elasticsearch.common.util.CollectionUtils.arrayAsArrayList; import static org.hamcrest.Matchers.empty; @@ -1083,6 +1087,14 @@ public abstract class ESTestCase extends LuceneTestCase { return new NamedXContentRegistry(ClusterModule.getNamedXWriteables()); } + /** + * Create a "mock" script for use either with {@link MockScriptEngine} or anywhere where you need a script but don't really care about + * its contents. + */ + public static final Script mockScript(String id) { + return new Script(ScriptType.INLINE, MockScriptEngine.NAME, id, emptyMap()); + } + /** Returns the suite failure marker: internal use only! */ public static TestRuleMarkFailure getSuiteFailureMarker() { return suiteFailureMarker; |