You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zg...@apache.org on 2019/03/04 07:38:33 UTC

[hbase] branch branch-2 updated (21c7e88 -> 506e01a)

This is an automated email from the ASF dual-hosted git repository.

zghao pushed a change to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git.


    from 21c7e88  HBASE-21983 Should track the scan metrics in AsyncScanSingleRegionRpcRetryingCaller if scan metrics is enabled
     new 6f8f0fa  Revert "HBASE-20193 Move TestCreateTableProcedure.testMRegions to a separated file"
     new ab8d9e7  HBASE-21093 Move TestCreateTableProcedure.testMRegions to a separated file
     new f7aca3f  Revert "HBASE-20194 Remove the explicit timeout config for TestTruncateTableProcedure"
     new 506e01a  HBASE-21094 Remove the explicit timeout config for TestTruncateTableProcedure

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:


[hbase] 03/04: Revert "HBASE-20194 Remove the explicit timeout config for TestTruncateTableProcedure"

Posted by zg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

zghao pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git

commit f7aca3fa060d8403dd4c8068561b02af8a3f8fd2
Author: Guanghao Zhang <zg...@apache.org>
AuthorDate: Mon Mar 4 15:32:13 2019 +0800

    Revert "HBASE-20194 Remove the explicit timeout config for TestTruncateTableProcedure"
    
    This reverts commit cc6fc1f04f5f59e0dca2e649bde6d1dc078e6748.
---
 .../procedure/TestTruncateTableProcedure.java      | 38 ++++++++++++----------
 1 file changed, 20 insertions(+), 18 deletions(-)

diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestTruncateTableProcedure.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestTruncateTableProcedure.java
index b4a86d7..ea6ee0e 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestTruncateTableProcedure.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestTruncateTableProcedure.java
@@ -55,12 +55,12 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos;
 
-@Category({ MasterTests.class, MediumTests.class })
+@Category({MasterTests.class, MediumTests.class})
 public class TestTruncateTableProcedure extends TestTableDDLProcedureBase {
 
   @ClassRule
   public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestTruncateTableProcedure.class);
+      HBaseClassTestRule.forClass(TestTruncateTableProcedure.class);
 
   private static final Logger LOG = LoggerFactory.getLogger(TestTruncateTableProcedure.class);
 
@@ -316,7 +316,7 @@ public class TestTruncateTableProcedure extends TestTableDDLProcedureBase {
     ProcedureTestingUtility.assertProcNotFailed(procExec, procId);
   }
 
-  @Test
+  @Test(timeout = 60000)
   public void testTruncateWithPreserveAfterSplit() throws Exception {
     String[] families = new String[] { "f1", "f2" };
     byte[][] splitKeys =
@@ -324,10 +324,10 @@ public class TestTruncateTableProcedure extends TestTableDDLProcedureBase {
     TableName tableName = TableName.valueOf(name.getMethodName());
     RegionInfo[] regions = MasterProcedureTestingUtility.createTable(getMasterProcedureExecutor(),
       tableName, splitKeys, families);
-    splitAndTruncate(tableName, regions, 1);
+    splitAndTruncate(tableName, regions);
   }
 
-  @Test
+  @Test(timeout = 60000)
   public void testTruncatePreserveWithReplicaRegionAfterSplit() throws Exception {
     String[] families = new String[] { "f1", "f2" };
     byte[][] splitKeys =
@@ -335,10 +335,12 @@ public class TestTruncateTableProcedure extends TestTableDDLProcedureBase {
     TableName tableName = TableName.valueOf(name.getMethodName());
 
     // create a table with region replications
-    TableDescriptor htd = TableDescriptorBuilder.newBuilder(tableName).setRegionReplication(3)
-      .setColumnFamilies(Arrays.stream(families)
-        .map(fam -> ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes(fam)).build())
-        .collect(Collectors.toList()))
+    TableDescriptor htd = TableDescriptorBuilder.newBuilder(tableName)
+      .setRegionReplication(3)
+      .setColumnFamilies(
+        Arrays.stream(families)
+         .map(fam -> ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes(fam)).build())
+         .collect(Collectors.toList()))
       .build();
     RegionInfo[] regions = ModifyRegionUtils.createRegionInfos(htd, splitKeys);
     ProcedureExecutor<MasterProcedureEnv> procExec = getMasterProcedureExecutor();
@@ -346,17 +348,20 @@ public class TestTruncateTableProcedure extends TestTableDDLProcedureBase {
       new CreateTableProcedure(procExec.getEnvironment(), htd, regions));
     ProcedureTestingUtility.assertProcNotFailed(procExec.getResult(procId));
 
-    splitAndTruncate(tableName, regions, 3);
+    splitAndTruncate(tableName, regions);
   }
 
