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 2020/09/14 16:15:18 UTC

[lucene-solr] 01/02: Make sure to test normal scorers with asserting wrappers. (#1834)

This is an automated email from the ASF dual-hosted git repository.

jpountz pushed a commit to branch branch_8x
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 6cd3fa0a2bf4d91e098d3300c3c4ddb7c6bc703c
Author: Julie Tibshirani <ju...@elastic.co>
AuthorDate: Mon Sep 14 09:06:41 2020 -0700

    Make sure to test normal scorers with asserting wrappers. (#1834)
---
 lucene/CHANGES.txt                                     |  4 +++-
 .../org/apache/lucene/facet/TestDrillSideways.java     | 18 ++++++++++++------
 .../lucene/facet/range/TestRangeFacetCounts.java       |  5 +++--
 .../java/org/apache/lucene/search/AssertingWeight.java | 13 +++++++++++--
 4 files changed, 29 insertions(+), 11 deletions(-)

diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 12fe913..bdf62dd 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -45,7 +45,9 @@ Improvements
 * LUCENE-9446: In BooleanQuery rewrite, always remove MatchAllDocsQuery filter clauses
   when possible. (Julie Tibshirani)
 
-* LUCENE-9501: Improve how Asserting* test classes handle singleton doc values.
+* LUCENE-9501: Improve coverage for Asserting* test classes: make sure to handle singleton doc
+  values, and sometimes exercise Weight#scorer instead of Weight#bulkScorer for top-level
+  queries. (Julie Tibshirani)
 
 * LUCENE-9511: Include StoredFieldsWriter in DWPT accounting to ensure that it's 
   heap consumption is taken into account when IndexWriter stalls or should flush
diff --git a/lucene/facet/src/test/org/apache/lucene/facet/TestDrillSideways.java b/lucene/facet/src/test/org/apache/lucene/facet/TestDrillSideways.java
index dfc32da..18a307c 100644
--- a/lucene/facet/src/test/org/apache/lucene/facet/TestDrillSideways.java
+++ b/lucene/facet/src/test/org/apache/lucene/facet/TestDrillSideways.java
@@ -115,6 +115,12 @@ public class TestDrillSideways extends FacetTestCase {
     };
   }
 
+  private IndexSearcher getNewSearcher(IndexReader reader) {
+    // Do not wrap with an asserting searcher, since DrillSidewaysQuery doesn't
+    // implement all the required components like Weight#scorer.
+    return newSearcher(reader, true, false);
+  }
+
   public void testBasic() throws Exception {
     Directory dir = newDirectory();
     Directory taxoDir = newDirectory();
@@ -154,7 +160,7 @@ public class TestDrillSideways extends FacetTestCase {
     writer.addDocument(config.build(taxoWriter, doc));
 
     // NRT open
-    IndexSearcher searcher = newSearcher(writer.getReader());
+    IndexSearcher searcher = getNewSearcher(writer.getReader());
 
     //System.out.println("searcher=" + searcher);
 
@@ -339,7 +345,7 @@ public class TestDrillSideways extends FacetTestCase {
     writer.addDocument(config.build(taxoWriter, doc));
 
     // NRT open
-    IndexSearcher searcher = newSearcher(writer.getReader());
+    IndexSearcher searcher = getNewSearcher(writer.getReader());
 
     //System.out.println("searcher=" + searcher);
 
@@ -402,7 +408,7 @@ public class TestDrillSideways extends FacetTestCase {
     writer.addDocument(config.build(taxoWriter, doc));
 
     // NRT open
-    IndexSearcher searcher = newSearcher(writer.getReader());
+    IndexSearcher searcher = getNewSearcher(writer.getReader());
 
     //System.out.println("searcher=" + searcher);
 
@@ -629,7 +635,7 @@ public class TestDrillSideways extends FacetTestCase {
     IndexReader r = w.getReader();
 
     final SortedSetDocValuesReaderState sortedSetDVState;
-    IndexSearcher s = newSearcher(r);
+    IndexSearcher s = getNewSearcher(r);
 
     if (doUseDV) {
       sortedSetDVState = new DefaultSortedSetDocValuesReaderState(s.getIndexReader());
@@ -1139,7 +1145,7 @@ public class TestDrillSideways extends FacetTestCase {
     Directory taxoDir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
     DirectoryTaxonomyWriter taxoWriter = new DirectoryTaxonomyWriter(taxoDir, IndexWriterConfig.OpenMode.CREATE);
-    IndexSearcher searcher = newSearcher(writer.getReader());
+    IndexSearcher searcher = getNewSearcher(writer.getReader());
     TaxonomyReader taxoReader = new DirectoryTaxonomyReader(taxoWriter);
 
     // Count "Author"
@@ -1178,7 +1184,7 @@ public class TestDrillSideways extends FacetTestCase {
     writer.addDocument(config.build(taxoWriter, doc));
 
     // NRT open
-    IndexSearcher searcher = newSearcher(writer.getReader());
+    IndexSearcher searcher = getNewSearcher(writer.getReader());
 
     // NRT open
     TaxonomyReader taxoReader = new DirectoryTaxonomyReader(taxoWriter);
diff --git a/lucene/facet/src/test/org/apache/lucene/facet/range/TestRangeFacetCounts.java b/lucene/facet/src/test/org/apache/lucene/facet/range/TestRangeFacetCounts.java
index 7a4367a..f1d847c 100644
--- a/lucene/facet/src/test/org/apache/lucene/facet/range/TestRangeFacetCounts.java
+++ b/lucene/facet/src/test/org/apache/lucene/facet/range/TestRangeFacetCounts.java
@@ -254,7 +254,7 @@ public class TestRangeFacetCounts extends FacetTestCase {
 
     final TaxonomyReader tr = new DirectoryTaxonomyReader(tw);
 
-    IndexSearcher s = newSearcher(r, false);
+    IndexSearcher s = newSearcher(r, false, false);
 
     if (VERBOSE) {
       System.out.println("TEST: searcher=" + s);
@@ -813,7 +813,8 @@ public class TestRangeFacetCounts extends FacetTestCase {
     FacetsCollector fc = new FacetsCollector();
 
     IndexReader r = writer.getReader();
-    IndexSearcher s = newSearcher(r);
+
+    IndexSearcher s = newSearcher(r, false, false);
     s.search(new MatchAllDocsQuery(), fc);
 
     final DoubleRange[] ranges = new DoubleRange[] {
diff --git a/lucene/test-framework/src/java/org/apache/lucene/search/AssertingWeight.java b/lucene/test-framework/src/java/org/apache/lucene/search/AssertingWeight.java
index 55fda23..88b9499 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/search/AssertingWeight.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/search/AssertingWeight.java
@@ -20,6 +20,8 @@ import java.io.IOException;
 import java.util.Random;
 import org.apache.lucene.index.LeafReaderContext;
 
+import static org.apache.lucene.util.LuceneTestCase.usually;
+
 class AssertingWeight extends FilterWeight {
 
   final Random random;
@@ -85,11 +87,18 @@ class AssertingWeight extends FilterWeight {
 
   @Override
   public BulkScorer bulkScorer(LeafReaderContext context) throws IOException {
-    BulkScorer inScorer = in.bulkScorer(context);
+    BulkScorer inScorer;
+    // We explicitly test both the delegate's bulk scorer, and also the normal scorer.
+    // This ensures that normal scorers are sometimes tested with an asserting wrapper.
+    if (usually(random)) {
+      inScorer = in.bulkScorer(context);
+    } else {
+      inScorer = super.bulkScorer(context);
+    }
+
     if (inScorer == null) {
       return null;
     }
-
     return AssertingBulkScorer.wrap(new Random(random.nextLong()), inScorer, context.reader().maxDoc(), scoreMode);
   }
 }