You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2014/04/18 17:12:42 UTC

svn commit: r1588487 - in /lucene/dev/branches/branch_4x: ./ solr/ solr/core/ solr/core/src/test/org/apache/solr/cloud/ solr/test-framework/ solr/test-framework/src/java/org/apache/solr/cloud/

Author: markrmiller
Date: Fri Apr 18 15:12:41 2014
New Revision: 1588487

URL: http://svn.apache.org/r1588487
Log:
SOLR-5996: Fix checkIfDiffIsLegal, add some testing, refactor out a few methods into CloudInspectUtil.

Added:
    lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/TestCloudInspectUtil.java
      - copied, changed from r1588486, lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/TestCloudInspectUtil.java
    lucene/dev/branches/branch_4x/solr/test-framework/src/java/org/apache/solr/cloud/CloudInspectUtil.java
      - copied, changed from r1588486, lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/CloudInspectUtil.java
Modified:
    lucene/dev/branches/branch_4x/   (props changed)
    lucene/dev/branches/branch_4x/solr/   (props changed)
    lucene/dev/branches/branch_4x/solr/core/   (props changed)
    lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/FullSolrCloudDistribCmdsTest.java
    lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/SyncSliceTest.java
    lucene/dev/branches/branch_4x/solr/test-framework/   (props changed)
    lucene/dev/branches/branch_4x/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java

Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/FullSolrCloudDistribCmdsTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/FullSolrCloudDistribCmdsTest.java?rev=1588487&r1=1588486&r2=1588487&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/FullSolrCloudDistribCmdsTest.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/FullSolrCloudDistribCmdsTest.java Fri Apr 18 15:12:41 2014
@@ -412,7 +412,7 @@ public class FullSolrCloudDistribCmdsTes
     long cloudCount = cloudClient.query(query).getResults().getNumFound();
 
     
-    compareResults(controlCount, cloudCount);
+    CloudInspectUtil.compareResults(controlClient, cloudClient);
     
     assertEquals("Control does not match cloud", controlCount, cloudCount);
     System.out.println("DOCS:" + controlCount);

Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/SyncSliceTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/SyncSliceTest.java?rev=1588487&r1=1588486&r2=1588487&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/SyncSliceTest.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/SyncSliceTest.java Fri Apr 18 15:12:41 2014
@@ -219,11 +219,8 @@ public class SyncSliceTest extends Abstr
             + leaderJetty.url + " Dead Guy:" + deadJetty.url + "skip list:" + skipServers, shardFailMessage);
     
     // good place to test compareResults
-    boolean shouldFail = compareResults(
-        controlClient.query(new SolrQuery("*:*")).getResults().getNumFound(),
-        cloudClient.query(new SolrQuery("*:*")).getResults().getNumFound());
-    assertTrue("A test that compareResults is working correctly failed",
-        shouldFail);
+    boolean shouldFail = CloudInspectUtil.compareResults(controlClient, cloudClient);
+    assertTrue("A test that compareResults is working correctly failed", shouldFail);
     
     jetties = new HashSet<>();
     jetties.addAll(shardToJetty.get("shard1"));

Copied: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/TestCloudInspectUtil.java (from r1588486, lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/TestCloudInspectUtil.java)
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/TestCloudInspectUtil.java?p2=lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/TestCloudInspectUtil.java&p1=lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/TestCloudInspectUtil.java&r1=1588486&r2=1588487&rev=1588487&view=diff
==============================================================================
    (empty)

Modified: lucene/dev/branches/branch_4x/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java?rev=1588487&r1=1588486&r2=1588487&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java (original)
+++ lucene/dev/branches/branch_4x/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java Fri Apr 18 15:12:41 2014
@@ -1036,7 +1036,7 @@ public abstract class AbstractFullDistri
             SolrDocumentList lst1 = lastJetty.client.solrClient.query(query).getResults();
             SolrDocumentList lst2 = cjetty.client.solrClient.query(query).getResults();
 
-            showDiff(lst1, lst2, lastJetty.url, cjetty.url);
+            CloudInspectUtil.showDiff(lst1, lst2, lastJetty.url, cjetty.url);
           }
 
         }
@@ -1101,92 +1101,6 @@ public abstract class AbstractFullDistri
       }
     }
   }