-  private void splitAndTruncate(TableName tableName, RegionInfo[] regions, int regionReplication)
-      throws IOException, InterruptedException {
+  private void splitAndTruncate(TableName tableName, RegionInfo[] regions) throws IOException,
+    InterruptedException {
+
     // split a region
-    UTIL.getAdmin().split(tableName, new byte[] { '0' });
+    UTIL.getAdmin().split(tableName, new byte[]{'0'});
+    UTIL.waitUntilAllRegionsAssigned(tableName);
 
     // wait until split really happens
-    UTIL.waitFor(60000,
-      () -> UTIL.getAdmin().getRegions(tableName).size() > regions.length * regionReplication);
+    while (UTIL.getAdmin().getRegions(tableName).size() <= regions.length) {
+      Thread.sleep(50);
+    }
 
     // disable the table
     UTIL.getAdmin().disableTable(tableName);
@@ -368,8 +373,5 @@ public class TestTruncateTableProcedure extends TestTableDDLProcedureBase {
     ProcedureTestingUtility.assertProcNotFailed(procExec, procId);
 
     UTIL.waitUntilAllRegionsAssigned(tableName);
-    // confirm that we have the correct number of regions
-    assertEquals((regions.length + 1) * regionReplication,
-      UTIL.getAdmin().getRegions(tableName).size());
   }
 }


[hbase] 04/04: HBASE-21094 Remove the explicit timeout config for TestTruncateTableProcedure

Posted by zg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

zghao pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git

commit 506e01a0647e6df5b15a4f1ae9eb9c0652909283
Author: Duo Zhang <zh...@apache.org>
AuthorDate: Wed Aug 22 11:29:23 2018 +0800

    HBASE-21094 Remove the explicit timeout config for TestTruncateTableProcedure
    
    Signed-off-by: Guanghao Zhang <zg...@apache.org>
---
 .../procedure/TestTruncateTableProcedure.java      | 38 ++++++++++------------
 1 file changed, 18 insertions(+), 20 deletions(-)

diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestTruncateTableProcedure.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestTruncateTableProcedure.java
index ea6ee0e..b4a86d7 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestTruncateTableProcedure.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestTruncateTableProcedure.java
@@ -55,12 +55,12 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos;
 
-@Category({MasterTests.class, MediumTests.class})
+@Category({ MasterTests.class, MediumTests.class })
 public class TestTruncateTableProcedure extends TestTableDDLProcedureBase {
 
   @ClassRule
   public static final HBaseClassTestRule CLASS_RULE =
-      HBaseClassTestRule.forClass(TestTruncateTableProcedure.class);
+    HBaseClassTestRule.forClass(TestTruncateTableProcedure.class);
 
   private static final Logger LOG = LoggerFactory.getLogger(TestTruncateTableProcedure.class);
 
@@ -316,7 +316,7 @@ public class TestTruncateTableProcedure extends TestTableDDLProcedureBase {
     ProcedureTestingUtility.assertProcNotFailed(procExec, procId);
   }
 
-  @Test(timeout = 60000)
+  @Test
   public void testTruncateWithPreserveAfterSplit() throws Exception {
     String[] families = new String[] { "f1", "f2" };
     byte[][] splitKeys =
@@ -324,10 +324,10 @@ public class TestTruncateTableProcedure extends TestTableDDLProcedureBase {
     TableName tableName = TableName.valueOf(name.getMethodName());
     RegionInfo[] regions = MasterProcedureTestingUtility.createTable(getMasterProcedureExecutor(),
       tableName, splitKeys, families);
-    splitAndTruncate(tableName, regions);
+    splitAndTruncate(tableName, regions, 1);
   }
 
-  @Test(timeout = 60000)
+  @Test
   public void testTruncatePreserveWithReplicaRegionAfterSplit() throws Exception {
     String[] families = new String[] { "f1", "f2" };
     byte[][] splitKeys =
@@ -335,12 +335,10 @@ public class TestTruncateTableProcedure extends TestTableDDLProcedureBase {
     TableName tableName = TableName.valueOf(name.getMethodName());
 
     // create a table with region replications
-    TableDescriptor htd = TableDescriptorBuilder.newBuilder(tableName)
-      .setRegionReplication(3)
-      .setColumnFamilies(
-        Arrays.stream(families)
-         .map(fam -> ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes(fam)).build())
-         .collect(Collectors.toList()))
+    TableDescriptor htd = TableDescriptorBuilder.newBuilder(tableName).setRegionReplication(3)
+      .setColumnFamilies(Arrays.stream(families)
+        .map(fam -> ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes(fam)).build())
+        .collect(Collectors.toList()))
       .build();
     RegionInfo[] regions = ModifyRegionUtils.createRegionInfos(htd, splitKeys);
     ProcedureExecutor<MasterProcedureEnv> procExec = getMasterProcedureExecutor();
@@ -348,20 +346,17 @@ public class TestTruncateTableProcedure extends TestTableDDLProcedureBase {
       new CreateTableProcedure(procExec.getEnvironment(), htd, regions));
     ProcedureTestingUtility.assertProcNotFailed(procExec.getResult(procId));
 
-    splitAndTruncate(tableName, regions);
+    splitAndTruncate(tableName, regions, 3);
   }
 
-  private void splitAndTruncate(TableName tableName, RegionInfo[] regions) throws IOException,
-    InterruptedException {
-
+  private void splitAndTruncate(TableName tableName, RegionInfo[] regions, int regionReplication)
+      throws IOException, InterruptedException {
     // split a region
-    UTIL.getAdmin().split(tableName, new byte[]{'0'});
-    UTIL.waitUntilAllRegionsAssigned(tableName);
+    UTIL.getAdmin().split(tableName, new byte[] { '0' });
 
     // wait until split really happens
-    while (UTIL.getAdmin().getRegions(tableName).size() <= regions.length) {
-      Thread.sleep(50);
-    }
+    UTIL.waitFor(60000,
+      () -> UTIL.getAdmin().getRegions(tableName).size() > regions.length * regionReplication);
 
     // disable the table
     UTIL.getAdmin().disableTable(tableName);
@@ -373,5 +368,8 @@ public class TestTruncateTableProcedure extends TestTableDDLProcedureBase {
     ProcedureTestingUtility.assertProcNotFailed(procExec, procId);
 
     UTIL.waitUntilAllRegionsAssigned(tableName);
+    // confirm that we have the correct number of regions
+    assertEquals((regions.length + 1) * regionReplication,
+      UTIL.getAdmin().getRegions(tableName).size());
   }
 }


[hbase] 01/04: Revert "HBASE-20193 Move TestCreateTableProcedure.testMRegions to a separated file"

Posted by zg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

zghao pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git

commit 6f8f0fa533298f1ee80c2e0f2f0032de43db0053
Author: Guanghao Zhang <zg...@apache.org>
AuthorDate: Mon Mar 4 15:19:22 2019 +0800

    Revert "HBASE-20193 Move TestCreateTableProcedure.testMRegions to a separated file"
    
    This reverts commit b318311dfd332160487692bd416fd03da4b35473.
---
 .../master/procedure/TestCreateTableProcedure.java | 25 +++++++-
 .../TestCreateTableProcedureMuitipleRegions.java   | 66 ----------------------
 2 files changed, 22 insertions(+), 69 deletions(-)

diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.java
index a6fea37..155d63c 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.java
@@ -22,6 +22,7 @@ import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import java.io.IOException;
+
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
@@ -48,21 +49,25 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 import org.junit.rules.TestName;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos;
 
+
 @Category({MasterTests.class, MediumTests.class})
 public class TestCreateTableProcedure extends TestTableDDLProcedureBase {
 
   @ClassRule
   public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestCreateTableProcedure.class);
+      HBaseClassTestRule.forClass(TestCreateTableProcedure.class);
+
+  private static final Logger LOG = LoggerFactory.getLogger(TestCreateTableProcedure.class);
 
   private static final String F1 = "f1";
   private static final String F2 = "f2";
 
-  @Rule
-  public TestName name = new TestName();
+  @Rule public TestName name = new TestName();
 
   @Test
   public void testSimpleCreate() throws Exception {
@@ -197,6 +202,20 @@ public class TestCreateTableProcedure extends TestTableDDLProcedureBase {
     testSimpleCreate(tableName, splitKeys);
   }
 
+  @Test
+  public void testMRegions() throws Exception {
+    final byte[][] splitKeys = new byte[500][];
+    for (int i = 0; i < splitKeys.length; ++i) {
+      splitKeys[i] = Bytes.toBytes(String.format("%08d", i));
+    }
+
+    final TableDescriptor htd = MasterProcedureTestingUtility.createHTD(
+      TableName.valueOf("TestMRegions"), F1, F2);
+    UTIL.getAdmin().createTableAsync(htd, splitKeys)
+      .get(10, java.util.concurrent.TimeUnit.HOURS);
+    LOG.info("TABLE CREATED");
+  }
+
   public static class CreateTableProcedureOnHDFSFailure extends CreateTableProcedure {
     private boolean failOnce = false;
 
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.java
deleted file mode 100644
index 2aff487..0000000
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hbase.master.procedure;
-
-import org.apache.hadoop.hbase.HBaseClassTestRule;
-import org.apache.hadoop.hbase.HBaseTestingUtility;
-import org.apache.hadoop.hbase.TableName;
-import org.apache.hadoop.hbase.client.TableDescriptor;
-import org.apache.hadoop.hbase.testclassification.LargeTests;
-import org.apache.hadoop.hbase.testclassification.MasterTests;
-import org.apache.hadoop.hbase.util.Bytes;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-@Category({ MasterTests.class, LargeTests.class })
-public class TestCreateTableProcedureMuitipleRegions {
-
-  @ClassRule
-  public static final HBaseClassTestRule CLASS_RULE =
-    HBaseClassTestRule.forClass(TestCreateTableProcedureMuitipleRegions.class);
-
-  private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();
-
-  private static final String F1 = "f1";
-  private static final String F2 = "f2";
-
-  @BeforeClass
-  public static void setUp() throws Exception {
-    UTIL.startMiniCluster(1);
-  }
-
-  @AfterClass
-  public static void tearDown() throws Exception {
-    UTIL.shutdownMiniCluster();
-  }
-
-  @Test
-  public void testMRegions() throws Exception {
-    byte[][] splitKeys = new byte[500][];
-    for (int i = 0; i < splitKeys.length; ++i) {
-      splitKeys[i] = Bytes.toBytes(String.format("%08d", i));
-    }
-
-    TableDescriptor htd =
-      MasterProcedureTestingUtility.createHTD(TableName.valueOf("TestMRegions"), F1, F2);
-    UTIL.getAdmin().createTableAsync(htd, splitKeys).get(10, java.util.concurrent.TimeUnit.HOURS);
-  }
-}


[hbase] 02/04: HBASE-21093 Move TestCreateTableProcedure.testMRegions to a separated file

Posted by zg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

zghao pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git

commit ab8d9e736f52dff933dcfaa91a2f6bdd773e361a
Author: zhangduo <zh...@apache.org>
AuthorDate: Wed Aug 22 22:10:58 2018 +0800

    HBASE-21093 Move TestCreateTableProcedure.testMRegions to a separated file
    
    Signed-off-by: Guanghao Zhang <zg...@apache.org>
---
 .../master/procedure/TestCreateTableProcedure.java | 25 +-------
 .../TestCreateTableProcedureMuitipleRegions.java   | 66 ++++++++++++++++++++++
 2 files changed, 69 insertions(+), 22 deletions(-)

diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.java
index 155d63c..a6fea37 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.java
@@ -22,7 +22,6 @@ import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import java.io.IOException;
-
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
@@ -49,25 +48,21 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 import org.junit.rules.TestName;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos;
 
-
 @Category({MasterTests.class, MediumTests.class})
 public class TestCreateTableProcedure extends TestTableDDLProcedureBase {
 
   @ClassRule
   public static final HBaseClassTestRule CLASS_RULE =
-      HBaseClassTestRule.forClass(TestCreateTableProcedure.class);
-
-  private static final Logger LOG = LoggerFactory.getLogger(TestCreateTableProcedure.class);
+    HBaseClassTestRule.forClass(TestCreateTableProcedure.class);
 
   private static final String F1 = "f1";
   private static final String F2 = "f2";
 
-  @Rule public TestName name = new TestName();
+  @Rule
+  public TestName name = new TestName();
 
   @Test
   public void testSimpleCreate() throws Exception {
@@ -202,20 +197,6 @@ public class TestCreateTableProcedure extends TestTableDDLProcedureBase {
     testSimpleCreate(tableName, splitKeys);
   }
 
-  @Test
-  public void testMRegions() throws Exception {
-    final byte[][] splitKeys = new byte[500][];
-    for (int i = 0; i < splitKeys.length; ++i) {
-      splitKeys[i] = Bytes.toBytes(String.format("%08d", i));
-    }
-
-    final TableDescriptor htd = MasterProcedureTestingUtility.createHTD(
-      TableName.valueOf("TestMRegions"), F1, F2);
-    UTIL.getAdmin().createTableAsync(htd, splitKeys)
-      .get(10, java.util.concurrent.TimeUnit.HOURS);
-    LOG.info("TABLE CREATED");
-  }
-
   public static class CreateTableProcedureOnHDFSFailure extends CreateTableProcedure {
     private boolean failOnce = false;
 
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.java
new file mode 100644
index 0000000..2aff487
--- /dev/null
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.java
@@ -0,0 +1,66 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hbase.master.procedure;
+
+import org.apache.hadoop.hbase.HBaseClassTestRule;
+import org.apache.hadoop.hbase.HBaseTestingUtility;
+import org.apache.hadoop.hbase.TableName;
+import org.apache.hadoop.hbase.client.TableDescriptor;
+import org.apache.hadoop.hbase.testclassification.LargeTests;
+import org.apache.hadoop.hbase.testclassification.MasterTests;
+import org.apache.hadoop.hbase.util.Bytes;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.ClassRule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+@Category({ MasterTests.class, LargeTests.class })
+public class TestCreateTableProcedureMuitipleRegions {
+
+  @ClassRule
+  public static final HBaseClassTestRule CLASS_RULE =
+    HBaseClassTestRule.forClass(TestCreateTableProcedureMuitipleRegions.class);
+
+  private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();
+
+  private static final String F1 = "f1";
+  private static final String F2 = "f2";
+
+  @BeforeClass
+  public static void setUp() throws Exception {
+    UTIL.startMiniCluster(1);
+  }
+
+  @AfterClass
+  public static void tearDown() throws Exception {
+    UTIL.shutdownMiniCluster();
+  }
+
+  @Test
+  public void testMRegions() throws Exception {
+    byte[][] splitKeys = new byte[500][];
+    for (int i = 0; i < splitKeys.length; ++i) {
+      splitKeys[i] = Bytes.toBytes(String.format("%08d", i));
+    }
+
+    TableDescriptor htd =
+      MasterProcedureTestingUtility.createHTD(TableName.valueOf("TestMRegions"), F1, F2);
+    UTIL.getAdmin().createTableAsync(htd, splitKeys).get(10, java.util.concurrent.TimeUnit.HOURS);
+  }
+}