|
@@ -103,16 +103,27 @@ public abstract class AggregatorTestCase extends ESTestCase {
|
|
|
new MultiBucketConsumer(DEFAULT_MAX_BUCKETS), fieldTypes);
|
|
|
}
|
|
|
|
|
|
- /** Create a factory for the given aggregation builder. */
|
|
|
+
|
|
|
protected AggregatorFactory<?> createAggregatorFactory(AggregationBuilder aggregationBuilder,
|
|
|
IndexSearcher indexSearcher,
|
|
|
IndexSettings indexSettings,
|
|
|
MultiBucketConsumer bucketConsumer,
|
|
|
MappedFieldType... fieldTypes) throws IOException {
|
|
|
+ return createAggregatorFactory(null, aggregationBuilder, indexSearcher, indexSettings, bucketConsumer, fieldTypes);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** Create a factory for the given aggregation builder. */
|
|
|
+ protected AggregatorFactory<?> createAggregatorFactory(Query query,
|
|
|
+ AggregationBuilder aggregationBuilder,
|
|
|
+ IndexSearcher indexSearcher,
|
|
|
+ IndexSettings indexSettings,
|
|
|
+ MultiBucketConsumer bucketConsumer,
|
|
|
+ MappedFieldType... fieldTypes) throws IOException {
|
|
|
SearchContext searchContext = createSearchContext(indexSearcher, indexSettings);
|
|
|
CircuitBreakerService circuitBreakerService = new NoneCircuitBreakerService();
|
|
|
when(searchContext.aggregations())
|
|
|
.thenReturn(new SearchContextAggregations(AggregatorFactories.EMPTY, bucketConsumer));
|
|
|
+ when(searchContext.query()).thenReturn(query);
|
|
|
when(searchContext.bigArrays()).thenReturn(new MockBigArrays(new MockPageCacheRecycler(Settings.EMPTY), circuitBreakerService));
|
|
|
// TODO: now just needed for top_hits, this will need to be revised for other agg unit tests:
|
|
|
MapperService mapperService = mapperServiceMock();
|
|
@@ -146,19 +157,20 @@ public abstract class AggregatorTestCase extends ESTestCase {
|
|
|
new MultiBucketConsumer(DEFAULT_MAX_BUCKETS), fieldTypes);
|
|
|
}
|
|
|
|
|
|
- protected <A extends Aggregator> A createAggregator(AggregationBuilder aggregationBuilder,
|
|
|
+ protected <A extends Aggregator> A createAggregator(Query query,
|
|
|
+ AggregationBuilder aggregationBuilder,
|
|
|
IndexSearcher indexSearcher,
|
|
|
IndexSettings indexSettings,
|
|
|
MappedFieldType... fieldTypes) throws IOException {
|
|
|
- return createAggregator(aggregationBuilder, indexSearcher, indexSettings,
|
|
|
+ return createAggregator(query, aggregationBuilder, indexSearcher, indexSettings,
|
|
|
new MultiBucketConsumer(DEFAULT_MAX_BUCKETS), fieldTypes);
|
|
|
}
|
|
|
|
|
|
- protected <A extends Aggregator> A createAggregator(AggregationBuilder aggregationBuilder,
|
|
|
+ protected <A extends Aggregator> A createAggregator(Query query, AggregationBuilder aggregationBuilder,
|
|
|
IndexSearcher indexSearcher,
|
|
|
MultiBucketConsumer bucketConsumer,
|
|
|
MappedFieldType... fieldTypes) throws IOException {
|
|
|
- return createAggregator(aggregationBuilder, indexSearcher, createIndexSettings(), bucketConsumer, fieldTypes);
|
|
|
+ return createAggregator(query, aggregationBuilder, indexSearcher, createIndexSettings(), bucketConsumer, fieldTypes);
|
|
|
}
|
|
|
|
|
|
protected <A extends Aggregator> A createAggregator(AggregationBuilder aggregationBuilder,
|
|
@@ -166,8 +178,17 @@ public abstract class AggregatorTestCase extends ESTestCase {
|
|
|
IndexSettings indexSettings,
|
|
|
MultiBucketConsumer bucketConsumer,
|
|
|
MappedFieldType... fieldTypes) throws IOException {
|
|
|
+ return createAggregator(null, aggregationBuilder, indexSearcher, indexSettings, bucketConsumer, fieldTypes);
|
|
|
+ }
|
|
|
+
|
|
|
+ protected <A extends Aggregator> A createAggregator(Query query,
|
|
|
+ AggregationBuilder aggregationBuilder,
|
|
|
+ IndexSearcher indexSearcher,
|
|
|
+ IndexSettings indexSettings,
|
|
|
+ MultiBucketConsumer bucketConsumer,
|
|
|
+ MappedFieldType... fieldTypes) throws IOException {
|
|
|
@SuppressWarnings("unchecked")
|
|
|
- A aggregator = (A) createAggregatorFactory(aggregationBuilder, indexSearcher, indexSettings, bucketConsumer, fieldTypes)
|
|
|
+ A aggregator = (A) createAggregatorFactory(query, aggregationBuilder, indexSearcher, indexSettings, bucketConsumer, fieldTypes)
|
|
|
.create(null, true);
|
|
|
return aggregator;
|
|
|
}
|
|
@@ -262,7 +283,7 @@ public abstract class AggregatorTestCase extends ESTestCase {
|
|
|
int maxBucket,
|
|
|
MappedFieldType... fieldTypes) throws IOException {
|
|
|
MultiBucketConsumer bucketConsumer = new MultiBucketConsumer(maxBucket);
|
|
|
- C a = createAggregator(builder, searcher, bucketConsumer, fieldTypes);
|
|
|
+ C a = createAggregator(query, builder, searcher, bucketConsumer, fieldTypes);
|
|
|
a.preCollection();
|
|
|
searcher.search(query, a);
|
|
|
a.postCollection();
|
|
@@ -310,11 +331,11 @@ public abstract class AggregatorTestCase extends ESTestCase {
|
|
|
Query rewritten = searcher.rewrite(query);
|
|
|
Weight weight = searcher.createWeight(rewritten, true, 1f);
|
|
|
MultiBucketConsumer bucketConsumer = new MultiBucketConsumer(maxBucket);
|
|
|
- C root = createAggregator(builder, searcher, bucketConsumer, fieldTypes);
|
|
|
+ C root = createAggregator(query, builder, searcher, bucketConsumer, fieldTypes);
|
|
|
|
|
|
for (ShardSearcher subSearcher : subSearchers) {
|
|
|
MultiBucketConsumer shardBucketConsumer = new MultiBucketConsumer(maxBucket);
|
|
|
- C a = createAggregator(builder, subSearcher, shardBucketConsumer, fieldTypes);
|
|
|
+ C a = createAggregator(query, builder, subSearcher, shardBucketConsumer, fieldTypes);
|
|
|
a.preCollection();
|
|
|
subSearcher.search(weight, a);
|
|
|
a.postCollection();
|