Skip to content

Commit

Permalink
Fix composite test
Browse files Browse the repository at this point in the history
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
  • Loading branch information
nik9000 authored and martijnvg committed Jan 19, 2021
1 parent 80b8b23 commit eb9d44d
Showing 1 changed file with 21 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2133,7 +2133,7 @@ public void testEarlyTermination() throws Exception {
)
);

executeTestCase(true, new TermQuery(new Term("foo", "bar")),
executeTestCase(true, true, new TermQuery(new Term("foo", "bar")),
dataset,
() ->
new CompositeAggregationBuilder("name",
Expand All @@ -2153,7 +2153,7 @@ public void testEarlyTermination() throws Exception {
);

// 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",
Expand Down Expand Up @@ -2190,7 +2190,7 @@ public void testIndexSortWithDuplicate() throws Exception {
);

for (SortOrder order : SortOrder.values()) {
executeTestCase(true, new MatchAllDocsQuery(),
executeTestCase(false, true, new MatchAllDocsQuery(),
dataset,
() ->
new CompositeAggregationBuilder("name",
Expand All @@ -2213,7 +2213,7 @@ public void testIndexSortWithDuplicate() throws Exception {
}
);

executeTestCase(true, new MatchAllDocsQuery(),
executeTestCase(false, true, new MatchAllDocsQuery(),
dataset,
() ->
new CompositeAggregationBuilder("name",
Expand Down Expand Up @@ -2243,12 +2243,13 @@ private void testSearchCase(List<Query> queries,
Supplier<CompositeAggregationBuilder> create,
Consumer<InternalComposite> 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<Map<String, List<Object>>> dataset,
Supplier<CompositeAggregationBuilder> create,
Expand All @@ -2273,18 +2274,21 @@ private void executeTestCase(boolean useIndexSort,
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)) {
Expand Down

0 comments on commit eb9d44d

Please sign in to comment.