You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ho...@apache.org on 2012/06/15 04:05:48 UTC

svn commit: r1350445 - in /lucene/dev/branches/branch_4x: ./ dev-tools/ lucene/ lucene/analysis/ lucene/analysis/common/ lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/std31/ lucene/analysis/common/src/java/org/apache/lucene/analys...

Author: hossman
Date: Fri Jun 15 02:05:45 2012
New Revision: 1350445

URL: http://svn.apache.org/viewvc?rev=1350445&view=rev
Log:
SOLR-3267: make TestSort.testRandomFieldNameSorts less wishy-washy about random strings that might produce function names (merge r1350444)

Modified:
    lucene/dev/branches/branch_4x/   (props changed)
    lucene/dev/branches/branch_4x/dev-tools/   (props changed)
    lucene/dev/branches/branch_4x/lucene/   (props changed)
    lucene/dev/branches/branch_4x/lucene/BUILD.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/CHANGES.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/JRE_VERSION_MIGRATION.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/LICENSE.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/MIGRATE.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/NOTICE.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/README.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/analysis/   (props changed)
    lucene/dev/branches/branch_4x/lucene/analysis/common/   (props changed)
    lucene/dev/branches/branch_4x/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/std31/package.html   (props changed)
    lucene/dev/branches/branch_4x/lucene/analysis/common/src/java/org/apache/lucene/analysis/standard/std34/package.html   (props changed)
    lucene/dev/branches/branch_4x/lucene/backwards/   (props changed)
    lucene/dev/branches/branch_4x/lucene/benchmark/   (props changed)
    lucene/dev/branches/branch_4x/lucene/build.xml   (props changed)
    lucene/dev/branches/branch_4x/lucene/common-build.xml   (props changed)
    lucene/dev/branches/branch_4x/lucene/core/   (props changed)
    lucene/dev/branches/branch_4x/lucene/demo/   (props changed)
    lucene/dev/branches/branch_4x/lucene/facet/   (props changed)
    lucene/dev/branches/branch_4x/lucene/grouping/   (props changed)
    lucene/dev/branches/branch_4x/lucene/highlighter/   (props changed)
    lucene/dev/branches/branch_4x/lucene/ivy-settings.xml   (props changed)
    lucene/dev/branches/branch_4x/lucene/join/   (props changed)
    lucene/dev/branches/branch_4x/lucene/memory/   (props changed)
    lucene/dev/branches/branch_4x/lucene/misc/   (props changed)
    lucene/dev/branches/branch_4x/lucene/module-build.xml   (props changed)
    lucene/dev/branches/branch_4x/lucene/queries/   (props changed)
    lucene/dev/branches/branch_4x/lucene/queryparser/   (props changed)
    lucene/dev/branches/branch_4x/lucene/sandbox/   (props changed)
    lucene/dev/branches/branch_4x/lucene/site/   (props changed)
    lucene/dev/branches/branch_4x/lucene/spatial/   (props changed)
    lucene/dev/branches/branch_4x/lucene/suggest/   (props changed)
    lucene/dev/branches/branch_4x/lucene/test-framework/   (props changed)
    lucene/dev/branches/branch_4x/lucene/tools/   (props changed)
    lucene/dev/branches/branch_4x/solr/   (props changed)
    lucene/dev/branches/branch_4x/solr/CHANGES.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/LICENSE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/NOTICE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/README.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/build.xml   (props changed)
    lucene/dev/branches/branch_4x/solr/cloud-dev/   (props changed)
    lucene/dev/branches/branch_4x/solr/common-build.xml   (props changed)
    lucene/dev/branches/branch_4x/solr/contrib/   (props changed)
    lucene/dev/branches/branch_4x/solr/core/   (props changed)
    lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestSort.java
    lucene/dev/branches/branch_4x/solr/dev-tools/   (props changed)
    lucene/dev/branches/branch_4x/solr/example/   (props changed)
    lucene/dev/branches/branch_4x/solr/lib/   (props changed)
    lucene/dev/branches/branch_4x/solr/lib/httpclient-LICENSE-ASL.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/lib/httpclient-NOTICE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/lib/httpcore-LICENSE-ASL.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/lib/httpcore-NOTICE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/lib/httpmime-LICENSE-ASL.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/lib/httpmime-NOTICE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/scripts/   (props changed)
    lucene/dev/branches/branch_4x/solr/solrj/   (props changed)
    lucene/dev/branches/branch_4x/solr/test-framework/   (props changed)
    lucene/dev/branches/branch_4x/solr/testlogging.properties   (props changed)
    lucene/dev/branches/branch_4x/solr/webapp/   (props changed)

Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestSort.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestSort.java?rev=1350445&r1=1350444&r2=1350445&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestSort.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestSort.java Fri Jun 15 02:05:45 2012
@@ -74,29 +74,37 @@ public class TestSort extends SolrTestCa
     SolrQueryRequest req = lrf.makeRequest("q", "*:*");
 
     final int iters = atLeast(5000);