-  
-  private String toStr(SolrDocumentList lst, int maxSz) {
-    if (lst.size() <= maxSz) return lst.toString();
-
-    StringBuilder sb = new StringBuilder("SolrDocumentList[sz=" + lst.size());
-    if (lst.size() != lst.getNumFound()) {
-      sb.append(" numFound=" + lst.getNumFound());
-    }
-    sb.append("]=");
-    sb.append(lst.subList(0,maxSz/2).toString());
-    sb.append(" , [...] , ");
-    sb.append(lst.subList(lst.size()-maxSz/2, lst.size()).toString());
-
-    return sb.toString();
-  }
-  
-  boolean checkIfDiffIsLegal(SolrDocumentList a, SolrDocumentList b, String aName, String bName, Set<String> addFails, Set<String> deleteFails) {
-    boolean legal = true;
-    Set<SolrDocument> setA = new HashSet<>();
-    for (SolrDocument sdoc : a) {
-      setA.add(sdoc);
-    }
-
-    Set<SolrDocument> setB = new HashSet<>();
-    for (SolrDocument sdoc : b) {
-      setB.add(sdoc);
-    }
-
-    Set<SolrDocument> onlyInA = new HashSet<>(setA);
-    onlyInA.removeAll(setB);
-    Set<SolrDocument> onlyInB = new HashSet<>(setB);
-    onlyInB.removeAll(setA);
-
-    for (SolrDocument doc : onlyInA) {
-      if (!addFails.contains(doc.getFirstValue("id"))) {
-        legal = false;
-      } else {
-        System.err.println("###### Only in " + aName + ": " + onlyInA
-            + ", but this is expected because we found an add fail for "
-            + doc.getFirstValue("id"));
-      }
-    }
-      
-    for (SolrDocument doc : onlyInB) {
-      if (!deleteFails.contains(doc.getFirstValue("id"))) {
-        legal = false;
-      } else {
-        System.err.println("###### Only in " + bName + ": " + onlyInB
-            + ", but this is expected because we found a delete fail for "
-            + doc.getFirstValue("id"));
-      }
-    }
-    
-    return legal;
-  }
-
-  Set<Map> showDiff(SolrDocumentList a, SolrDocumentList b, String aName, String bName) {
-    System.err.println("######"+aName+ ": " + toStr(a,10));
-    System.err.println("######"+bName+ ": " + toStr(b,10));
-    System.err.println("###### sizes=" + a.size() + "," + b.size());
-    
-    Set<Map> setA = new HashSet<>();
-    for (SolrDocument sdoc : a) {
-      setA.add(new HashMap(sdoc));
-    }
-
-    Set<Map> setB = new HashSet<>();
-    for (SolrDocument sdoc : b) {
-      setB.add(new HashMap(sdoc));
-    }
-
-    Set<Map> onlyInA = new HashSet<>(setA);
-    onlyInA.removeAll(setB);
-    Set<Map> onlyInB = new HashSet<>(setB);
-    onlyInB.removeAll(setA);
-
-    if (onlyInA.size() > 0) {
-      System.err.println("###### Only in " + aName + ": " + onlyInA);
-    }
-    if (onlyInB.size() > 0) {
-      System.err.println("###### Only in " + bName + ": " + onlyInB);
-    }
-
-    onlyInA.addAll(onlyInB);
-    return onlyInA;
-  }
 
   /* Checks both shard replcia consistency and against the control shard.
   * The test will be failed if differences are found.
@@ -1272,70 +1186,12 @@ public abstract class AbstractFullDistri
       String msg = "document count mismatch.  control=" + controlDocs + " sum(shards)="+ cnt + " cloudClient="+cloudClientDocs;
       log.error(msg);
 
-      boolean shouldFail = compareResults(controlDocs, cloudClientDocs, addFails, deleteFails);
+      boolean shouldFail = CloudInspectUtil.compareResults(controlClient, cloudClient, addFails, deleteFails);
       if (shouldFail) {
         fail(msg);
       }
     }
   }
-
-  protected boolean compareResults(long controlDocs, long cloudClientDocs)
-      throws SolrServerException {
-    return compareResults(controlDocs, cloudClientDocs, null, null);
-  }
-  
-  protected boolean compareResults(long controlDocs, long cloudClientDocs, Set<String> addFails, Set<String> deleteFails)
-      throws SolrServerException {
-    SolrParams q;
-    SolrDocumentList controlDocList;
-    SolrDocumentList cloudDocList;
-    // re-execute the query getting ids
-    q = params("q","*:*","rows","100000", "fl","id", "tests","checkShardConsistency(vsControl)/getIds");    // add a tag to aid in debugging via logs
-    controlDocList = controlClient.query(q).getResults();
-    if (controlDocs != controlDocList.getNumFound()) {
-      log.error("Something changed! control now " + controlDocList.getNumFound());
-    };
-
-    cloudDocList = cloudClient.query(q).getResults();
-    if (cloudClientDocs != cloudDocList.getNumFound()) {
-      log.error("Something changed! cloudClient now " + cloudDocList.getNumFound());
-    };
-
-    if (addFails != null || deleteFails != null) {
-      boolean legal = checkIfDiffIsLegal(controlDocList, cloudDocList,
-          "controlDocList", "cloudDocList", addFails, deleteFails);
-      if (legal) {
-        return false;
-      }
-    }
-    
-    Set<Map> differences = showDiff(controlDocList, cloudDocList,
-        "controlDocList", "cloudDocList");
-
-    // get versions for the mismatched ids
-    boolean foundId = false;
-    StringBuilder ids = new StringBuilder("id:(");
-    for (Map doc : differences) {
-      ids.append(" "+doc.get("id"));
-      foundId = true;
-    }
-    ids.append(")");
-    
-    if (foundId) {
-      // get versions for those ids that don't match
-      q = params("q", ids.toString(), "rows", "100000", "fl", "id,_version_",
-          "sort", "id asc", "tests",
-          "checkShardConsistency(vsControl)/getVers"); // add a tag to aid in
-                                                       // debugging via logs
-      
-      SolrDocumentList a = controlClient.query(q).getResults();
-      SolrDocumentList b = cloudClient.query(q).getResults();
-      
-      log.error("controlClient :" + a + "\n\tcloudClient :" + b);
-    }
-    
-    return true;
-  }
   
   protected SolrServer getClient(String nodeName) {
     for (CloudJettyRunner cjetty : cloudJettys) {

Copied: lucene/dev/branches/branch_4x/solr/test-framework/src/java/org/apache/solr/cloud/CloudInspectUtil.java (from r1588486, lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/CloudInspectUtil.java)
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/test-framework/src/java/org/apache/solr/cloud/CloudInspectUtil.java?p2=lucene/dev/branches/branch_4x/solr/test-framework/src/java/org/apache/solr/cloud/CloudInspectUtil.java&p1=lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/CloudInspectUtil.java&r1=1588486&r2=1588487&rev=1588487&view=diff
==============================================================================
    (empty)