From a16ffd1d035a53903977c10e639cd9893c43437f Mon Sep 17 00:00:00 2001 From: Tanguy Leroux Date: Thu, 20 Apr 2017 12:24:14 +0200 Subject: [PATCH 1/3] [Test] Always check the XContent equivalent when parsing aggregations In InternalAggregationTestCase, we can check that the internal aggregation and the parsed aggregation always produce the same XContent even if the original internal aggregation has been shuffled or not. --- .../InternalAggregationTestCase.java | 21 ++++++++----------- .../AbstractPercentilesTestCase.java | 2 +- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/InternalAggregationTestCase.java b/core/src/test/java/org/elasticsearch/search/aggregations/InternalAggregationTestCase.java index 09b05dab84bd8..5bc1e6f6d6c5e 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/InternalAggregationTestCase.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/InternalAggregationTestCase.java @@ -203,15 +203,8 @@ public final void testFromXContent() throws IOException { assumeTrue("This test does not support the aggregation type yet", getNamedXContents().stream().filter(entry -> entry.name.match(aggregation.getType())).count() > 0); - final ToXContent.Params params = new ToXContent.MapParams(singletonMap(RestSearchAction.TYPED_KEYS_PARAM, "true")); - final boolean humanReadable = randomBoolean(); final XContentType xContentType = randomFrom(XContentType.values()); - final BytesReference originalBytes = toShuffledXContent(aggregation, xContentType, params, humanReadable); - - final Aggregation parsedAggregation = parse(aggregation, xContentType, humanReadable, randomBoolean()); - - final BytesReference parsedBytes = toXContent((ToXContent) parsedAggregation, xContentType, params, humanReadable); - assertToXContentEquivalent(originalBytes, parsedBytes, xContentType); + final Aggregation parsedAggregation = parseAndAssert(aggregation, xContentType, randomBoolean(), randomBoolean()); assertFromXContent(aggregation, (ParsedAggregation) parsedAggregation); } @@ -220,10 +213,10 @@ protected void assertFromXContent(T aggregation, ParsedAggregation parsedAggrega } @SuppressWarnings("unchecked") - protected

