Skip to content

Commit 0f024c1

Browse files
authored
Implemented AvgAggregatorTests#testDontCacheScripts and removed AvgIT tests (#45737)
Similar to PR #45030 integration test testDontCacheScripts() was moved to unit test AvgAggregatorTests#testDontCacheScripts. AvgIT class was removed.
1 parent 5d0e6b5 commit 0f024c1

File tree

2 files changed

+91
-83
lines changed

2 files changed

+91
-83
lines changed

server/src/test/java/org/elasticsearch/search/aggregations/metrics/AvgAggregatorTests.java

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -591,4 +591,95 @@ private void testCase(AvgAggregationBuilder aggregationBuilder, Query query,
591591
indexReader.close();
592592
directory.close();
593593
}
594+
595+
/**
596+
* Make sure that an aggregation not using a script does get cached.
597+
*/
598+
public void testCacheAggregation() throws IOException {
599+
Directory directory = newDirectory();
600+
RandomIndexWriter indexWriter = new RandomIndexWriter(random(), directory);
601+
final int numDocs = 10;
602+
for (int i = 0; i < numDocs; i++) {
603+
indexWriter.addDocument(singleton(new NumericDocValuesField("value", i + 1)));
604+
}
605+
indexWriter.close();
606+
607+
Directory unmappedDirectory = newDirectory();
608+
RandomIndexWriter unmappedIndexWriter = new RandomIndexWriter(random(), unmappedDirectory);
609+
unmappedIndexWriter.close();
610+
611+
IndexReader indexReader = DirectoryReader.open(directory);
612+
IndexReader unamappedIndexReader = DirectoryReader.open(unmappedDirectory);
613+
MultiReader multiReader = new MultiReader(indexReader, unamappedIndexReader);
614+
IndexSearcher indexSearcher = newSearcher(multiReader, true, true);
615+
616+
MappedFieldType fieldType = new NumberFieldMapper.NumberFieldType(NumberFieldMapper.NumberType.INTEGER);
617+
fieldType.setName("value");
618+
AvgAggregationBuilder aggregationBuilder = new AvgAggregationBuilder("avg")
619+
.field("value");
620+
621+
AvgAggregator aggregator = createAggregator(aggregationBuilder, indexSearcher, fieldType);
622+
aggregator.preCollection();
623+
indexSearcher.search(new MatchAllDocsQuery(), aggregator);
624+
aggregator.postCollection();
625+
626+
InternalAvg avg = (InternalAvg) aggregator.buildAggregation(0L);
627+
628+
assertEquals(5.5, avg.getValue(), 0);
629+
assertEquals("avg", avg.getName());
630+
assertTrue(AggregationInspectionHelper.hasValue(avg));
631+
632+
// Test that an aggregation not using a script does get cached
633+
assertTrue(aggregator.context().getQueryShardContext().isCacheable());
634+
635+
multiReader.close();
636+
directory.close();
637+
unmappedDirectory.close();
638+
}
639+
640+
/**
641+
* Make sure that an aggregation using a script does not get cached.
642+
*/
643+
public void testDontCacheScripts() throws IOException {
644+
Directory directory = newDirectory();
645+
RandomIndexWriter indexWriter = new RandomIndexWriter(random(), directory);
646+
final int numDocs = 10;
647+
for (int i = 0; i < numDocs; i++) {
648+
indexWriter.addDocument(singleton(new NumericDocValuesField("value", i + 1)));
649+
}
650+
indexWriter.close();
651+
652+
Directory unmappedDirectory = newDirectory();
653+
RandomIndexWriter unmappedIndexWriter = new RandomIndexWriter(random(), unmappedDirectory);
654+
unmappedIndexWriter.close();
655+
656+
IndexReader indexReader = DirectoryReader.open(directory);
657+
IndexReader unamappedIndexReader = DirectoryReader.open(unmappedDirectory);
658+
MultiReader multiReader = new MultiReader(indexReader, unamappedIndexReader);
659+
IndexSearcher indexSearcher = newSearcher(multiReader, true, true);
660+
661+
MappedFieldType fieldType = new NumberFieldMapper.NumberFieldType(NumberFieldMapper.NumberType.INTEGER);
662+
fieldType.setName("value");
663+
AvgAggregationBuilder aggregationBuilder = new AvgAggregationBuilder("avg")
664+
.field("value")
665+
.script(new Script(ScriptType.INLINE, MockScriptEngine.NAME, VALUE_SCRIPT, Collections.emptyMap()));
666+
667+
AvgAggregator aggregator = createAggregator(aggregationBuilder, indexSearcher, fieldType);
668+
aggregator.preCollection();
669+
indexSearcher.search(new MatchAllDocsQuery(), aggregator);
670+
aggregator.postCollection();
671+
672+
InternalAvg avg = (InternalAvg) aggregator.buildAggregation(0L);
673+
674+
assertEquals(5.5, avg.getValue(), 0);
675+
assertEquals("avg", avg.getName());
676+
assertTrue(AggregationInspectionHelper.hasValue(avg));
677+
678+
// Test that an aggregation using a script does not get cached
679+
assertFalse(aggregator.context().getQueryShardContext().isCacheable());
680+
681+
multiReader.close();
682+
directory.close();
683+
unmappedDirectory.close();
684+
}
594685
}

server/src/test/java/org/elasticsearch/search/aggregations/metrics/AvgIT.java

Lines changed: 0 additions & 83 deletions
This file was deleted.

0 commit comments

Comments
 (0)