diff options
Diffstat (limited to 'core/src/test/java/org/elasticsearch/search/aggregations/bucket')
17 files changed, 234 insertions, 63 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/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; + } } |