From f2b4ba9a7cc94766f14d56087b805aa29a3ac7a7 Mon Sep 17 00:00:00 2001 From: Simon Willnauer Date: Sat, 12 Sep 2015 11:18:44 +0200 Subject: [PATCH] [TEST] BooleanQuery iteration order is not consistent --- .../index/query/TermsQueryBuilderTests.java | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/core/src/test/java/org/elasticsearch/index/query/TermsQueryBuilderTests.java b/core/src/test/java/org/elasticsearch/index/query/TermsQueryBuilderTests.java index ea4896d20e1..73822ddccf1 100644 --- a/core/src/test/java/org/elasticsearch/index/query/TermsQueryBuilderTests.java +++ b/core/src/test/java/org/elasticsearch/index/query/TermsQueryBuilderTests.java @@ -25,6 +25,7 @@ import org.apache.lucene.search.BooleanClause; import org.apache.lucene.search.BooleanQuery; import org.apache.lucene.search.Query; import org.apache.lucene.search.TermQuery; +import org.apache.lucene.util.CollectionUtil; import org.elasticsearch.ElasticsearchException; import org.elasticsearch.action.get.GetRequest; import org.elasticsearch.action.get.GetResponse; @@ -40,10 +41,7 @@ import org.junit.Before; import org.junit.Test; import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Iterator; -import java.util.List; +import java.util.*; import static org.hamcrest.Matchers.*; @@ -115,16 +113,22 @@ public class TermsQueryBuilderTests extends AbstractQueryTestCase iter = terms.iterator(); + final List booleanTerms = new ArrayList<>(); for (BooleanClause booleanClause : booleanQuery) { assertThat(booleanClause.getQuery(), instanceOf(TermQuery.class)); Term term = ((TermQuery) booleanClause.getQuery()).getTerm(); - Object next = iter.next(); - if (next == null) { - continue; - } - assertThat(term, equalTo(new Term(queryBuilder.fieldName(), next.toString()))); + booleanTerms.add(term); } + CollectionUtil.timSort(booleanTerms); + List expectedTerms = new ArrayList<>(); + for (Object term : terms) { + if (term != null) { // terms lookup filters this out + expectedTerms.add(new Term(queryBuilder.fieldName(), term.toString())); + } + } + CollectionUtil.timSort(expectedTerms); + assertEquals(expectedTerms + " vs. " + booleanTerms, expectedTerms.size(), booleanTerms.size()); + assertEquals(expectedTerms + " vs. " + booleanTerms, expectedTerms, booleanTerms); } @Test @@ -263,7 +267,7 @@ public class TermsQueryBuilderTests extends AbstractQueryTestCase