You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by sy...@apache.org on 2016/10/10 19:00:46 UTC

[4/9] hbase git commit: HBASE-16791 Fix TestDispatchMergingRegionsProcedure

HBASE-16791 Fix TestDispatchMergingRegionsProcedure


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/e06c3676
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/e06c3676
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/e06c3676

Branch: refs/heads/hbase-12439
Commit: e06c3676f1273f033e3e185ee9c1ec52c1c7cb31
Parents: 29d701a
Author: Matteo Bertozzi <ma...@cloudera.com>
Authored: Sat Oct 8 15:32:34 2016 -0700
Committer: Matteo Bertozzi <ma...@cloudera.com>
Committed: Sat Oct 8 15:32:34 2016 -0700

----------------------------------------------------------------------
 .../TestDispatchMergingRegionsProcedure.java    | 102 +++++++------------
 1 file changed, 39 insertions(+), 63 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/e06c3676/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestDispatchMergingRegionsProcedure.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestDispatchMergingRegionsProcedure.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestDispatchMergingRegionsProcedure.java
index 3612341..601f22f 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestDispatchMergingRegionsProcedure.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestDispatchMergingRegionsProcedure.java
@@ -64,7 +64,7 @@ public class TestDispatchMergingRegionsProcedure {
     conf.setInt("hbase.master.maximum.ping.server.attempts", 3);
     conf.setInt("hbase.master.ping.server.retry.sleep.interval", 1);
 
-    conf.setInt(MasterProcedureConstants.MASTER_PROCEDURE_THREADS, 3);
+    conf.setInt(MasterProcedureConstants.MASTER_PROCEDURE_THREADS, 1);
   }
 
   @BeforeClass
