Skip to content

Commit 221de22

Browse files
committed
Implemented AvgAggregatorTests#testDontCacheScripts and removed AvgIT tests (elastic#45737)
Similar to PR elastic#45030 integration test testDontCacheScripts() was moved to unit test AvgAggregatorTests#testDontCacheScripts. AvgIT class was removed.
1 parent a219a0f commit 221de22

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

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)