From eb9d44d0cf5b84cb75d4a57efe57cd635c85aa60 Mon Sep 17 00:00:00 2001 From: Nik Everett Date: Mon, 30 Nov 2020 15:37:45 -0500 Subject: [PATCH] Fix composite test Our test for early termination would break if we made many small segments because none of them would be large enough to trigger the early termination. This makes sure have only a single segment for these test, making sure we terminate early. Closes #62769 --- .../composite/CompositeAggregatorTests.java | 38 ++++++++++--------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/server/src/test/java/org/elasticsearch/search/aggregations/bucket/composite/CompositeAggregatorTests.java b/server/src/test/java/org/elasticsearch/search/aggregations/bucket/composite/CompositeAggregatorTests.java index 9efa6aeebe3..7e9fa181da4 100644 --- a/server/src/test/java/org/elasticsearch/search/aggregations/bucket/composite/CompositeAggregatorTests.java +++ b/server/src/test/java/org/elasticsearch/search/aggregations/bucket/composite/CompositeAggregatorTests.java @@ -2133,7 +2133,7 @@ public class CompositeAggregatorTests extends AggregatorTestCase { ) ); - executeTestCase(true, new TermQuery(new Term("foo", "bar")), + executeTestCase(true, true, new TermQuery(new Term("foo", "bar")), dataset, () -> new CompositeAggregationBuilder("name", @@ -2153,7 +2153,7 @@ public class CompositeAggregatorTests extends AggregatorTestCase { ); // source field and index sorting config have different order - executeTestCase(true, new TermQuery(new Term("foo", "bar")), + executeTestCase(true, true, new TermQuery(new Term("foo", "bar")), dataset, () -> new CompositeAggregationBuilder("name", @@ -2190,7 +2190,7 @@ public class CompositeAggregatorTests extends AggregatorTestCase { ); for (SortOrder order : SortOrder.values()) { - executeTestCase(true, new MatchAllDocsQuery(), + executeTestCase(false, true, new MatchAllDocsQuery(), dataset, () -> new CompositeAggregationBuilder("name", @@ -2213,7 +2213,7 @@ public class CompositeAggregatorTests extends AggregatorTestCase { } ); - executeTestCase(true, new MatchAllDocsQuery(), + executeTestCase(false, true, new MatchAllDocsQuery(), dataset, () -> new CompositeAggregationBuilder("name", @@ -2243,12 +2243,13 @@ public class CompositeAggregatorTests extends AggregatorTestCase { Supplier create, Consumer verify) throws IOException { for (Query query : queries) { - executeTestCase(false, query, dataset, create, verify); - executeTestCase(true, query, dataset, create, verify); + executeTestCase(false, false, query, dataset, create, verify); + executeTestCase(false, true, query, dataset, create, verify); } } - private void executeTestCase(boolean useIndexSort, + private void executeTestCase(boolean forceMerge, + boolean useIndexSort, Query query, List>> dataset, Supplier create, @@ -2273,18 +2274,21 @@ public class CompositeAggregatorTests extends AggregatorTestCase { indexWriter.addDocument(document); id++; } - if (rarely()) { + if (forceMerge || rarely()) { + // forceMerge randomly or if the collector-per-leaf testing stuff would break the tests. indexWriter.forceMerge(1); - } - if (dataset.size() > 0) { - int numDeletes = randomIntBetween(1, 25); - for (int i = 0; i < numDeletes; i++) { - id = randomIntBetween(0, dataset.size() - 1); - indexWriter.deleteDocuments(new Term("id", Integer.toString(id))); - document.clear(); - addToDocument(id, document, dataset.get(id)); - indexWriter.addDocument(document); + } else { + if (dataset.size() > 0) { + int numDeletes = randomIntBetween(1, 25); + for (int i = 0; i < numDeletes; i++) { + id = randomIntBetween(0, dataset.size() - 1); + indexWriter.deleteDocuments(new Term("id", Integer.toString(id))); + document.clear(); + addToDocument(id, document, dataset.get(id)); + indexWriter.addDocument(document); + } } + } } try (IndexReader indexReader = DirectoryReader.open(directory)) {