You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sh...@apache.org on 2018/08/16 09:50:05 UTC

lucene-solr:master: SOLR-12607: Extract common code from testSplitAfterSplit and testSplitAfterSplit2 methods

Repository: lucene-solr
Updated Branches:
  refs/heads/master 887055d89 -> 94ecb0616


SOLR-12607: Extract common code from testSplitAfterSplit and testSplitAfterSplit2 methods

The testSplitAfterSplit and testSplitAfterSplit2 tests only differ in the kind of fault injection being used. The rest of the test code is exactly the same so the common code is extracted into a new method called splitAfterSplit.


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/94ecb061
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/94ecb061
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/94ecb061

Branch: refs/heads/master
Commit: 94ecb0616aff6619e83c568d3cd6debda26068f2
Parents: 887055d
Author: Shalin Shekhar Mangar <sh...@apache.org>
Authored: Thu Aug 16 15:19:56 2018 +0530
Committer: Shalin Shekhar Mangar <sh...@apache.org>
Committed: Thu Aug 16 15:19:56 2018 +0530

----------------------------------------------------------------------
 .../cloud/api/collections/ShardSplitTest.java   | 101 +++++++------------
 1 file changed, 36 insertions(+), 65 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/94ecb061/solr/core/src/test/org/apache/solr/cloud/api/collections/ShardSplitTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/api/collections/ShardSplitTest.java b/solr/core/src/test/org/apache/solr/cloud/api/collections/ShardSplitTest.java
index 6127cae..2b48fbe 100644
--- a/solr/core/src/test/org/apache/solr/cloud/api/collections/ShardSplitTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/api/collections/ShardSplitTest.java
@@ -65,6 +65,7 @@ import org.apache.solr.common.util.Utils;
 import org.apache.solr.update.SolrIndexSplitter;
 import org.apache.solr.util.LogLevel;
 import org.apache.solr.util.TestInjection;
+import org.apache.zookeeper.KeeperException;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -278,42 +279,45 @@ public class ShardSplitTest extends AbstractFullDistribZkTestBase {
 
     TestInjection.splitFailureBeforeReplicaCreation = "true:100"; // we definitely want split to fail
     try {
-      try {
-        CollectionAdminRequest.SplitShard splitShard = CollectionAdminRequest.splitShard(AbstractDistribZkTestBase.DEFAULT_COLLECTION);
-        splitShard.setShardName(SHARD1);
-        splitShard.process(cloudClient);
-        fail("Shard split was not supposed to succeed after failure injection!");
-      } catch (Exception e) {
-        // expected
-      }
+      splitAfterFailedSplit();
+    } finally {
+      TestInjection.reset();
+    }
+  }
 
-      // assert that sub-shards cores exist and sub-shard is in construction state
-      ZkStateReader zkStateReader = cloudClient.getZkStateReader();
-      zkStateReader.forceUpdateCollection(AbstractDistribZkTestBase.DEFAULT_COLLECTION);
-      ClusterState state = zkStateReader.getClusterState();
-      DocCollection collection = state.getCollection(AbstractDistribZkTestBase.DEFAULT_COLLECTION);
+  private void splitAfterFailedSplit() throws KeeperException, InterruptedException {
+    try {
+      CollectionAdminRequest.SplitShard splitShard = CollectionAdminRequest.splitShard(AbstractDistribZkTestBase.DEFAULT_COLLECTION);
+      splitShard.setShardName(SHARD1);
+      splitShard.process(cloudClient);
+      fail("Shard split was not supposed to succeed after failure injection!");
+    } catch (Exception e) {
+      // expected
+    }
 
-      // should be cleaned up
-      Slice shard10 = collection.getSlice(SHARD1_0);
-      assertNull(shard10);
+    // assert that sub-shards cores exist and sub-shard is in construction state
+    ZkStateReader zkStateReader = cloudClient.getZkStateReader();
+    zkStateReader.forceUpdateCollection(AbstractDistribZkTestBase.DEFAULT_COLLECTION);
+    ClusterState state = zkStateReader.getClusterState();
+    DocCollection collection = state.getCollection(AbstractDistribZkTestBase.DEFAULT_COLLECTION);
 
-      Slice shard11 = collection.getSlice(SHARD1_1);
-      assertNull(shard11);
+    // should be cleaned up
+    Slice shard10 = collection.getSlice(SHARD1_0);
+    assertNull(shard10);
 
-      // lets retry the split
-      TestInjection.reset(); // let the split succeed
-      try {
-        CollectionAdminRequest.SplitShard splitShard = CollectionAdminRequest.splitShard(AbstractDistribZkTestBase.DEFAULT_COLLECTION);
-        splitShard.setShardName(SHARD1);
-        splitShard.process(cloudClient);
-        // Yay!
-      } catch (Exception e) {
-        log.error("Shard split failed", e);
-        fail("Shard split did not succeed after a previous failed split attempt left sub-shards in construction state");
-      }
+    Slice shard11 = collection.getSlice(SHARD1_1);
+    assertNull(shard11);
 
-    } finally {
-      TestInjection.reset();
+    // lets retry the split
+    TestInjection.reset(); // let the split succeed
+    try {
+      CollectionAdminRequest.SplitShard splitShard = CollectionAdminRequest.splitShard(AbstractDistribZkTestBase.DEFAULT_COLLECTION);
+      splitShard.setShardName(SHARD1);
+      splitShard.process(cloudClient);
+      // Yay!
+    } catch (Exception e) {
+      log.error("Shard split failed", e);
+      fail("Shard split did not succeed after a previous failed split attempt left sub-shards in construction state");
     }
   }
 
@@ -323,40 +327,7 @@ public class ShardSplitTest extends AbstractFullDistribZkTestBase {
 
     TestInjection.splitFailureAfterReplicaCreation = "true:100"; // we definitely want split to fail
     try {
-      try {
-        CollectionAdminRequest.SplitShard splitShard = CollectionAdminRequest.splitShard(AbstractDistribZkTestBase.DEFAULT_COLLECTION);
-        splitShard.setShardName(SHARD1);
-        splitShard.process(cloudClient);
-        fail("Shard split was not supposed to succeed after failure injection!");
-      } catch (Exception e) {
-        // expected
-      }
-
-      // assert that sub-shards cores exist and sub-shard is in construction state
-      ZkStateReader zkStateReader = cloudClient.getZkStateReader();
-      zkStateReader.forceUpdateCollection(AbstractDistribZkTestBase.DEFAULT_COLLECTION);
-      ClusterState state = zkStateReader.getClusterState();
-      DocCollection collection = state.getCollection(AbstractDistribZkTestBase.DEFAULT_COLLECTION);
-
-      // should be cleaned up
-      Slice shard10 = collection.getSlice(SHARD1_0);
-      assertNull(shard10);
-
-      Slice shard11 = collection.getSlice(SHARD1_1);
-      assertNull(shard11);
-
-      // lets retry the split
-      TestInjection.reset(); // let the split succeed
-      try {
-        CollectionAdminRequest.SplitShard splitShard = CollectionAdminRequest.splitShard(AbstractDistribZkTestBase.DEFAULT_COLLECTION);
-        splitShard.setShardName(SHARD1);
-        splitShard.process(cloudClient);
-        // Yay!
-      } catch (Exception e) {
-        log.error("Shard split failed", e);
-        fail("Shard split did not succeed after a previous failed split attempt left sub-shards in construction state");
-      }
-
+      splitAfterFailedSplit();
     } finally {
       TestInjection.reset();
     }