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 2013/02/16 21:21:34 UTC

svn commit: r1446935 - in /lucene/dev/trunk/solr: core/src/java/org/apache/solr/cloud/ core/src/test-files/solr/collection1/conf/ core/src/test/org/apache/solr/cloud/ solrj/src/test/org/apache/solr/client/solrj/impl/ test-framework/src/java/org/apache/...

Author: markrmiller
Date: Sat Feb 16 20:21:33 2013
New Revision: 1446935

URL: http://svn.apache.org/r1446935
Log:
tests: improve some cloud tests

Modified:
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java
    lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-tlog.xml
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/ChaosMonkeySafeLeaderTest.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/RecoveryZkTest.java
    lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrServerTest.java
    lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/AbstractDistribZkTestBase.java
    lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java?rev=1446935&r1=1446934&r2=1446935&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java Sat Feb 16 20:21:33 2013
@@ -294,7 +294,7 @@ final class ShardLeaderElectionContext e
     
     Slice slices = zkController.getClusterState().getSlice(collection, shardId);
     int cnt = 0;
-    while (true && !isClosed) {
+    while (true && !isClosed && !cc.isShutDown()) {
       // wait for everyone to be up
       if (slices != null) {
         int found = 0;

Modified: lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-tlog.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-tlog.xml?rev=1446935&r1=1446934&r2=1446935&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-tlog.xml (original)
+++ lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-tlog.xml Sat Feb 16 20:21:33 2013
@@ -18,10 +18,21 @@
 -->
 
 <config>
+  <jmx />
+
   <luceneMatchVersion>${tests.luceneMatchVersion:LUCENE_CURRENT}</luceneMatchVersion>
-  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
+  
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}">
+    <!-- used to keep RAM reqs down for HdfsDirectoryFactory -->
+    <int name="solr.hdfs.blockcache.blocksperbank">${solr.hdfs.blockcache.blocksperbank:1024}</int>
+  </directoryFactory>
+  
   <dataDir>${solr.data.dir:}</dataDir>
 
+  <indexConfig>
+    <lockType>${solr.lock.type:native}</lockType>
+  </indexConfig>
+
   <!-- an update processor the explicitly excludes distrib to test
        clean errors when people attempt atomic updates w/o it
   -->
@@ -38,12 +49,14 @@
       <str name="omitHeader">true</str>
     </lst>
   </requestHandler>
+  
+  <requestHandler name="/replication" class="solr.ReplicationHandler" startup="lazy" /> 
 
   <requestHandler name="/update" class="solr.UpdateRequestHandler"  />
 
   <updateHandler class="solr.DirectUpdateHandler2">
     <updateLog>
-      <!-- <str name="dir">/tmp/solr/</str> -->
+      <str name="dir">${solr.ulog.dir:}</str>
     </updateLog>
   </updateHandler>
 
@@ -72,4 +85,35 @@
 
   <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" />
 
+  <updateRequestProcessorChain name="distrib-dup-test-chain-explicit">
+    <!-- explicit test using processors before and after distrib -->
+    <processor class="solr.RegexReplaceProcessorFactory">
+      <str name="fieldName">regex_dup_A_s</str>
+      <str name="pattern">x</str>
+      <str name="replacement">x_x</str>
+    </processor>
+    <processor class="solr.DistributedUpdateProcessorFactory" />
+    <processor class="solr.RegexReplaceProcessorFactory">
+      <str name="fieldName">regex_dup_B_s</str>
+      <str name="pattern">x</str>
+      <str name="replacement">x_x</str>
+    </processor>
+    <processor class="solr.RunUpdateProcessorFactory" />
+  </updateRequestProcessorChain>  
+
+  <updateRequestProcessorChain name="distrib-dup-test-chain-implicit">
+    <!-- implicit test w/o distrib declared-->
+    <processor class="solr.RegexReplaceProcessorFactory">
+      <str name="fieldName">regex_dup_A_s</str>
+      <str name="pattern">x</str>
+      <str name="replacement">x_x</str>
+    </processor>
+    <processor class="solr.RegexReplaceProcessorFactory">
+      <str name="fieldName">regex_dup_B_s</str>
+      <str name="pattern">x</str>
+      <str name="replacement">x_x</str>
+    </processor>
+    <processor class="solr.RunUpdateProcessorFactory" />
+  </updateRequestProcessorChain>  
+
 </config>

Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/ChaosMonkeySafeLeaderTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/ChaosMonkeySafeLeaderTest.java?rev=1446935&r1=1446934&r2=1446935&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/ChaosMonkeySafeLeaderTest.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/ChaosMonkeySafeLeaderTest.java Sat Feb 16 20:21:33 2013
@@ -20,7 +20,6 @@ package org.apache.solr.cloud;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.lucene.util.LuceneTestCase.BadApple;
 import org.apache.lucene.util.LuceneTestCase.Slow;
 import org.apache.solr.client.solrj.SolrQuery;
 import org.apache.solr.common.SolrInputDocument;
@@ -37,8 +36,7 @@ import org.junit.BeforeClass;
 @Slow
 public class ChaosMonkeySafeLeaderTest extends AbstractFullDistribZkTestBase {
   
-  private static final int BASE_RUN_LENGTH = 120000;
-  private static final int RUN_LENGTH = Integer.parseInt(System.getProperty("solr.tests.cloud.cm.runlength", Integer.toString(BASE_RUN_LENGTH)));
+  private static final Integer RUN_LENGTH = Integer.parseInt(System.getProperty("solr.tests.cloud.cm.runlength", "-1"));
 
   @BeforeClass
   public static void beforeSuperClass() {
@@ -104,7 +102,14 @@ public class ChaosMonkeySafeLeaderTest e
     }
     
     chaosMonkey.startTheMonkey(false, 500);
-    int runLength = RUN_LENGTH;
+    long runLength;
+    if (RUN_LENGTH != -1) {
+      runLength = RUN_LENGTH;
+    } else {
+      int[] runTimes = new int[] {5000,6000,10000,15000,15000,30000,30000,45000,90000,120000};
+      runLength = runTimes[random().nextInt(runTimes.length - 1)];
+    }
+
     Thread.sleep(runLength);
     
     chaosMonkey.stopTheMonkey();

Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/RecoveryZkTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/RecoveryZkTest.java?rev=1446935&r1=1446934&r2=1446935&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/RecoveryZkTest.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/RecoveryZkTest.java Sat Feb 16 20:21:33 2013
@@ -50,30 +50,37 @@ public class RecoveryZkTest extends Abst
     
     // start a couple indexing threads
     
-    indexThread = new StopableIndexingThread(0, true);
+    int[] maxDocList = new int[] {300, 700, 1200, 1350, 5000, 15000};
+    
+    int maxDoc = maxDocList[random().nextInt(maxDocList.length - 1)];
+    
+    indexThread = new StopableIndexingThread(0, true, maxDoc);
     indexThread.start();
     
-    indexThread2 = new StopableIndexingThread(10000, true);
+    indexThread2 = new StopableIndexingThread(10000, true, maxDoc);
     
     indexThread2.start();
 
     // give some time to index...
-    Thread.sleep(atLeast(2000));   
-    
+    int[] waitTimes = new int[] {2000, 3000, 5000};
+    Thread.sleep(waitTimes[random().nextInt(waitTimes.length - 1)]);
+     
     // bring shard replica down
     JettySolrRunner replica = chaosMonkey.stopShard("shard1", 1).jetty;
 
     
     // wait a moment - lets allow some docs to be indexed so replication time is non 0
-    Thread.sleep(atLeast(2000));
+    Thread.sleep(waitTimes[random().nextInt(waitTimes.length - 1)]);
     
     // bring shard replica up
     replica.start();
     
     // make sure replication can start
-    Thread.sleep(1500);
+    Thread.sleep(3000);
     ZkStateReader zkStateReader = cloudClient.getZkStateReader();
-    waitForRecoveriesToFinish(DEFAULT_COLLECTION, zkStateReader, false, true);
+    
+    // give some time for replication to complete
+    Thread.sleep(5000);
     
     // stop indexing threads
     indexThread.safeStop();
@@ -86,12 +93,10 @@ public class RecoveryZkTest extends Abst
   
     waitForThingsToLevelOut(30);
     
-    Thread.sleep(1000);
+    Thread.sleep(2000);
     
     waitForThingsToLevelOut(30);
     
-    Thread.sleep(5000);
-    
     waitForRecoveriesToFinish(DEFAULT_COLLECTION, zkStateReader, false, true);
 
     // test that leader and replica have same doc count

Modified: lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrServerTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrServerTest.java?rev=1446935&r1=1446934&r2=1446935&view=diff
==============================================================================
--- lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrServerTest.java (original)
+++ lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrServerTest.java Sat Feb 16 20:21:33 2013
@@ -52,6 +52,10 @@ public class CloudSolrServerTest extends
     
   }
   
+  protected String getCloudSolrConfig() {
+    return "solrconfig.xml";
+  }
+  
   @Override
   public String getSolrHome() {
     return SOLR_HOME;

Modified: lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/AbstractDistribZkTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/AbstractDistribZkTestBase.java?rev=1446935&r1=1446934&r2=1446935&view=diff
==============================================================================
--- lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/AbstractDistribZkTestBase.java (original)
+++ lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/AbstractDistribZkTestBase.java Sat Feb 16 20:21:33 2013
@@ -67,13 +67,17 @@ public abstract class AbstractDistribZkT
 
     String schema = getSchemaFile();
     if (schema == null) schema = "schema.xml";
-    AbstractZkTestCase.buildZooKeeper(zkServer.getZkHost(), zkServer.getZkAddress(), "solrconfig.xml", schema);
+    AbstractZkTestCase.buildZooKeeper(zkServer.getZkHost(), zkServer.getZkAddress(), getCloudSolrConfig(), schema);
 
     // set some system properties for use by tests
     System.setProperty("solr.test.sys.prop1", "propone");
     System.setProperty("solr.test.sys.prop2", "proptwo");
   }
   
+  protected String getCloudSolrConfig() {
+    return "solrconfig-tlog.xml";
+  }
+  
   @Override
   protected void createServers(int numShards) throws Exception {
     // give everyone there own solrhome

Modified: lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java?rev=1446935&r1=1446934&r2=1446935&view=diff
==============================================================================
--- lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java (original)
+++ lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java Sat Feb 16 20:21:33 2013
@@ -1140,21 +1140,34 @@ public abstract class AbstractFullDistri
     protected final List<Integer> deletes = new ArrayList<Integer>();
     protected final AtomicInteger fails = new AtomicInteger();
     protected boolean doDeletes;
+    private int numCycles;
     
     public StopableIndexingThread(int startI, boolean doDeletes) {
+      this(startI, doDeletes, -1);
+    }
+    
+    public StopableIndexingThread(int startI, boolean doDeletes, int numCycles) {
       super("StopableIndexingThread");
       this.startI = startI;
       this.doDeletes = doDeletes;
+      this.numCycles = numCycles;
       setDaemon(true);
     }
     
     @Override
     public void run() {
       int i = startI;
+      int numDone = 0;
       int numDeletes = 0;
       int numAdds = 0;
       
       while (true && !stop) {
+        if (numCycles != -1) {
+          if (numDone > numCycles) {
+            break;
+          }
+        }
+        ++numDone;
         ++i;
         boolean addFailed = false;
         
@@ -1202,6 +1215,7 @@ public abstract class AbstractFullDistri
     
     @Override
     public void safeStop() {
+      System.out.println("safe stop:");
       stop = true;
     }