Fixup reduceRandom tests (#65263)
In aa1ea96b8698aa12bed1c4e8d704882a2a639791 I made all `testReduceRandom` tests for aggs mimick production more precisely. More precisely, they pick the correct "lead" result when performing partial reduction. This is great, but, sadly, some tests assumed that we always reduced against the "first" aggregator. This fixes those tests. Closes #65163
This commit is contained in:
parent
956ae93fdb
commit
56605e4d9a
|
@ -69,10 +69,10 @@ public class InternalTopHitsTests extends InternalAggregationTestCase<InternalTo
|
||||||
@Override
|
@Override
|
||||||
protected InternalTopHits createTestInstance(String name, Map<String, Object> metadata) {
|
protected InternalTopHits createTestInstance(String name, Map<String, Object> metadata) {
|
||||||
if (randomBoolean()) {
|
if (randomBoolean()) {
|
||||||
return createTestInstanceSortedByFields(name, metadata, ESTestCase::randomFloat,
|
return createTestInstanceSortedByFields(name, between(1, 40), metadata, ESTestCase::randomFloat,
|
||||||
randomSortFields(), InternalTopHitsTests::randomOfType);
|
randomSortFields(), InternalTopHitsTests::randomOfType);
|
||||||
}
|
}
|
||||||
return createTestInstanceSortedScore(name, metadata, ESTestCase::randomFloat);
|
return createTestInstanceSortedScore(name, between(1, 40), metadata, ESTestCase::randomFloat);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -87,6 +87,7 @@ public class InternalTopHitsTests extends InternalAggregationTestCase<InternalTo
|
||||||
usedScores.add(score);
|
usedScores.add(score);
|
||||||
return score;
|
return score;
|
||||||
};
|
};
|
||||||
|
int requestedSize = between(1, 40);
|
||||||
Supplier<InternalTopHits> supplier;
|
Supplier<InternalTopHits> supplier;
|
||||||
if (randomBoolean()) {
|
if (randomBoolean()) {
|
||||||
SortField[] sortFields = randomSortFields();
|
SortField[] sortFields = randomSortFields();
|
||||||
|
@ -96,16 +97,16 @@ public class InternalTopHitsTests extends InternalAggregationTestCase<InternalTo
|
||||||
usedSortFieldValues.add(value);
|
usedSortFieldValues.add(value);
|
||||||
return value;
|
return value;
|
||||||
};
|
};
|
||||||
supplier = () -> createTestInstanceSortedByFields(name, null, scoreSupplier, sortFields, sortFieldValueSuppier);
|
supplier = () -> createTestInstanceSortedByFields(name, requestedSize, null, scoreSupplier, sortFields, sortFieldValueSuppier);
|
||||||
} else {
|
} else {
|
||||||
supplier = () -> createTestInstanceSortedScore(name, null, scoreSupplier);
|
supplier = () -> createTestInstanceSortedScore(name, requestedSize, null, scoreSupplier);
|
||||||
}
|
}
|
||||||
return Stream.generate(supplier).limit(size).collect(toList());
|
return Stream.generate(supplier).limit(size).collect(toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
private InternalTopHits createTestInstanceSortedByFields(String name, Map<String, Object> metadata,
|
private InternalTopHits createTestInstanceSortedByFields(String name, int requestedSize, Map<String, Object> metadata,
|
||||||
Supplier<Float> scoreSupplier, SortField[] sortFields, Function<SortField.Type, Object> sortFieldValueSupplier) {
|
Supplier<Float> scoreSupplier, SortField[] sortFields, Function<SortField.Type, Object> sortFieldValueSupplier) {
|
||||||
return createTestInstance(name, metadata, scoreSupplier,
|
return createTestInstance(name, metadata, scoreSupplier, requestedSize,
|
||||||
(docId, score) -> {
|
(docId, score) -> {
|
||||||
Object[] fields = new Object[sortFields.length];
|
Object[] fields = new Object[sortFields.length];
|
||||||
for (int f = 0; f < sortFields.length; f++) {
|
for (int f = 0; f < sortFields.length; f++) {
|
||||||
|
@ -118,15 +119,20 @@ public class InternalTopHitsTests extends InternalAggregationTestCase<InternalTo
|
||||||
sortFieldsComparator(sortFields));
|
sortFieldsComparator(sortFields));
|
||||||
}
|
}
|
||||||
|
|
||||||
private InternalTopHits createTestInstanceSortedScore(String name, Map<String, Object> metadata, Supplier<Float> scoreSupplier) {
|
private InternalTopHits createTestInstanceSortedScore(
|
||||||
return createTestInstance(name, metadata, scoreSupplier, ScoreDoc::new, TopDocs::new, scoreComparator());
|
String name,
|
||||||
|
int requestedSize,
|
||||||
|
Map<String, Object> metadata,
|
||||||
|
Supplier<Float> scoreSupplier
|
||||||
|
) {
|
||||||
|
return createTestInstance(name, metadata, scoreSupplier, requestedSize, ScoreDoc::new, TopDocs::new, scoreComparator());
|
||||||
}
|
}
|
||||||
|
|
||||||
private InternalTopHits createTestInstance(String name, Map<String, Object> metadata, Supplier<Float> scoreSupplier,
|
private InternalTopHits createTestInstance(String name, Map<String, Object> metadata, Supplier<Float> scoreSupplier,
|
||||||
|
int requestedSize,
|
||||||
BiFunction<Integer, Float, ScoreDoc> docBuilder,
|
BiFunction<Integer, Float, ScoreDoc> docBuilder,
|
||||||
BiFunction<TotalHits, ScoreDoc[], TopDocs> topDocsBuilder, Comparator<ScoreDoc> comparator) {
|
BiFunction<TotalHits, ScoreDoc[], TopDocs> topDocsBuilder, Comparator<ScoreDoc> comparator) {
|
||||||
int from = 0;
|
int from = 0;
|
||||||
int requestedSize = between(1, 40);
|
|
||||||
int actualSize = between(0, requestedSize);
|
int actualSize = between(0, requestedSize);
|
||||||
|
|
||||||
float maxScore = Float.NEGATIVE_INFINITY;
|
float maxScore = Float.NEGATIVE_INFINITY;
|
||||||
|
|
|
@ -338,7 +338,6 @@ public abstract class InternalAggregationTestCase<T extends InternalAggregation>
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
||||||
protected final Class<T> categoryClass() {
|
protected final Class<T> categoryClass() {
|
||||||
return (Class<T>) InternalAggregation.class;
|
return (Class<T>) InternalAggregation.class;
|
||||||
}
|
}
|
||||||
|
|
|
@ -331,6 +331,27 @@ public class InternalTopMetricsTests extends InternalAggregationTestCase<Interna
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected List<InternalTopMetrics> randomResultsToReduce(String name, int count) {
|
||||||
|
InternalTopMetrics prototype = createTestInstance();
|
||||||
|
return randomList(
|
||||||
|
count,
|
||||||
|
count,
|
||||||
|
() -> new InternalTopMetrics(
|
||||||
|
prototype.getName(),
|
||||||
|
prototype.getSortOrder(),
|
||||||
|
prototype.getMetricNames(),
|
||||||
|
prototype.getSize(),
|
||||||
|
randomTopMetrics(
|
||||||
|
InternalAggregationTestCase::randomNumericDocValueFormat,
|
||||||
|
between(0, prototype.getSize()),
|
||||||
|
prototype.getMetricNames().size()
|
||||||
|
),
|
||||||
|
prototype.getMetadata()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void assertReduced(InternalTopMetrics reduced, List<InternalTopMetrics> inputs) {
|
protected void assertReduced(InternalTopMetrics reduced, List<InternalTopMetrics> inputs) {
|
||||||
InternalTopMetrics first = inputs.get(0);
|
InternalTopMetrics first = inputs.get(0);
|
||||||
|
|
Loading…
Reference in New Issue