summaryrefslogtreecommitdiff
path: root/core/src/test/java/org/elasticsearch/search/aggregations/bucket
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/test/java/org/elasticsearch/search/aggregations/bucket')
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/bucket/InternalSingleBucketAggregationTestCase.java28
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/bucket/histogram/InternalDateHistogramTests.java28
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/bucket/histogram/InternalHistogramTests.java32
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/DoubleTermsTests.java23
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/InternalTermsTestCase.java29
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/LongTermsTests.java22
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/StringTermsTests.java20
7 files changed, 133 insertions, 49 deletions
diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/InternalSingleBucketAggregationTestCase.java b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/InternalSingleBucketAggregationTestCase.java
index 8da1f0a90e..f84a364ab1 100644
--- a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/InternalSingleBucketAggregationTestCase.java
+++ b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/InternalSingleBucketAggregationTestCase.java
@@ -29,31 +29,43 @@ import org.elasticsearch.test.InternalAggregationTestCase;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.function.Supplier;
import static java.util.Collections.emptyList;
import static java.util.Collections.emptyMap;
public abstract class InternalSingleBucketAggregationTestCase<T extends InternalSingleBucketAggregation>
extends InternalAggregationTestCase<T> {
+
private final boolean hasInternalMax = randomBoolean();
private final boolean hasInternalMin = randomBoolean();
+ public Supplier<InternalAggregations> subAggregationsSupplier;
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ subAggregationsSupplier = () -> {
+ List<InternalAggregation> aggs = new ArrayList<>();
+ if (hasInternalMax) {
+ aggs.add(new InternalMax("max", randomDouble(), randomNumericDocValueFormat(), emptyList(), emptyMap()));
+ }
+ if (hasInternalMin) {
+ aggs.add(new InternalMin("min", randomDouble(), randomNumericDocValueFormat(), emptyList(), emptyMap()));
+ }
+ return new InternalAggregations(aggs);
+ };
+ }
+
protected abstract T createTestInstance(String name, long docCount, InternalAggregations aggregations,
List<PipelineAggregator> pipelineAggregators, Map<String, Object> metaData);
protected abstract void extraAssertReduced(T reduced, List<T> inputs);
@Override
protected final T createTestInstance(String name, List<PipelineAggregator> pipelineAggregators, Map<String, Object> metaData) {
- List<InternalAggregation> internal = new ArrayList<>();
- if (hasInternalMax) {
- internal.add(new InternalMax("max", randomDouble(), randomNumericDocValueFormat(), emptyList(), emptyMap()));
- }
- if (hasInternalMin) {
- internal.add(new InternalMin("min", randomDouble(), randomNumericDocValueFormat(), emptyList(), emptyMap()));
- }
// we shouldn't use the full long range here since we sum doc count on reduce, and don't want to overflow the long range there
long docCount = between(0, Integer.MAX_VALUE);
- return createTestInstance(name, docCount, new InternalAggregations(internal), pipelineAggregators, metaData);
+ return createTestInstance(name, docCount, subAggregationsSupplier.get(), pipelineAggregators, metaData);
}
@Override
diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/histogram/InternalDateHistogramTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/histogram/InternalDateHistogramTests.java
index aafad557bc..50cb453049 100644
--- a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/histogram/InternalDateHistogramTests.java
+++ b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/histogram/InternalDateHistogramTests.java
@@ -22,6 +22,8 @@ package org.elasticsearch.search.aggregations.bucket.histogram;
import org.elasticsearch.common.io.stream.Writeable;
import org.elasticsearch.search.DocValueFormat;
import org.elasticsearch.search.aggregations.InternalAggregations;
+import org.elasticsearch.search.aggregations.InternalMultiBucketAggregationTestCase;
+import org.elasticsearch.search.aggregations.ParsedMultiBucketAggregation;
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator;
import org.elasticsearch.test.InternalAggregationTestCase;
import org.joda.time.DateTime;
@@ -35,14 +37,23 @@ import static org.elasticsearch.common.unit.TimeValue.timeValueHours;
import static org.elasticsearch.common.unit.TimeValue.timeValueMinutes;
import static org.elasticsearch.common.unit.TimeValue.timeValueSeconds;
-public class InternalDateHistogramTests extends InternalAggregationTestCase<InternalDateHistogram> {
+public class InternalDateHistogramTests extends InternalMultiBucketAggregationTestCase<InternalDateHistogram> {
+
+ private boolean keyed;
+ private DocValueFormat format;
@Override
- protected InternalDateHistogram createTestInstance(String name, List<PipelineAggregator> pipelineAggregators,
- Map<String, Object> metaData) {
+ public void setUp() throws Exception {
+ super.setUp();
+ keyed = randomBoolean();
+ format = randomNumericDocValueFormat();
+ }
- boolean keyed = randomBoolean();
- DocValueFormat format = DocValueFormat.RAW;
+ @Override
+ protected InternalDateHistogram createTestInstance(String name,
+ List<PipelineAggregator> pipelineAggregators,
+ Map<String, Object> metaData,
+ InternalAggregations aggregations) {
int nbBuckets = randomInt(10);
List<InternalDateHistogram.Bucket> buckets = new ArrayList<>(nbBuckets);
long startingDate = System.currentTimeMillis();
@@ -52,7 +63,7 @@ public class InternalDateHistogramTests extends InternalAggregationTestCase<Inte
for (int i = 0; i < nbBuckets; i++) {
long key = startingDate + (intervalMillis * i);
- buckets.add(i, new InternalDateHistogram.Bucket(key, randomIntBetween(1, 100), keyed, format, InternalAggregations.EMPTY));
+ buckets.add(i, new InternalDateHistogram.Bucket(key, randomIntBetween(1, 100), keyed, format, aggregations));
}
InternalOrder order = (InternalOrder) randomFrom(InternalHistogram.Order.KEY_ASC, InternalHistogram.Order.KEY_DESC);
@@ -80,4 +91,9 @@ public class InternalDateHistogramTests extends InternalAggregationTestCase<Inte
protected Writeable.Reader<InternalDateHistogram> instanceReader() {
return InternalDateHistogram::new;
}
+
+ @Override
+ protected Class<? extends ParsedMultiBucketAggregation> implementationClass() {
+ return ParsedDateHistogram.class;
+ }
}
diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/histogram/InternalHistogramTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/histogram/InternalHistogramTests.java
index 0dd4a163f3..b4ecf828e7 100644
--- a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/histogram/InternalHistogramTests.java
+++ b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/histogram/InternalHistogramTests.java
@@ -23,6 +23,8 @@ import org.apache.lucene.util.TestUtil;
import org.elasticsearch.common.io.stream.Writeable.Reader;
import org.elasticsearch.search.DocValueFormat;
import org.elasticsearch.search.aggregations.InternalAggregations;
+import org.elasticsearch.search.aggregations.InternalMultiBucketAggregationTestCase;
+import org.elasticsearch.search.aggregations.ParsedMultiBucketAggregation;
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator;
import org.elasticsearch.test.InternalAggregationTestCase;
@@ -31,23 +33,33 @@ import java.util.List;
import java.util.Map;
import java.util.TreeMap;
-public class InternalHistogramTests extends InternalAggregationTestCase<InternalHistogram> {
+public class InternalHistogramTests extends InternalMultiBucketAggregationTestCase<InternalHistogram> {
+
+ private boolean keyed;
+ private DocValueFormat format;
+
+ @Override
+ public void setUp() throws Exception{
+ super.setUp();
+ keyed = randomBoolean();
+ format = randomNumericDocValueFormat();
+ }
@Override
- protected InternalHistogram createTestInstance(String name, List<PipelineAggregator> pipelineAggregators,
- Map<String, Object> metaData) {
- final boolean keyed = randomBoolean();
- final DocValueFormat format = DocValueFormat.RAW;
+ protected InternalHistogram createTestInstance(String name,
+ List<PipelineAggregator> pipelineAggregators,
+ Map<String, Object> metaData,
+ InternalAggregations aggregations) {
final int base = randomInt(50) - 30;
final int numBuckets = randomInt(10);
final int interval = randomIntBetween(1, 3);
List<InternalHistogram.Bucket> buckets = new ArrayList<>();
for (int i = 0; i < numBuckets; ++i) {
final int docCount = TestUtil.nextInt(random(), 1, 50);
- buckets.add(new InternalHistogram.Bucket(base + i * interval, docCount, keyed, format, InternalAggregations.EMPTY));
+ buckets.add(new InternalHistogram.Bucket(base + i * interval, docCount, keyed, format, aggregations));
}
- return new InternalHistogram(name, buckets, (InternalOrder) InternalHistogram.Order.KEY_ASC,
- 1, null, format, keyed, pipelineAggregators, metaData);
+ InternalOrder order = (InternalOrder) randomFrom(InternalHistogram.Order.KEY_ASC, InternalHistogram.Order.KEY_DESC);
+ return new InternalHistogram(name, buckets, order, 1, null, format, keyed, pipelineAggregators, metaData);
}
@Override
@@ -72,4 +84,8 @@ public class InternalHistogramTests extends InternalAggregationTestCase<Internal
return InternalHistogram::new;
}
+ @Override
+ protected Class<? extends ParsedMultiBucketAggregation> implementationClass() {
+ return ParsedHistogram.class;
+ }
}
diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/DoubleTermsTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/DoubleTermsTests.java
index 757d5647a1..45531e27dd 100644
--- a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/DoubleTermsTests.java
+++ b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/DoubleTermsTests.java
@@ -22,6 +22,7 @@ package org.elasticsearch.search.aggregations.bucket.terms;
import org.elasticsearch.common.io.stream.Writeable.Reader;
import org.elasticsearch.search.DocValueFormat;
import org.elasticsearch.search.aggregations.InternalAggregations;
+import org.elasticsearch.search.aggregations.ParsedMultiBucketAggregation;
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator;
import java.util.ArrayList;
@@ -33,17 +34,17 @@ import java.util.Set;
public class DoubleTermsTests extends InternalTermsTestCase {
@Override
- protected InternalTerms<?, ?> createTestInstance(
- String name,
- List<PipelineAggregator> pipelineAggregators,
- Map<String, Object> metaData) {
+ protected InternalTerms<?, ?> createTestInstance(String name,
+ List<PipelineAggregator> pipelineAggregators,
+ Map<String, Object> metaData,
+ InternalAggregations aggregations,
+ boolean showTermDocCountError,
+ long docCountError) {
Terms.Order order = Terms.Order.count(false);
long minDocCount = 1;
int requiredSize = 3;
int shardSize = requiredSize + 2;
- DocValueFormat format = DocValueFormat.RAW;
- boolean showTermDocCountError = false;
- long docCountError = -1;
+ DocValueFormat format = randomNumericDocValueFormat();
long otherDocCount = 0;
List<DoubleTerms.Bucket> buckets = new ArrayList<>();
final int numBuckets = randomInt(shardSize);
@@ -51,8 +52,7 @@ public class DoubleTermsTests extends InternalTermsTestCase {
for (int i = 0; i < numBuckets; ++i) {
double term = randomValueOtherThanMany(d -> terms.add(d) == false, random()::nextDouble);
int docCount = randomIntBetween(1, 100);
- buckets.add(new DoubleTerms.Bucket(term, docCount, InternalAggregations.EMPTY,
- showTermDocCountError, docCountError, format));
+ buckets.add(new DoubleTerms.Bucket(term, docCount, aggregations, showTermDocCountError, docCountError, format));
}
return new DoubleTerms(name, order, requiredSize, minDocCount, pipelineAggregators,
metaData, format, shardSize, showTermDocCountError, otherDocCount, buckets, docCountError);
@@ -63,4 +63,9 @@ public class DoubleTermsTests extends InternalTermsTestCase {
return DoubleTerms::new;
}
+ @Override
+ protected Class<? extends ParsedMultiBucketAggregation> implementationClass() {
+ return ParsedDoubleTerms.class;
+ }
+
}
diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/InternalTermsTestCase.java b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/InternalTermsTestCase.java
index 118f190bca..b8c44d5c9b 100644
--- a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/InternalTermsTestCase.java
+++ b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/InternalTermsTestCase.java
@@ -19,7 +19,10 @@
package org.elasticsearch.search.aggregations.bucket.terms;
+import org.elasticsearch.search.aggregations.InternalAggregations;
+import org.elasticsearch.search.aggregations.InternalMultiBucketAggregationTestCase;
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator;
+import org.junit.Before;
import org.elasticsearch.test.InternalAggregationTestCase;
import java.util.HashMap;
@@ -30,7 +33,31 @@ import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;
-public abstract class InternalTermsTestCase extends InternalAggregationTestCase<InternalTerms<?,?>> {
+public abstract class InternalTermsTestCase extends InternalMultiBucketAggregationTestCase<InternalTerms<?, ?>> {
+
+ private boolean showDocCount;
+ private long docCountError;
+
+ @Before
+ public void init() {
+ showDocCount = randomBoolean();
+ docCountError = showDocCount ? randomInt(1000) : -1;
+ }
+
+ @Override
+ protected InternalTerms<?, ?> createTestInstance(String name,
+ List<PipelineAggregator> pipelineAggregators,
+ Map<String, Object> metaData,
+ InternalAggregations aggregations) {
+ return createTestInstance(name, pipelineAggregators, metaData, aggregations, showDocCount, docCountError);
+ }
+
+ protected abstract InternalTerms<?, ?> createTestInstance(String name,
+ List<PipelineAggregator> pipelineAggregators,
+ Map<String, Object> metaData,
+ InternalAggregations aggregations,
+ boolean showTermDocCountError,
+ long docCountError);
@Override
protected InternalTerms<?, ?> createUnmappedInstance(
diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/LongTermsTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/LongTermsTests.java
index ff95984bc3..cc97e4989a 100644
--- a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/LongTermsTests.java
+++ b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/LongTermsTests.java
@@ -22,6 +22,7 @@ package org.elasticsearch.search.aggregations.bucket.terms;
import org.elasticsearch.common.io.stream.Writeable.Reader;
import org.elasticsearch.search.DocValueFormat;
import org.elasticsearch.search.aggregations.InternalAggregations;
+import org.elasticsearch.search.aggregations.ParsedMultiBucketAggregation;
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator;
import java.util.ArrayList;
@@ -33,17 +34,17 @@ import java.util.Set;
public class LongTermsTests extends InternalTermsTestCase {
@Override
- protected InternalTerms<?, ?> createTestInstance(
- String name,
- List<PipelineAggregator> pipelineAggregators,
- Map<String, Object> metaData) {
+ protected InternalTerms<?, ?> createTestInstance(String name,
+ List<PipelineAggregator> pipelineAggregators,
+ Map<String, Object> metaData,
+ InternalAggregations aggregations,
+ boolean showTermDocCountError,
+ long docCountError) {
Terms.Order order = Terms.Order.count(false);
long minDocCount = 1;
int requiredSize = 3;
int shardSize = requiredSize + 2;
- DocValueFormat format = DocValueFormat.RAW;
- boolean showTermDocCountError = false;
- long docCountError = -1;
+ DocValueFormat format = randomNumericDocValueFormat();
long otherDocCount = 0;
List<LongTerms.Bucket> buckets = new ArrayList<>();
final int numBuckets = randomInt(shardSize);
@@ -51,8 +52,7 @@ public class LongTermsTests extends InternalTermsTestCase {
for (int i = 0; i < numBuckets; ++i) {
long term = randomValueOtherThanMany(l -> terms.add(l) == false, random()::nextLong);
int docCount = randomIntBetween(1, 100);
- buckets.add(new LongTerms.Bucket(term, docCount, InternalAggregations.EMPTY,
- showTermDocCountError, docCountError, format));
+ buckets.add(new LongTerms.Bucket(term, docCount, aggregations, showTermDocCountError, docCountError, format));
}
return new LongTerms(name, order, requiredSize, minDocCount, pipelineAggregators,
metaData, format, shardSize, showTermDocCountError, otherDocCount, buckets, docCountError);
@@ -63,4 +63,8 @@ public class LongTermsTests extends InternalTermsTestCase {
return LongTerms::new;
}
+ @Override
+ protected Class<? extends ParsedMultiBucketAggregation> implementationClass() {
+ return ParsedLongTerms.class;
+ }
}
diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/StringTermsTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/StringTermsTests.java
index 64e814bd81..e909358be5 100644
--- a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/StringTermsTests.java
+++ b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/StringTermsTests.java
@@ -23,6 +23,7 @@ import org.apache.lucene.util.BytesRef;
import org.elasticsearch.common.io.stream.Writeable.Reader;
import org.elasticsearch.search.DocValueFormat;
import org.elasticsearch.search.aggregations.InternalAggregations;
+import org.elasticsearch.search.aggregations.ParsedMultiBucketAggregation;
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator;
import java.util.ArrayList;
@@ -34,17 +35,17 @@ import java.util.Set;
public class StringTermsTests extends InternalTermsTestCase {
@Override
- protected InternalTerms<?, ?> createTestInstance(
- String name,
- List<PipelineAggregator> pipelineAggregators,
- Map<String, Object> metaData) {
+ protected InternalTerms<?, ?> createTestInstance(String name,
+ List<PipelineAggregator> pipelineAggregators,
+ Map<String, Object> metaData,
+ InternalAggregations aggregations,
+ boolean showTermDocCountError,
+ long docCountError) {
Terms.Order order = Terms.Order.count(false);
long minDocCount = 1;
int requiredSize = 3;
int shardSize = requiredSize + 2;
DocValueFormat format = DocValueFormat.RAW;
- boolean showTermDocCountError = false;
- long docCountError = -1;
long otherDocCount = 0;
List<StringTerms.Bucket> buckets = new ArrayList<>();
final int numBuckets = randomInt(shardSize);
@@ -52,8 +53,7 @@ public class StringTermsTests extends InternalTermsTestCase {
for (int i = 0; i < numBuckets; ++i) {
BytesRef term = randomValueOtherThanMany(b -> terms.add(b) == false, () -> new BytesRef(randomAlphaOfLength(10)));
int docCount = randomIntBetween(1, 100);
- buckets.add(new StringTerms.Bucket(term, docCount, InternalAggregations.EMPTY,
- showTermDocCountError, docCountError, format));
+ buckets.add(new StringTerms.Bucket(term, docCount, aggregations, showTermDocCountError, docCountError, format));
}
return new StringTerms(name, order, requiredSize, minDocCount, pipelineAggregators,
metaData, format, shardSize, showTermDocCountError, otherDocCount, buckets, docCountError);
@@ -64,4 +64,8 @@ public class StringTermsTests extends InternalTermsTestCase {
return StringTerms::new;
}
+ @Override
+ protected Class<? extends ParsedMultiBucketAggregation> implementationClass() {
+ return ParsedStringTerms.class;
+ }
}