@@ -119,18 +119,9 @@ public class TestDispatchMergingRegionsProcedure {
     final TableName tableName = TableName.valueOf("testMergeTwoRegions");
     final ProcedureExecutor<MasterProcedureEnv> procExec = getMasterProcedureExecutor();
 
-    HTableDescriptor desc = new HTableDescriptor(tableName);
-    desc.addFamily(new HColumnDescriptor(FAMILY));
-    byte[][] splitRows = new byte[2][];
-    splitRows[0] = new byte[]{(byte)'3'};
-    splitRows[1] = new byte[]{(byte)'6'};
-    admin.createTable(desc, splitRows);
-
-    List<HRegionInfo> tableRegions;
-    HRegionInfo [] regionsToMerge = new HRegionInfo[2];
+    List<HRegionInfo> tableRegions = createTable(tableName, 3);
 
-    tableRegions = admin.getTableRegions(tableName);
-    assertEquals(3, admin.getTableRegions(tableName).size());
+    HRegionInfo[] regionsToMerge = new HRegionInfo[2];
     regionsToMerge[0] = tableRegions.get(0);
     regionsToMerge[1] = tableRegions.get(1);
 
@@ -139,7 +130,7 @@ public class TestDispatchMergingRegionsProcedure {
     ProcedureTestingUtility.waitProcedure(procExec, procId);
     ProcedureTestingUtility.assertProcNotFailed(procExec, procId);
 
-    assertEquals(2, admin.getTableRegions(tableName).size());
+    assertRegionCount(tableName, 2);
   }
 
   /**
@@ -150,20 +141,10 @@ public class TestDispatchMergingRegionsProcedure {
     final TableName tableName = TableName.valueOf("testMergeTwoRegions");
     final ProcedureExecutor<MasterProcedureEnv> procExec = getMasterProcedureExecutor();
 
-    HTableDescriptor desc = new HTableDescriptor(tableName);
-    desc.addFamily(new HColumnDescriptor(FAMILY));
-    byte[][] splitRows = new byte[3][];
-    splitRows[0] = new byte[]{(byte)'2'};
-    splitRows[1] = new byte[]{(byte)'4'};
-    splitRows[2] = new byte[]{(byte)'6'};
-    admin.createTable(desc, splitRows);
-
-    List<HRegionInfo> tableRegions;
-    HRegionInfo [] regionsToMerge1 = new HRegionInfo[2];
-    HRegionInfo [] regionsToMerge2 = new HRegionInfo[2];
+    List<HRegionInfo> tableRegions = createTable(tableName, 4);
 
-    tableRegions = admin.getTableRegions(tableName);
-    assertEquals(4, admin.getTableRegions(tableName).size());
+    HRegionInfo[] regionsToMerge1 = new HRegionInfo[2];
+    HRegionInfo[] regionsToMerge2 = new HRegionInfo[2];
     regionsToMerge1[0] = tableRegions.get(0);
     regionsToMerge1[1] = tableRegions.get(1);
     regionsToMerge2[0] = tableRegions.get(2);
@@ -178,7 +159,7 @@ public class TestDispatchMergingRegionsProcedure {
     ProcedureTestingUtility.assertProcNotFailed(procExec, procId1);
     ProcedureTestingUtility.assertProcNotFailed(procExec, procId2);
 
-    assertEquals(2, admin.getTableRegions(tableName).size());
+    assertRegionCount(tableName, 2);
   }
 
   @Test(timeout=60000)
@@ -186,18 +167,9 @@ public class TestDispatchMergingRegionsProcedure {
     final TableName tableName = TableName.valueOf("testMergeRegionsTwiceWithSameNonce");
     final ProcedureExecutor<MasterProcedureEnv> procExec = getMasterProcedureExecutor();
 
-    HTableDescriptor desc = new HTableDescriptor(tableName);
-    desc.addFamily(new HColumnDescriptor(FAMILY));
-    byte[][] splitRows = new byte[2][];
-    splitRows[0] = new byte[]{(byte)'3'};
-    splitRows[1] = new byte[]{(byte)'6'};
-    admin.createTable(desc, splitRows);
-
-    List<HRegionInfo> tableRegions;
-    HRegionInfo [] regionsToMerge = new HRegionInfo[2];
+    List<HRegionInfo> tableRegions = createTable(tableName, 3);
 
-    tableRegions = admin.getTableRegions(tableName);
-    assertEquals(3, admin.getTableRegions(tableName).size());
+    HRegionInfo[] regionsToMerge = new HRegionInfo[2];
     regionsToMerge[0] = tableRegions.get(0);
     regionsToMerge[1] = tableRegions.get(1);
 
@@ -205,13 +177,15 @@ public class TestDispatchMergingRegionsProcedure {
       procExec.getEnvironment(), tableName, regionsToMerge, true), nonceGroup, nonce);
     long procId2 = procExec.submitProcedure(new DispatchMergingRegionsProcedure(
       procExec.getEnvironment(), tableName, regionsToMerge, true), nonceGroup, nonce);
+    assertEquals(procId1, procId2);
+
     ProcedureTestingUtility.waitProcedure(procExec, procId1);
     ProcedureTestingUtility.assertProcNotFailed(procExec, procId1);
     // The second proc should succeed too - because it is the same proc.
     ProcedureTestingUtility.waitProcedure(procExec, procId2);
     ProcedureTestingUtility.assertProcNotFailed(procExec, procId2);
-    assertTrue(procId1 == procId2);
-    assertEquals(2, admin.getTableRegions(tableName).size());
+
+    assertRegionCount(tableName, 2);
   }
 
   @Test(timeout=60000)
@@ -219,21 +193,12 @@ public class TestDispatchMergingRegionsProcedure {
     final TableName tableName = TableName.valueOf("testRecoveryAndDoubleExecution");
     final ProcedureExecutor<MasterProcedureEnv> procExec = getMasterProcedureExecutor();
 
-    HTableDescriptor desc = new HTableDescriptor(tableName);
-    desc.addFamily(new HColumnDescriptor(FAMILY));
-    byte[][] splitRows = new byte[2][];
-    splitRows[0] = new byte[]{(byte)'3'};
-    splitRows[1] = new byte[]{(byte)'6'};
-    admin.createTable(desc, splitRows);
+    List<HRegionInfo> tableRegions = createTable(tableName, 3);
 
     ProcedureTestingUtility.waitNoProcedureRunning(procExec);
     ProcedureTestingUtility.setKillAndToggleBeforeStoreUpdate(procExec, true);
 
-    List<HRegionInfo> tableRegions;
-    HRegionInfo [] regionsToMerge = new HRegionInfo[2];
-
-    tableRegions = admin.getTableRegions(tableName);
-    assertEquals(3, admin.getTableRegions(tableName).size());
+    HRegionInfo[] regionsToMerge = new HRegionInfo[2];
     regionsToMerge[0] = tableRegions.get(0);
     regionsToMerge[1] = tableRegions.get(1);
 
@@ -246,7 +211,7 @@ public class TestDispatchMergingRegionsProcedure {
     MasterProcedureTestingUtility.testRecoveryAndDoubleExecution(procExec, procId, numberOfSteps);
     ProcedureTestingUtility.assertProcNotFailed(procExec, procId);
 
-    assertEquals(2, admin.getTableRegions(tableName).size());
+    assertRegionCount(tableName, 2);
   }
 
   @Test(timeout = 60000)
@@ -254,21 +219,12 @@ public class TestDispatchMergingRegionsProcedure {
     final TableName tableName = TableName.valueOf("testRollbackAndDoubleExecution");
     final ProcedureExecutor<MasterProcedureEnv> procExec = getMasterProcedureExecutor();
 
-    HTableDescriptor desc = new HTableDescriptor(tableName);
-    desc.addFamily(new HColumnDescriptor(FAMILY));
-    byte[][] splitRows = new byte[2][];
-    splitRows[0] = new byte[]{(byte)'3'};
-    splitRows[1] = new byte[]{(byte)'6'};
-    admin.createTable(desc, splitRows);
+    List<HRegionInfo> tableRegions = createTable(tableName, 3);
 
     ProcedureTestingUtility.waitNoProcedureRunning(procExec);
     ProcedureTestingUtility.setKillAndToggleBeforeStoreUpdate(procExec, true);
 
-    List<HRegionInfo> tableRegions;
-    HRegionInfo [] regionsToMerge = new HRegionInfo[2];
-
-    tableRegions = admin.getTableRegions(tableName);
-    assertEquals(3, admin.getTableRegions(tableName).size());
+    HRegionInfo[] regionsToMerge = new HRegionInfo[2];
     regionsToMerge[0] = tableRegions.get(0);
     regionsToMerge[1] = tableRegions.get(1);
 
@@ -280,6 +236,26 @@ public class TestDispatchMergingRegionsProcedure {
     MasterProcedureTestingUtility.testRollbackAndDoubleExecution(procExec, procId, numberOfSteps);
   }
 
+  private List<HRegionInfo> createTable(final TableName tableName, final int nregions)
+      throws Exception {
+    HTableDescriptor desc = new HTableDescriptor(tableName);
+    desc.addFamily(new HColumnDescriptor(FAMILY));
+    byte[][] splitRows = new byte[nregions - 1][];
+    for (int i = 0; i < splitRows.length; ++i) {
+      splitRows[i] = Bytes.toBytes(String.format("%d", i));
+    }
+    admin.createTable(desc, splitRows);
+    return assertRegionCount(tableName, nregions);
+  }
+
+  public List<HRegionInfo> assertRegionCount(final TableName tableName, final int nregions)
+      throws Exception {
+    UTIL.waitUntilNoRegionsInTransition();
+    List<HRegionInfo> tableRegions = admin.getTableRegions(tableName);
+    assertEquals(nregions, tableRegions.size());
+    return tableRegions;
+  }
+
   private ProcedureExecutor<MasterProcedureEnv> getMasterProcedureExecutor() {
     return UTIL.getHBaseCluster().getMaster().getMasterProcedureExecutor();
   }