P parse(final InternalAggregation aggregation, - final XContentType xContentType, - final boolean humanReadable, - final boolean shuffled) throws IOException { + protected

P parseAndAssert(final InternalAggregation aggregation, + final XContentType xContentType, + final boolean humanReadable, + final boolean shuffled) throws IOException { final ToXContent.Params params = new ToXContent.MapParams(singletonMap(RestSearchAction.TYPED_KEYS_PARAM, "true")); final BytesReference originalBytes; @@ -255,6 +248,10 @@ protected

P parse(final InternalAggregation aggreg assertTrue(parsedAggregation instanceof ParsedAggregation); assertEquals(aggregation.getType(), ((ParsedAggregation) parsedAggregation).getType()); } + + BytesReference parsedBytes = toXContent((ToXContent) parsedAggregation, xContentType, params, humanReadable); + assertToXContentEquivalent(originalBytes, parsedBytes, xContentType); + return (P) parsedAggregation; } diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/percentiles/AbstractPercentilesTestCase.java b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/percentiles/AbstractPercentilesTestCase.java index b8648f5199ceb..92a8f06b7398d 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/percentiles/AbstractPercentilesTestCase.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/percentiles/AbstractPercentilesTestCase.java @@ -62,7 +62,7 @@ protected abstract T createTestInstance(String name, List pi public void testPercentilesIterators() throws IOException { final T aggregation = createTestInstance(); - final Iterable parsedAggregation = parse(aggregation, randomFrom(XContentType.values()), randomBoolean(), false); + final Iterable parsedAggregation = parseAndAssert(aggregation, randomFrom(XContentType.values()), randomBoolean(), false); Iterator it = aggregation.iterator(); Iterator parsedIt = parsedAggregation.iterator(); From ab951b37b7037dc226b3f883a6663446f886b62d Mon Sep 17 00:00:00 2001 From: Tanguy Leroux Date: Thu, 20 Apr 2017 12:36:20 +0200 Subject: [PATCH 2/3] Fix checkstyle violation --- .../metrics/percentiles/AbstractPercentilesTestCase.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/percentiles/AbstractPercentilesTestCase.java b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/percentiles/AbstractPercentilesTestCase.java index 92a8f06b7398d..1c9108114f4ae 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/percentiles/AbstractPercentilesTestCase.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/percentiles/AbstractPercentilesTestCase.java @@ -62,7 +62,8 @@ protected abstract T createTestInstance(String name, List pi public void testPercentilesIterators() throws IOException { final T aggregation = createTestInstance(); - final Iterable parsedAggregation = parseAndAssert(aggregation, randomFrom(XContentType.values()), randomBoolean(), false); + final Iterable parsedAggregation = + parseAndAssert(aggregation, randomFrom(XContentType.values()), randomBoolean(), false); Iterator it = aggregation.iterator(); Iterator parsedIt = parsedAggregation.iterator(); From 13f3a90afb2bbbe65b3ecda6fff5c7b4bcd09780 Mon Sep 17 00:00:00 2001 From: Tanguy Leroux Date: Thu, 20 Apr 2017 13:11:00 +0200 Subject: [PATCH 3/3] Update after Christoph review --- .../search/aggregations/InternalAggregationTestCase.java | 8 ++++---- .../metrics/percentiles/AbstractPercentilesTestCase.java | 3 +-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/InternalAggregationTestCase.java b/core/src/test/java/org/elasticsearch/search/aggregations/InternalAggregationTestCase.java index 5bc1e6f6d6c5e..fd6b9ecdc44c0 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/InternalAggregationTestCase.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/InternalAggregationTestCase.java @@ -203,8 +203,7 @@ public final void testFromXContent() throws IOException { assumeTrue("This test does not support the aggregation type yet", getNamedXContents().stream().filter(entry -> entry.name.match(aggregation.getType())).count() > 0); - final XContentType xContentType = randomFrom(XContentType.values()); - final Aggregation parsedAggregation = parseAndAssert(aggregation, xContentType, randomBoolean(), randomBoolean()); + final Aggregation parsedAggregation = parseAndAssert(aggregation, randomBoolean()); assertFromXContent(aggregation, (ParsedAggregation) parsedAggregation); } @@ -214,11 +213,12 @@ protected void assertFromXContent(T aggregation, ParsedAggregation parsedAggrega @SuppressWarnings("unchecked") protected

P parseAndAssert(final InternalAggregation aggregation, - final XContentType xContentType, - final boolean humanReadable, final boolean shuffled) throws IOException { final ToXContent.Params params = new ToXContent.MapParams(singletonMap(RestSearchAction.TYPED_KEYS_PARAM, "true")); + final XContentType xContentType = randomFrom(XContentType.values()); + final boolean humanReadable = randomBoolean(); + final BytesReference originalBytes; if (shuffled) { originalBytes = toShuffledXContent(aggregation, xContentType, params, humanReadable); diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/percentiles/AbstractPercentilesTestCase.java b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/percentiles/AbstractPercentilesTestCase.java index 1c9108114f4ae..510620d12aa59 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/percentiles/AbstractPercentilesTestCase.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/percentiles/AbstractPercentilesTestCase.java @@ -62,8 +62,7 @@ protected abstract T createTestInstance(String name, List pi public void testPercentilesIterators() throws IOException { final T aggregation = createTestInstance(); - final Iterable parsedAggregation = - parseAndAssert(aggregation, randomFrom(XContentType.values()), randomBoolean(), false); + final Iterable parsedAggregation = parseAndAssert(aggregation, false); Iterator it = aggregation.iterator(); Iterator parsedIt = parsedAggregation.iterator();