-    int numberOfOddities = 0;
+
+    // infinite loop abort when trying to generate a non-blank sort "name"
+    final int nonBlankAttempts = 37;
 
     for (int i = 0; i < iters; i++) {
       final StringBuilder input = new StringBuilder();
       final String[] names = new String[_TestUtil.nextInt(r,1,10)];
       final boolean[] reverse = new boolean[names.length];
       for (int j = 0; j < names.length; j++) {
-        names[j] = _TestUtil.randomRealisticUnicodeString(r, 1, 20);
+        names[j] = null;
+        for (int k = 0; k < nonBlankAttempts && null == names[j]; k++) {
+          names[j] = _TestUtil.randomRealisticUnicodeString(r, 1, 100);
+
+          // munge anything that might make this a function
+          names[j] = names[j].replaceFirst("\\{","\\{\\{");
+          names[j] = names[j].replaceFirst("\\(","\\(\\(");
+          names[j] = names[j].replaceFirst("(\\\"|\\')","$1$1z");
+          names[j] = names[j].replaceFirst("(\\d)","$1x");
+
+          // eliminate pesky problem chars
+          names[j] = names[j].replaceAll("\\p{Cntrl}|\\p{javaWhitespace}","");
+          
+          if (0 == names[j].length()) {
+            names[j] = null;
+          }
+        }
+        // with luck this bad, never go to vegas
+        // alternatively: if (null == names[j]) names[j] = "never_go_to_vegas";
+        assertNotNull("Unable to generate a (non-blank) names["+j+"] after "
+                      + nonBlankAttempts + " attempts", names[j]);
 
-        // reduce the likelyhood that the random str is a valid query or func 
-        names[j] = names[j].replaceFirst("\\{","\\{\\{");
-        names[j] = names[j].replaceFirst("\\(","\\(\\(");
-        names[j] = names[j].replaceFirst("(\\\"|\\')","$1$1");
-        names[j] = names[j].replaceFirst("(\\d)","$1x");
-
-        // eliminate pesky problem chars
-        names[j] = names[j].replaceAll("\\p{Cntrl}|\\p{javaWhitespace}","");
-
-        if (0 == names[j].length()) {
-          numberOfOddities++;
-          // screw it, i'm taking my toys and going home
-          names[j] = "last_ditch_i_give_up";
-        }
         reverse[j] = r.nextBoolean();
 
         input.append(r.nextBoolean() ? " " : "");
@@ -120,38 +128,25 @@ public class TestSort extends SolrTestCa
         final Type type = sorts[j].getType();
 
         if (Type.SCORE.equals(type)) {
-          numberOfOddities++;
           assertEquals("sorts["+j+"] is (unexpectedly) type score : " + input,
                        "score", names[j]);
         } else if (Type.DOC.equals(type)) {
-          numberOfOddities++;
           assertEquals("sorts["+j+"] is (unexpectedly) type doc : " + input,
                        "_docid_", names[j]);
         } else if (Type.CUSTOM.equals(type) || Type.REWRITEABLE.equals(type)) {
-          numberOfOddities++;
 
-          // our orig string better be parsable as a func/query
-          QParser qp = 
-            QParser.getParser(names[j], FunctionQParserPlugin.NAME, req);
-          try { 
-            Query q = qp.getQuery();
-            assertNotNull("sorts["+j+"] had type " + type + 
-                          " but parsed to null func/query: " + input, q);
-          } catch (Exception e) {
-            assertNull("sorts["+j+"] had type " + type + 
-                       " but errored parsing as func/query: " + input, e);
-          }
+          fail("sorts["+j+"] resulted in a '" + type.toString()
+               + "', either sort parsing code is broken, or func/query " 
+               + "semantics have gotten broader and munging in this test "
+               + "needs improved: " + input);
+
         } else {
-          assertEquals("sorts["+j+"] had unexpected field: " + input,
+          assertEquals("sorts["+j+"] ("+type.toString()+
+                       ") had unexpected field in: " + input,
                        names[j], sorts[j].getField());
         }
       }
     }
-
-    assertTrue("Over 0.2% oddities in test: " +
-               numberOfOddities + "/" + iters +
-               " have func/query parsing semenatics gotten broader?",
-               numberOfOddities < 0.002 * iters);
   }