Skip to content

Commit 68d1070

Browse files
committed
Add error test
1 parent 80eae15 commit 68d1070

File tree

1 file changed

+37
-1
lines changed

1 file changed

+37
-1
lines changed

server/src/test/java/org/elasticsearch/search/aggregations/pipeline/BucketScriptAggregatorTests.java

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@
3030
import org.elasticsearch.script.ScriptModule;
3131
import org.elasticsearch.script.ScriptService;
3232
import org.elasticsearch.script.ScriptType;
33+
import org.elasticsearch.search.aggregations.AggregationBuilder;
3334
import org.elasticsearch.search.aggregations.AggregatorTestCase;
35+
import org.elasticsearch.search.aggregations.bucket.filter.FilterAggregationBuilder;
3436
import org.elasticsearch.search.aggregations.bucket.filter.FiltersAggregationBuilder;
3537
import org.elasticsearch.search.aggregations.bucket.filter.InternalFilters;
3638
import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder;
@@ -95,8 +97,42 @@ public void testScript() throws IOException {
9597
);
9698
}
9799

100+
public void testNonMultiBucketParent() {
101+
MappedFieldType fieldType = new NumberFieldMapper.NumberFieldType("number_field", NumberFieldMapper.NumberType.INTEGER);
102+
MappedFieldType fieldType1 = new KeywordFieldMapper.KeywordFieldType("the_field");
103+
104+
FilterAggregationBuilder filter = new FilterAggregationBuilder("placeholder", new MatchAllQueryBuilder()).subAggregation(
105+
new TermsAggregationBuilder("the_terms").userValueTypeHint(ValueType.STRING)
106+
.field("the_field")
107+
.subAggregation(new AvgAggregationBuilder("the_avg").field("number_field"))
108+
)
109+
.subAggregation(
110+
new BucketScriptPipelineAggregationBuilder(
111+
"bucket_script",
112+
Collections.singletonMap("the_avg", "the_terms['test1']>the_avg.value"),
113+
new Script(ScriptType.INLINE, MockScriptEngine.NAME, SCRIPT_NAME, Collections.emptyMap())
114+
)
115+
);
116+
117+
assertThrows(
118+
"Expected a multi bucket aggregation but got [InternalFilter] for aggregation [bucket_script]",
119+
IllegalArgumentException.class,
120+
() -> testCase(filter, new MatchAllDocsQuery(), iw -> {
121+
Document doc = new Document();
122+
doc.add(new SortedSetDocValuesField("the_field", new BytesRef("test1")));
123+
doc.add(new SortedNumericDocValuesField("number_field", 19));
124+
iw.addDocument(doc);
125+
126+
doc = new Document();
127+
doc.add(new SortedSetDocValuesField("the_field", new BytesRef("test2")));
128+
doc.add(new SortedNumericDocValuesField("number_field", 55));
129+
iw.addDocument(doc);
130+
}, f -> fail("This shouldn't be called"), fieldType, fieldType1)
131+
);
132+
}
133+
98134
private void testCase(
99-
FiltersAggregationBuilder aggregationBuilder,
135+
AggregationBuilder aggregationBuilder,
100136
Query query,
101137
CheckedConsumer<RandomIndexWriter, IOException> buildIndex,
102138
Consumer<InternalFilters> verify,

0 commit comments

Comments
 (0)