From fa1052017c6102332c56ff26306d5a95f00ef879 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20B=C3=BCscher?= Date: Thu, 19 Apr 2018 13:50:18 +0200 Subject: [PATCH] [Test] Minor changes to rank_eval tests (#29577) Removing an enum in favour of local constants to simplify tests and removing a few deprecated method calls and warnings. --- .../DiscountedCumulativeGainTests.java | 2 +- .../rankeval/MeanReciprocalRankTests.java | 11 ++++--- .../index/rankeval/PrecisionAtKTests.java | 29 ++++++++++--------- .../index/rankeval/RankEvalRequestIT.java | 11 ++++--- .../index/rankeval/RankEvalSpecTests.java | 1 - .../index/rankeval/RatedRequestsTests.java | 7 ++--- .../index/rankeval/TestRatingEnum.java | 24 --------------- 7 files changed, 33 insertions(+), 52 deletions(-) delete mode 100644 modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/TestRatingEnum.java diff --git a/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/DiscountedCumulativeGainTests.java b/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/DiscountedCumulativeGainTests.java index 22c3542c0fab4..ba03a734ec760 100644 --- a/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/DiscountedCumulativeGainTests.java +++ b/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/DiscountedCumulativeGainTests.java @@ -253,7 +253,7 @@ private void assertParsedCorrect(String xContent, Integer expectedUnknownDocRati public static DiscountedCumulativeGain createTestItem() { boolean normalize = randomBoolean(); - Integer unknownDocRating = new Integer(randomIntBetween(0, 1000)); + Integer unknownDocRating = Integer.valueOf(randomIntBetween(0, 1000)); return new DiscountedCumulativeGain(normalize, unknownDocRating, 10); } diff --git a/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/MeanReciprocalRankTests.java b/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/MeanReciprocalRankTests.java index 6604dbc74a065..0ac9cb0d901e6 100644 --- a/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/MeanReciprocalRankTests.java +++ b/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/MeanReciprocalRankTests.java @@ -46,6 +46,9 @@ public class MeanReciprocalRankTests extends ESTestCase { + private static final int IRRELEVANT_RATING_0 = 0; + private static final int RELEVANT_RATING_1 = 1; + public void testParseFromXContent() throws IOException { String xContent = "{ }"; try (XContentParser parser = createParser(JsonXContent.jsonXContent, xContent)) { @@ -84,9 +87,9 @@ public void testMaxAcceptableRank() { int relevantAt = randomIntBetween(0, searchHits); for (int i = 0; i <= searchHits; i++) { if (i == relevantAt) { - ratedDocs.add(new RatedDocument("test", Integer.toString(i), TestRatingEnum.RELEVANT.ordinal())); + ratedDocs.add(new RatedDocument("test", Integer.toString(i), RELEVANT_RATING_1)); } else { - ratedDocs.add(new RatedDocument("test", Integer.toString(i), TestRatingEnum.IRRELEVANT.ordinal())); + ratedDocs.add(new RatedDocument("test", Integer.toString(i), IRRELEVANT_RATING_0)); } } @@ -110,9 +113,9 @@ public void testEvaluationOneRelevantInResults() { int relevantAt = randomIntBetween(0, 9); for (int i = 0; i <= 20; i++) { if (i == relevantAt) { - ratedDocs.add(new RatedDocument("test", Integer.toString(i), TestRatingEnum.RELEVANT.ordinal())); + ratedDocs.add(new RatedDocument("test", Integer.toString(i), RELEVANT_RATING_1)); } else { - ratedDocs.add(new RatedDocument("test", Integer.toString(i), TestRatingEnum.IRRELEVANT.ordinal())); + ratedDocs.add(new RatedDocument("test", Integer.toString(i), IRRELEVANT_RATING_0)); } } diff --git a/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/PrecisionAtKTests.java b/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/PrecisionAtKTests.java index aa3dd5a0b7e32..bf5bae4c334a9 100644 --- a/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/PrecisionAtKTests.java +++ b/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/PrecisionAtKTests.java @@ -46,9 +46,12 @@ public class PrecisionAtKTests extends ESTestCase { + private static final int IRRELEVANT_RATING_0 = 0; + private static final int RELEVANT_RATING_1 = 1; + public void testPrecisionAtFiveCalculation() { List rated = new ArrayList<>(); - rated.add(createRatedDoc("test", "0", TestRatingEnum.RELEVANT.ordinal())); + rated.add(createRatedDoc("test", "0", RELEVANT_RATING_1)); EvalQueryQuality evaluated = (new PrecisionAtK()).evaluate("id", toSearchHits(rated, "test"), rated); assertEquals(1, evaluated.getQualityLevel(), 0.00001); assertEquals(1, ((PrecisionAtK.Breakdown) evaluated.getMetricDetails()).getRelevantRetrieved()); @@ -57,11 +60,11 @@ public void testPrecisionAtFiveCalculation() { public void testPrecisionAtFiveIgnoreOneResult() { List rated = new ArrayList<>(); - rated.add(createRatedDoc("test", "0", TestRatingEnum.RELEVANT.ordinal())); - rated.add(createRatedDoc("test", "1", TestRatingEnum.RELEVANT.ordinal())); - rated.add(createRatedDoc("test", "2", TestRatingEnum.RELEVANT.ordinal())); - rated.add(createRatedDoc("test", "3", TestRatingEnum.RELEVANT.ordinal())); - rated.add(createRatedDoc("test", "4", TestRatingEnum.IRRELEVANT.ordinal())); + rated.add(createRatedDoc("test", "0", RELEVANT_RATING_1)); + rated.add(createRatedDoc("test", "1", RELEVANT_RATING_1)); + rated.add(createRatedDoc("test", "2", RELEVANT_RATING_1)); + rated.add(createRatedDoc("test", "3", RELEVANT_RATING_1)); + rated.add(createRatedDoc("test", "4", IRRELEVANT_RATING_0)); EvalQueryQuality evaluated = (new PrecisionAtK()).evaluate("id", toSearchHits(rated, "test"), rated); assertEquals((double) 4 / 5, evaluated.getQualityLevel(), 0.00001); assertEquals(4, ((PrecisionAtK.Breakdown) evaluated.getMetricDetails()).getRelevantRetrieved()); @@ -89,11 +92,11 @@ public void testPrecisionAtFiveRelevanceThreshold() { public void testPrecisionAtFiveCorrectIndex() { List rated = new ArrayList<>(); - rated.add(createRatedDoc("test_other", "0", TestRatingEnum.RELEVANT.ordinal())); - rated.add(createRatedDoc("test_other", "1", TestRatingEnum.RELEVANT.ordinal())); - rated.add(createRatedDoc("test", "0", TestRatingEnum.RELEVANT.ordinal())); - rated.add(createRatedDoc("test", "1", TestRatingEnum.RELEVANT.ordinal())); - rated.add(createRatedDoc("test", "2", TestRatingEnum.IRRELEVANT.ordinal())); + rated.add(createRatedDoc("test_other", "0", RELEVANT_RATING_1)); + rated.add(createRatedDoc("test_other", "1", RELEVANT_RATING_1)); + rated.add(createRatedDoc("test", "0", RELEVANT_RATING_1)); + rated.add(createRatedDoc("test", "1", RELEVANT_RATING_1)); + rated.add(createRatedDoc("test", "2", IRRELEVANT_RATING_0)); // the following search hits contain only the last three documents EvalQueryQuality evaluated = (new PrecisionAtK()).evaluate("id", toSearchHits(rated.subList(2, 5), "test"), rated); assertEquals((double) 2 / 3, evaluated.getQualityLevel(), 0.00001); @@ -103,8 +106,8 @@ public void testPrecisionAtFiveCorrectIndex() { public void testIgnoreUnlabeled() { List rated = new ArrayList<>(); - rated.add(createRatedDoc("test", "0", TestRatingEnum.RELEVANT.ordinal())); - rated.add(createRatedDoc("test", "1", TestRatingEnum.RELEVANT.ordinal())); + rated.add(createRatedDoc("test", "0", RELEVANT_RATING_1)); + rated.add(createRatedDoc("test", "1", RELEVANT_RATING_1)); // add an unlabeled search hit SearchHit[] searchHits = Arrays.copyOf(toSearchHits(rated, "test"), 3); searchHits[2] = new SearchHit(2, "2", new Text("testtype"), Collections.emptyMap()); diff --git a/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/RankEvalRequestIT.java b/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/RankEvalRequestIT.java index dc0bbddeb62b1..f0242e2bccdb6 100644 --- a/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/RankEvalRequestIT.java +++ b/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/RankEvalRequestIT.java @@ -43,6 +43,9 @@ import static org.hamcrest.Matchers.instanceOf; public class RankEvalRequestIT extends ESIntegTestCase { + + private static final int RELEVANT_RATING_1 = 1; + @Override protected Collection> transportClientPlugins() { return Arrays.asList(RankEvalPlugin.class); @@ -117,7 +120,7 @@ public void testPrecisionAtRequest() { if (id.equals("1") || id.equals("6")) { assertFalse(hit.getRating().isPresent()); } else { - assertEquals(TestRatingEnum.RELEVANT.ordinal(), hit.getRating().get().intValue()); + assertEquals(RELEVANT_RATING_1, hit.getRating().get().intValue()); } } } @@ -128,7 +131,7 @@ public void testPrecisionAtRequest() { for (RatedSearchHit hit : hitsAndRatings) { String id = hit.getSearchHit().getId(); if (id.equals("1")) { - assertEquals(TestRatingEnum.RELEVANT.ordinal(), hit.getRating().get().intValue()); + assertEquals(RELEVANT_RATING_1, hit.getRating().get().intValue()); } else { assertFalse(hit.getRating().isPresent()); } @@ -259,7 +262,7 @@ public void testBadQuery() { public void testIndicesOptions() { SearchSourceBuilder amsterdamQuery = new SearchSourceBuilder().query(new MatchAllQueryBuilder()); List relevantDocs = createRelevant("2", "3", "4", "5", "6"); - relevantDocs.add(new RatedDocument("test2", "7", TestRatingEnum.RELEVANT.ordinal())); + relevantDocs.add(new RatedDocument("test2", "7", RELEVANT_RATING_1)); List specifications = new ArrayList<>(); specifications.add(new RatedRequest("amsterdam_query", relevantDocs, amsterdamQuery)); RankEvalSpec task = new RankEvalSpec(specifications, new PrecisionAtK()); @@ -322,7 +325,7 @@ public void testIndicesOptions() { private static List createRelevant(String... docs) { List relevant = new ArrayList<>(); for (String doc : docs) { - relevant.add(new RatedDocument("test", doc, TestRatingEnum.RELEVANT.ordinal())); + relevant.add(new RatedDocument("test", doc, RELEVANT_RATING_1)); } return relevant; } diff --git a/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/RankEvalSpecTests.java b/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/RankEvalSpecTests.java index b49811a9bcaec..e0899b451af11 100644 --- a/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/RankEvalSpecTests.java +++ b/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/RankEvalSpecTests.java @@ -52,7 +52,6 @@ import static org.elasticsearch.test.EqualsHashCodeTestUtils.checkEqualsAndHashCode; import static org.elasticsearch.test.XContentTestUtils.insertRandomFields; import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.Matchers.startsWith; public class RankEvalSpecTests extends ESTestCase { diff --git a/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/RatedRequestsTests.java b/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/RatedRequestsTests.java index ad962178f581f..196b50b7f6163 100644 --- a/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/RatedRequestsTests.java +++ b/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/RatedRequestsTests.java @@ -19,8 +19,6 @@ package org.elasticsearch.index.rankeval; -import org.elasticsearch.ExceptionsHelper; -import org.elasticsearch.common.ParsingException; import org.elasticsearch.common.bytes.BytesReference; import org.elasticsearch.common.io.stream.NamedWriteableRegistry; import org.elasticsearch.common.settings.Settings; @@ -54,7 +52,6 @@ import static org.elasticsearch.test.EqualsHashCodeTestUtils.checkEqualsAndHashCode; import static org.elasticsearch.test.XContentTestUtils.insertRandomFields; import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.Matchers.startsWith; public class RatedRequestsTests extends ESTestCase { @@ -139,8 +136,8 @@ public void testXContentParsingIsNotLenient() throws IOException { Exception exception = expectThrows(Exception.class, () -> RatedRequest.fromXContent(parser)); if (exception instanceof XContentParseException) { XContentParseException xcpe = (XContentParseException) exception; - assertThat(ExceptionsHelper.detailedMessage(xcpe), containsString("unknown field")); - assertThat(ExceptionsHelper.detailedMessage(xcpe), containsString("parser not found")); + assertThat(xcpe.getCause().getMessage(), containsString("unknown field")); + assertThat(xcpe.getCause().getMessage(), containsString("parser not found")); } if (exception instanceof XContentParseException) { assertThat(exception.getMessage(), containsString("[request] failed to parse field")); diff --git a/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/TestRatingEnum.java b/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/TestRatingEnum.java deleted file mode 100644 index ea44c215d9214..0000000000000 --- a/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/TestRatingEnum.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.index.rankeval; - -enum TestRatingEnum { - IRRELEVANT, RELEVANT; -} \ No newline at end of file