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/filter/InternalFilterTests.java6
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/bucket/filters/InternalFiltersTests.java30
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/bucket/geogrid/InternalGeoHashGridTests.java25
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/bucket/global/InternalGlobalTests.java5
-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.java35
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/bucket/missing/InternalMissingTests.java5
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/bucket/nested/InternalNestedTests.java6
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/bucket/nested/InternalReverseNestedTests.java6
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/bucket/range/InternalRangeTestCase.java30
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/bucket/range/InternalRangeTests.java26
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/bucket/range/date/InternalDateRangeTests.java9
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/bucket/range/geodistance/InternalGeoDistanceTests.java10
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/bucket/sampler/InternalSamplerTests.java6
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/DoubleTermsTests.java25
-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.java24
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/StringTermsTests.java22
18 files changed, 255 insertions, 72 deletions
diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/filter/InternalFilterTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/filter/InternalFilterTests.java
index 464f081f6c..d3c092ab65 100644
--- a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/filter/InternalFilterTests.java
+++ b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/filter/InternalFilterTests.java
@@ -22,6 +22,7 @@ package org.elasticsearch.search.aggregations.bucket.filter;
import org.elasticsearch.common.io.stream.Writeable.Reader;
import org.elasticsearch.search.aggregations.InternalAggregations;
import org.elasticsearch.search.aggregations.InternalSingleBucketAggregationTestCase;
+import org.elasticsearch.search.aggregations.bucket.ParsedSingleBucketAggregation;
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator;
import java.util.List;
@@ -43,4 +44,9 @@ public class InternalFilterTests extends InternalSingleBucketAggregationTestCase
protected Reader<InternalFilter> instanceReader() {
return InternalFilter::new;
}
+
+ @Override
+ protected Class<? extends ParsedSingleBucketAggregation> implementationClass() {
+ return ParsedFilter.class;
+ }
}
diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/filters/InternalFiltersTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/filters/InternalFiltersTests.java
index b21f201e79..03b5cb13d9 100644
--- a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/filters/InternalFiltersTests.java
+++ b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/filters/InternalFiltersTests.java
@@ -21,8 +21,9 @@ package org.elasticsearch.search.aggregations.bucket.filters;
import org.elasticsearch.common.io.stream.Writeable.Reader;
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.junit.Before;
import java.util.ArrayList;
@@ -30,30 +31,36 @@ import java.util.List;
import java.util.Map;
import java.util.TreeMap;
-public class InternalFiltersTests extends InternalAggregationTestCase<InternalFilters> {
+public class InternalFiltersTests extends InternalMultiBucketAggregationTestCase<InternalFilters> {
private boolean keyed;
- private final List<String> keys = new ArrayList<>();
+ private List<String> keys;
@Override
@Before
public void setUp() throws Exception {
super.setUp();
keyed = randomBoolean();
- int numKeys = randomIntBetween(1,10);
- for (int i = 0; i < numKeys; i++) {
- keys.add(randomAlphaOfLength(5));
+ keys = new ArrayList<>();
+ int numBuckets = randomIntBetween(1, 5);
+ for (int i = 0; i < numBuckets; i++) {
+ if (keyed) {
+ keys.add(randomAlphaOfLength(5));
+ } else {
+ // this is what the FiltersAggregationBuilder ctor does when not providing KeyedFilter
+ keys.add(String.valueOf(i));
+ }
}
-
}
@Override
- protected InternalFilters createTestInstance(String name, List<PipelineAggregator> pipelineAggregators, Map<String, Object> metaData) {
+ protected InternalFilters createTestInstance(String name, List<PipelineAggregator> pipelineAggregators, Map<String, Object> metaData,
+ InternalAggregations aggregations) {
final List<InternalFilters.InternalBucket> buckets = new ArrayList<>();
for (int i = 0; i < keys.size(); ++i) {
String key = keys.get(i);
int docCount = randomIntBetween(0, 1000);
- buckets.add( new InternalFilters.InternalBucket(key, docCount, InternalAggregations.EMPTY, keyed));
+ buckets.add(new InternalFilters.InternalBucket(key, docCount, aggregations, keyed));
}
return new InternalFilters(name, buckets, keyed, pipelineAggregators, metaData);
}
@@ -80,4 +87,9 @@ public class InternalFiltersTests extends InternalAggregationTestCase<InternalFi
return InternalFilters::new;
}
+ @Override
+ protected Class<? extends ParsedMultiBucketAggregation> implementationClass() {
+ return ParsedFilters.class;
+ }
+
}
diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/geogrid/InternalGeoHashGridTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/geogrid/InternalGeoHashGridTests.java
index a27b47946f..afa9defc78 100644
--- a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/geogrid/InternalGeoHashGridTests.java
+++ b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/geogrid/InternalGeoHashGridTests.java
@@ -22,24 +22,30 @@ import org.apache.lucene.index.IndexWriter;
import org.elasticsearch.common.geo.GeoHashUtils;
import org.elasticsearch.common.io.stream.Writeable;
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 java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-public class InternalGeoHashGridTests extends InternalAggregationTestCase<InternalGeoHashGrid> {
+public class InternalGeoHashGridTests extends InternalMultiBucketAggregationTestCase<InternalGeoHashGrid> {
@Override
- protected InternalGeoHashGrid createTestInstance(String name, List<PipelineAggregator> pipelineAggregators,
- Map<String, Object> metaData) {
- int size = randomIntBetween(1, 100);
+ protected InternalGeoHashGrid createTestInstance(String name,
+ List<PipelineAggregator> pipelineAggregators,
+ Map<String, Object> metaData,
+ InternalAggregations aggregations) {
+ int size = randomIntBetween(1, 3);
List<InternalGeoHashGrid.Bucket> buckets = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
- long geoHashAsLong = GeoHashUtils.longEncode(randomInt(90), randomInt(90), 4);
- buckets.add(new InternalGeoHashGrid.Bucket(geoHashAsLong, randomInt(IndexWriter.MAX_DOCS), InternalAggregations.EMPTY));
+ double latitude = randomDoubleBetween(-90.0, 90.0, false);
+ double longitude = randomDoubleBetween(-180.0, 180.0, false);
+
+ long geoHashAsLong = GeoHashUtils.longEncode(longitude, latitude, 4);
+ buckets.add(new InternalGeoHashGrid.Bucket(geoHashAsLong, randomInt(IndexWriter.MAX_DOCS), aggregations));
}
return new InternalGeoHashGrid(name, size, buckets, pipelineAggregators, metaData);
}
@@ -87,4 +93,9 @@ public class InternalGeoHashGridTests extends InternalAggregationTestCase<Intern
assertEquals(expected.getKey(), actual.getKey());
}
}
+
+ @Override
+ protected Class<? extends ParsedMultiBucketAggregation> implementationClass() {
+ return ParsedGeoHashGrid.class;
+ }
}
diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/global/InternalGlobalTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/global/InternalGlobalTests.java
index 2a284746bf..cb11574f86 100644
--- a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/global/InternalGlobalTests.java
+++ b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/global/InternalGlobalTests.java
@@ -22,6 +22,7 @@ package org.elasticsearch.search.aggregations.bucket.global;
import org.elasticsearch.common.io.stream.Writeable.Reader;
import org.elasticsearch.search.aggregations.InternalAggregations;
import org.elasticsearch.search.aggregations.InternalSingleBucketAggregationTestCase;
+import org.elasticsearch.search.aggregations.bucket.ParsedSingleBucketAggregation;
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator;
import java.util.List;
@@ -44,4 +45,8 @@ public class InternalGlobalTests extends InternalSingleBucketAggregationTestCase
return InternalGlobal::new;
}
+ @Override
+ protected Class<? extends ParsedSingleBucketAggregation> implementationClass() {
+ return ParsedGlobal.class;
+ }
}
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 17c29dc1ae..c34b6093e2 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.search.aggregations.BucketOrder;
import org.elasticsearch.test.InternalAggregationTestCase;
@@ -36,14 +38,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();
@@ -53,7 +64,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));
}
BucketOrder order = randomFrom(BucketOrder.key(true), BucketOrder.key(false));
@@ -81,4 +92,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 e0b30803fa..cb37dd9a37 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
@@ -22,33 +22,44 @@ package org.elasticsearch.search.aggregations.bucket.histogram;
import org.apache.lucene.util.TestUtil;
import org.elasticsearch.common.io.stream.Writeable.Reader;
import org.elasticsearch.search.DocValueFormat;
+import org.elasticsearch.search.aggregations.BucketOrder;
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.elasticsearch.search.aggregations.BucketOrder;
import java.util.ArrayList;
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, BucketOrder.key(true),
- 1, null, format, keyed, pipelineAggregators, metaData);
+ BucketOrder order = BucketOrder.key(randomBoolean());
+ return new InternalHistogram(name, buckets, order, 1, null, format, keyed, pipelineAggregators, metaData);
}
@Override
@@ -73,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/missing/InternalMissingTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/missing/InternalMissingTests.java
index 1a702e9402..71df2af079 100644
--- a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/missing/InternalMissingTests.java
+++ b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/missing/InternalMissingTests.java
@@ -22,6 +22,7 @@ package org.elasticsearch.search.aggregations.bucket.missing;
import org.elasticsearch.common.io.stream.Writeable.Reader;
import org.elasticsearch.search.aggregations.InternalAggregations;
import org.elasticsearch.search.aggregations.InternalSingleBucketAggregationTestCase;
+import org.elasticsearch.search.aggregations.bucket.ParsedSingleBucketAggregation;
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator;
import java.util.List;
@@ -44,4 +45,8 @@ public class InternalMissingTests extends InternalSingleBucketAggregationTestCas
return InternalMissing::new;
}
+ @Override
+ protected Class<? extends ParsedSingleBucketAggregation> implementationClass() {
+ return ParsedMissing.class;
+ }
}
diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/nested/InternalNestedTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/nested/InternalNestedTests.java
index a330c8a146..a43e0dd519 100644
--- a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/nested/InternalNestedTests.java
+++ b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/nested/InternalNestedTests.java
@@ -22,6 +22,7 @@ package org.elasticsearch.search.aggregations.bucket.nested;
import org.elasticsearch.common.io.stream.Writeable.Reader;
import org.elasticsearch.search.aggregations.InternalAggregations;
import org.elasticsearch.search.aggregations.InternalSingleBucketAggregationTestCase;
+import org.elasticsearch.search.aggregations.bucket.ParsedSingleBucketAggregation;
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator;
import java.util.List;
@@ -43,4 +44,9 @@ public class InternalNestedTests extends InternalSingleBucketAggregationTestCase
protected Reader<InternalNested> instanceReader() {
return InternalNested::new;
}
+
+ @Override
+ protected Class<? extends ParsedSingleBucketAggregation> implementationClass() {
+ return ParsedNested.class;
+ }
}
diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/nested/InternalReverseNestedTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/nested/InternalReverseNestedTests.java
index 069ac03829..ddfe10b27e 100644
--- a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/nested/InternalReverseNestedTests.java
+++ b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/nested/InternalReverseNestedTests.java
@@ -22,6 +22,7 @@ package org.elasticsearch.search.aggregations.bucket.nested;
import org.elasticsearch.common.io.stream.Writeable.Reader;
import org.elasticsearch.search.aggregations.InternalAggregations;
import org.elasticsearch.search.aggregations.InternalSingleBucketAggregationTestCase;
+import org.elasticsearch.search.aggregations.bucket.ParsedSingleBucketAggregation;
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator;
import java.util.List;
@@ -43,4 +44,9 @@ public class InternalReverseNestedTests extends InternalSingleBucketAggregationT
protected Reader<InternalReverseNested> instanceReader() {
return InternalReverseNested::new;
}
+
+ @Override
+ protected Class<? extends ParsedSingleBucketAggregation> implementationClass() {
+ return ParsedReverseNested.class;
+ }
}
diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/range/InternalRangeTestCase.java b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/range/InternalRangeTestCase.java
index 1edaea2f8e..1901f4800e 100644
--- a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/range/InternalRangeTestCase.java
+++ b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/range/InternalRangeTestCase.java
@@ -20,15 +20,17 @@
package org.elasticsearch.search.aggregations.bucket.range;
import org.elasticsearch.search.aggregations.InternalAggregation;
+import org.elasticsearch.search.aggregations.InternalAggregations;
+import org.elasticsearch.search.aggregations.InternalMultiBucketAggregationTestCase;
+import org.elasticsearch.search.aggregations.bucket.MultiBucketsAggregation;
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator;
-import org.elasticsearch.test.InternalAggregationTestCase;
import org.junit.Before;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
-public abstract class InternalRangeTestCase<T extends InternalAggregation & Range> extends InternalAggregationTestCase<T> {
+public abstract class InternalRangeTestCase<T extends InternalAggregation & Range> extends InternalMultiBucketAggregationTestCase<T> {
private boolean keyed;
@@ -40,13 +42,17 @@ public abstract class InternalRangeTestCase<T extends InternalAggregation & Rang
}
@Override
- protected T createTestInstance(String name, List<PipelineAggregator> pipelineAggregators, Map<String, Object> metaData) {
- return createTestInstance(name, pipelineAggregators, metaData, keyed);
+ protected T createTestInstance(String name,
+ List<PipelineAggregator> pipelineAggregators,
+ Map<String, Object> metaData,
+ InternalAggregations aggregations) {
+ return createTestInstance(name, pipelineAggregators, metaData, aggregations, keyed);
}
protected abstract T createTestInstance(String name,
List<PipelineAggregator> pipelineAggregators,
Map<String, Object> metaData,
+ InternalAggregations aggregations,
boolean keyed);
@Override
protected void assertReduced(T reduced, List<T> inputs) {
@@ -65,4 +71,20 @@ public abstract class InternalRangeTestCase<T extends InternalAggregation & Rang
}
assertEquals(expectedCounts, actualCounts);
}
+
+ @Override
+ protected void assertBucket(MultiBucketsAggregation.Bucket expected, MultiBucketsAggregation.Bucket actual, boolean checkOrder) {
+ super.assertBucket(expected, actual, checkOrder);
+
+ assertTrue(expected instanceof InternalRange.Bucket);
+ assertTrue(actual instanceof ParsedRange.ParsedBucket);
+
+ Range.Bucket expectedRange = (Range.Bucket) expected;
+ Range.Bucket actualRange = (Range.Bucket) actual;
+
+ assertEquals(expectedRange.getFrom(), actualRange.getFrom());
+ assertEquals(expectedRange.getFromAsString(), actualRange.getFromAsString());
+ assertEquals(expectedRange.getTo(), actualRange.getTo());
+ assertEquals(expectedRange.getToAsString(), actualRange.getToAsString());
+ }
}
diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/range/InternalRangeTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/range/InternalRangeTests.java
index 9264028d07..a235471852 100644
--- a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/range/InternalRangeTests.java
+++ b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/range/InternalRangeTests.java
@@ -23,6 +23,7 @@ import org.elasticsearch.common.collect.Tuple;
import org.elasticsearch.common.io.stream.Writeable;
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 org.junit.Before;
@@ -43,7 +44,7 @@ public class InternalRangeTests extends InternalRangeTestCase<InternalRange> {
format = randomNumericDocValueFormat();
final int interval = randomFrom(1, 5, 10, 25, 50, 100);
- final int numRanges = 1;//randomIntBetween(1, 10);
+ final int numRanges = randomIntBetween(1, 10);
List<Tuple<Double, Double>> listOfRanges = new ArrayList<>(numRanges);
for (int i = 0; i < numRanges; i++) {
@@ -58,11 +59,23 @@ public class InternalRangeTests extends InternalRangeTestCase<InternalRange> {
listOfRanges.add(Tuple.tuple(0.0, max / 2));
listOfRanges.add(Tuple.tuple(max / 3, max / 3 * 2));
}
+ if (rarely()) {
+ listOfRanges.add(Tuple.tuple(Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY));
+ }
+ if (rarely()) {
+ listOfRanges.add(Tuple.tuple(Double.NEGATIVE_INFINITY, randomDouble()));
+ }
+ if (rarely()) {
+ listOfRanges.add(Tuple.tuple(randomDouble(), Double.POSITIVE_INFINITY));
+ }
ranges = Collections.unmodifiableList(listOfRanges);
}
@Override
- protected InternalRange createTestInstance(String name, List<PipelineAggregator> pipelineAggregators, Map<String, Object> metaData,
+ protected InternalRange createTestInstance(String name,
+ List<PipelineAggregator> pipelineAggregators,
+ Map<String, Object> metaData,
+ InternalAggregations aggregations,
boolean keyed) {
final List<InternalRange.Bucket> buckets = new ArrayList<>();
for (int i = 0; i < ranges.size(); ++i) {
@@ -70,13 +83,18 @@ public class InternalRangeTests extends InternalRangeTestCase<InternalRange> {
int docCount = randomIntBetween(0, 1000);
double from = range.v1();
double to = range.v2();
- buckets.add( new InternalRange.Bucket("range_" + i, from, to, docCount, InternalAggregations.EMPTY, keyed, format));
+ buckets.add(new InternalRange.Bucket("range_" + i, from, to, docCount, aggregations, keyed, format));
}
- return new InternalRange<>(name, buckets, format, keyed, pipelineAggregators, Collections.emptyMap());
+ return new InternalRange<>(name, buckets, format, keyed, pipelineAggregators, metaData);
}
@Override
protected Writeable.Reader<InternalRange> instanceReader() {
return InternalRange::new;
}
+
+ @Override
+ protected Class<? extends ParsedMultiBucketAggregation> implementationClass() {
+ return ParsedRange.class;
+ }
}
diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/range/date/InternalDateRangeTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/range/date/InternalDateRangeTests.java
index bbfcdf7463..318e5f6b5a 100644
--- a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/range/date/InternalDateRangeTests.java
+++ b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/range/date/InternalDateRangeTests.java
@@ -23,6 +23,7 @@ import org.elasticsearch.common.collect.Tuple;
import org.elasticsearch.common.io.stream.Writeable;
import org.elasticsearch.search.DocValueFormat;
import org.elasticsearch.search.aggregations.InternalAggregations;
+import org.elasticsearch.search.aggregations.ParsedMultiBucketAggregation;
import org.elasticsearch.search.aggregations.bucket.range.InternalRangeTestCase;
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator;
import org.joda.time.DateTime;
@@ -78,6 +79,7 @@ public class InternalDateRangeTests extends InternalRangeTestCase<InternalDateRa
protected InternalDateRange createTestInstance(String name,
List<PipelineAggregator> pipelineAggregators,
Map<String, Object> metaData,
+ InternalAggregations aggregations,
boolean keyed) {
final List<InternalDateRange.Bucket> buckets = new ArrayList<>();
for (int i = 0; i < dateRanges.size(); ++i) {
@@ -85,7 +87,7 @@ public class InternalDateRangeTests extends InternalRangeTestCase<InternalDateRa
int docCount = randomIntBetween(0, 1000);
double from = range.v1();
double to = range.v2();
- buckets.add( new InternalDateRange.Bucket("range_" + i, from, to, docCount, InternalAggregations.EMPTY, keyed, format));
+ buckets.add(new InternalDateRange.Bucket("range_" + i, from, to, docCount, aggregations, keyed, format));
}
return new InternalDateRange(name, buckets, format, keyed, pipelineAggregators, metaData);
}
@@ -94,4 +96,9 @@ public class InternalDateRangeTests extends InternalRangeTestCase<InternalDateRa
protected Writeable.Reader<InternalDateRange> instanceReader() {
return InternalDateRange::new;
}
+
+ @Override
+ protected Class<? extends ParsedMultiBucketAggregation> implementationClass() {
+ return ParsedDateRange.class;
+ }
}
diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/range/geodistance/InternalGeoDistanceTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/range/geodistance/InternalGeoDistanceTests.java
index 9dd2a7a67c..25c0a9ae3e 100644
--- a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/range/geodistance/InternalGeoDistanceTests.java
+++ b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/range/geodistance/InternalGeoDistanceTests.java
@@ -22,6 +22,7 @@ package org.elasticsearch.search.aggregations.bucket.range.geodistance;
import org.elasticsearch.common.collect.Tuple;
import org.elasticsearch.common.io.stream.Writeable;
import org.elasticsearch.search.aggregations.InternalAggregations;
+import org.elasticsearch.search.aggregations.ParsedMultiBucketAggregation;
import org.elasticsearch.search.aggregations.bucket.range.InternalRangeTestCase;
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator;
import org.junit.Before;
@@ -58,6 +59,7 @@ public class InternalGeoDistanceTests extends InternalRangeTestCase<InternalGeoD
}
geoDistanceRanges = Collections.unmodifiableList(listOfRanges);
}
+
@Override
protected Writeable.Reader<InternalGeoDistance> instanceReader() {
return InternalGeoDistance::new;
@@ -67,6 +69,7 @@ public class InternalGeoDistanceTests extends InternalRangeTestCase<InternalGeoD
protected InternalGeoDistance createTestInstance(String name,
List<PipelineAggregator> pipelineAggregators,
Map<String, Object> metaData,
+ InternalAggregations aggregations,
boolean keyed) {
final List<InternalGeoDistance.Bucket> buckets = new ArrayList<>();
for (int i = 0; i < geoDistanceRanges.size(); ++i) {
@@ -74,8 +77,13 @@ public class InternalGeoDistanceTests extends InternalRangeTestCase<InternalGeoD
int docCount = randomIntBetween(0, 1000);
double from = range.v1();
double to = range.v2();
- buckets.add(new InternalGeoDistance.Bucket("range_" + i, from, to, docCount, InternalAggregations.EMPTY, keyed));
+ buckets.add(new InternalGeoDistance.Bucket("range_" + i, from, to, docCount, aggregations, keyed));
}
return new InternalGeoDistance(name, buckets, keyed, pipelineAggregators, metaData);
}
+
+ @Override
+ protected Class<? extends ParsedMultiBucketAggregation> implementationClass() {
+ return ParsedGeoDistance.class;
+ }
}
diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/sampler/InternalSamplerTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/sampler/InternalSamplerTests.java
index 23facaf8fd..f6288a9712 100644
--- a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/sampler/InternalSamplerTests.java
+++ b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/sampler/InternalSamplerTests.java
@@ -21,6 +21,7 @@ package org.elasticsearch.search.aggregations.bucket.sampler;
import org.elasticsearch.common.io.stream.Writeable;
import org.elasticsearch.search.aggregations.InternalAggregations;
import org.elasticsearch.search.aggregations.InternalSingleBucketAggregationTestCase;
+import org.elasticsearch.search.aggregations.bucket.ParsedSingleBucketAggregation;
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator;
import java.util.List;
@@ -42,4 +43,9 @@ public class InternalSamplerTests extends InternalSingleBucketAggregationTestCas
protected Writeable.Reader<InternalSampler> instanceReader() {
return InternalSampler::new;
}
+
+ @Override
+ protected Class<? extends ParsedSingleBucketAggregation> implementationClass() {
+ return ParsedSampler.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 6fbd299ab3..c2a0b726b8 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
@@ -21,9 +21,10 @@ 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.BucketOrder;
import org.elasticsearch.search.aggregations.InternalAggregations;
+import org.elasticsearch.search.aggregations.ParsedMultiBucketAggregation;
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator;
-import org.elasticsearch.search.aggregations.BucketOrder;
import java.util.ArrayList;
import java.util.HashSet;
@@ -34,17 +35,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) {
BucketOrder order = BucketOrder.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);
@@ -52,8 +53,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);
@@ -64,4 +64,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 96833091a1..941997d337 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
@@ -21,9 +21,10 @@ 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.BucketOrder;
import org.elasticsearch.search.aggregations.InternalAggregations;
+import org.elasticsearch.search.aggregations.ParsedMultiBucketAggregation;
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator;
-import org.elasticsearch.search.aggregations.BucketOrder;
import java.util.ArrayList;
import java.util.HashSet;
@@ -34,17 +35,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) {
BucketOrder order = BucketOrder.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);
@@ -52,8 +53,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);
@@ -64,4 +64,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 abac0f0b03..bdafb139d7 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
@@ -22,9 +22,10 @@ package org.elasticsearch.search.aggregations.bucket.terms;
import org.apache.lucene.util.BytesRef;
import org.elasticsearch.common.io.stream.Writeable.Reader;
import org.elasticsearch.search.DocValueFormat;
+import org.elasticsearch.search.aggregations.BucketOrder;
import org.elasticsearch.search.aggregations.InternalAggregations;
+import org.elasticsearch.search.aggregations.ParsedMultiBucketAggregation;
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator;
-import org.elasticsearch.search.aggregations.BucketOrder;
import java.util.ArrayList;
import java.util.HashSet;
@@ -35,17 +36,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) {
BucketOrder order = BucketOrder.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);
@@ -53,8 +54,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);
@@ -65,4 +65,8 @@ public class StringTermsTests extends InternalTermsTestCase {
return StringTerms::new;
}
+ @Override
+ protected Class<? extends ParsedMultiBucketAggregation> implementationClass() {
+ return ParsedStringTerms.class;
+ }
}