You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jp...@apache.org on 2015/06/22 10:43:18 UTC

svn commit: r1686813 - /lucene/dev/trunk/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoinValidation.java

Author: jpountz
Date: Mon Jun 22 08:43:17 2015
New Revision: 1686813

URL: http://svn.apache.org/r1686813
Log:
Fix TestBlockJoinValidation expectations.

Modified:
    lucene/dev/trunk/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoinValidation.java

Modified: lucene/dev/trunk/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoinValidation.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoinValidation.java?rev=1686813&r1=1686812&r2=1686813&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoinValidation.java (original)
+++ lucene/dev/trunk/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoinValidation.java Mon Jun 22 08:43:17 2015
@@ -27,16 +27,22 @@ import org.apache.lucene.index.Directory
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.index.IndexWriterConfig;
+import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.IndexSearcher;
+import org.apache.lucene.search.MatchAllDocsQuery;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.QueryWrapperFilter;
+import org.apache.lucene.search.Scorer;
 import org.apache.lucene.search.TermQuery;
+import org.apache.lucene.search.Weight;
 import org.apache.lucene.search.WildcardQuery;
 import org.apache.lucene.store.Directory;
+import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.util.TestUtil;
 
 public class TestBlockJoinValidation extends LuceneTestCase {
 
@@ -120,21 +126,23 @@ public class TestBlockJoinValidation ext
   }
 
   public void testAdvanceValidationForToChildBjq() throws Exception {
-    int randomChildNumber = getRandomChildNumber(0);
-    // we need to make advance method meet wrong document, so random child number
-    // in BJQ must be greater than child number in Boolean clause
-    int nextRandomChildNumber = getRandomChildNumber(randomChildNumber);
-    Query parentQueryWithRandomChild = createParentsQueryWithOneChild(nextRandomChildNumber);
-    ToChildBlockJoinQuery blockJoinQuery = new ToChildBlockJoinQuery(parentQueryWithRandomChild, parentsFilter);
-    // advance() method is used by ConjunctionScorer, so we need to create Boolean conjunction query
-    BooleanQuery.Builder conjunctionQuery = new BooleanQuery.Builder();
-    WildcardQuery childQuery = new WildcardQuery(new Term("child", createFieldValue(randomChildNumber)));
-    conjunctionQuery.add(childQuery, BooleanClause.Occur.MUST);
-    conjunctionQuery.add(blockJoinQuery, BooleanClause.Occur.MUST);
-    
+    Query parentQuery = new MatchAllDocsQuery();
+    ToChildBlockJoinQuery blockJoinQuery = new ToChildBlockJoinQuery(parentQuery, parentsFilter);
+
+    final LeafReaderContext context = indexSearcher.getIndexReader().leaves().get(0);
+    Weight weight = indexSearcher.createNormalizedWeight(blockJoinQuery, true);
+    Scorer scorer = weight.scorer(context, context.reader().getLiveDocs());
+    final Bits parentDocs = parentsFilter.getDocIdSet(context).bits();
+
+    int target;
+    do {
+      // make the parent scorer advance to a doc ID which is not a parent
+      target = TestUtil.nextInt(random(), 0, context.reader().maxDoc() - 2);
+    } while (parentDocs.get(target + 1));
+
     try {
-      indexSearcher.search(conjunctionQuery.build(), 1);
-      fail("didn't get expected exception");
+      scorer.advance(target);
+      fail();
     } catch (IllegalStateException expected) {
       assertTrue(expected.getMessage() != null && expected.getMessage().contains(ToChildBlockJoinQuery.INVALID_QUERY_MESSAGE));
     }
@@ -205,10 +213,6 @@ public class TestBlockJoinValidation ext
     return childQueryWithRandomParent.build();
   }
 
-  private static Query createParentQuery() {
-    return new TermQuery(new Term("id", createFieldValue(getRandomParentId())));
-  }
-
   private static int getRandomParentId() {
     return random().nextInt(AMOUNT_OF_PARENT_DOCS * AMOUNT_OF_SEGMENTS);
   }