Repository: hbase
Updated Branches:
  refs/heads/master 23d54f858 -> 6b18e39f3


HBASE-21076 refactor TestTableResource to ask for a multi-region table instead 
of relying on a split operation.

Also correct how the test does string conversion for region names that include 
non-printable characters.

Signed-off-by: Duo Zhang <zhang...@apache.org>


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

Branch: refs/heads/master
Commit: 6b18e39f30b30ad2aa027eefbf520f2c5b1de490
Parents: 23d54f8
Author: Sean Busbey <bus...@apache.org>
Authored: Mon Aug 20 13:43:25 2018 -0500
Committer: Sean Busbey <bus...@apache.org>
Committed: Tue Aug 21 09:17:51 2018 -0500

----------------------------------------------------------------------
 .../hadoop/hbase/rest/TestTableResource.java    | 51 ++++++--------------
 1 file changed, 15 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/6b18e39f/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestTableResource.java
----------------------------------------------------------------------
diff --git 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestTableResource.java 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestTableResource.java
index 5fa3072..8bd13a0 100644
--- 
a/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestTableResource.java
+++ 
b/hbase-rest/src/test/java/org/apache/hadoop/hbase/rest/TestTableResource.java
@@ -31,10 +31,8 @@ import javax.xml.bind.JAXBException;
 import org.apache.hadoop.hbase.CellUtil;
 import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
-import org.apache.hadoop.hbase.HColumnDescriptor;
 import org.apache.hadoop.hbase.HRegionInfo;
 import org.apache.hadoop.hbase.HRegionLocation;
-import org.apache.hadoop.hbase.HTableDescriptor;
 import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.Admin;
@@ -43,7 +41,6 @@ import org.apache.hadoop.hbase.client.Durability;
 import org.apache.hadoop.hbase.client.Put;
 import org.apache.hadoop.hbase.client.RegionLocator;
 import org.apache.hadoop.hbase.client.Table;
-import org.apache.hadoop.hbase.regionserver.TestEndToEndSplitTransaction;
 import org.apache.hadoop.hbase.rest.client.Client;
 import org.apache.hadoop.hbase.rest.client.Cluster;
 import org.apache.hadoop.hbase.rest.client.Response;
@@ -72,9 +69,10 @@ public class TestTableResource {
 
   private static final Logger LOG = 
LoggerFactory.getLogger(TestTableResource.class);
 
-  private static TableName TABLE = TableName.valueOf("TestTableResource");
-  private static String COLUMN_FAMILY = "test";
-  private static String COLUMN = COLUMN_FAMILY + ":qualifier";
+  private static final TableName TABLE = 
TableName.valueOf("TestTableResource");
+  private static final String COLUMN_FAMILY = "test";
+  private static final String COLUMN = COLUMN_FAMILY + ":qualifier";
+  private static final int NUM_REGIONS = 4;
   private static List<HRegionLocation> regionMap;
 
   private static final HBaseTestingUtility TEST_UTIL = new 
HBaseTestingUtility();
@@ -94,13 +92,7 @@ public class TestTableResource {
         TableInfoModel.class,
         TableListModel.class,
         TableRegionModel.class);
-    Admin admin = TEST_UTIL.getAdmin();
-    if (admin.tableExists(TABLE)) {
-      return;
-    }
-    HTableDescriptor htd = new HTableDescriptor(TABLE);
-    htd.addFamily(new HColumnDescriptor(COLUMN_FAMILY));
-    admin.createTable(htd);
+    TEST_UTIL.createMultiRegionTable(TABLE, Bytes.toBytes(COLUMN_FAMILY), 
NUM_REGIONS);
     byte[] k = new byte[3];
     byte [][] famAndQf = CellUtil.parseColumn(Bytes.toBytes(COLUMN));
     List<Put> puts = new ArrayList<>();
@@ -117,37 +109,20 @@ public class TestTableResource {
         }
       }
     }
+
     Connection connection = TEST_UTIL.getConnection();
 
     Table table =  connection.getTable(TABLE);
     table.put(puts);
     table.close();
-    // get the initial layout (should just be one region)
 
     RegionLocator regionLocator = connection.getRegionLocator(TABLE);
     List<HRegionLocation> m = regionLocator.getAllRegionLocations();
-    assertEquals(1, m.size());
-    // tell the master to split the table
-    admin.split(TABLE);
-    // give some time for the split to happen
-
-    
TestEndToEndSplitTransaction.blockUntilRegionSplit(TEST_UTIL.getConfiguration(),
 60000,
-      m.get(0).getRegionInfo().getRegionName(), true);
-    long timeout = System.currentTimeMillis() + (15 * 1000);
-    while (System.currentTimeMillis() < timeout && m.size()!=2){
-      try {
-        Thread.sleep(250);
-      } catch (InterruptedException e) {
-        LOG.warn(StringUtils.stringifyException(e));
-      }
-      // check again
-      m = regionLocator.getAllRegionLocations();
-    }
 
-    // should have two regions now
-    assertEquals(2, m.size());
+    // should have three regions now
+    assertEquals(NUM_REGIONS, m.size());
     regionMap = m;
-    LOG.info("regions: " + regionMap);
+    LOG.error("regions: " + regionMap);
     regionLocator.close();
   }
 
@@ -178,10 +153,14 @@ public class TestTableResource {
     while (regions.hasNext()) {
       TableRegionModel region = regions.next();
       boolean found = false;
+      LOG.debug("looking for region " + region.getName());
       for (HRegionLocation e: regionMap) {
         HRegionInfo hri = e.getRegionInfo();
-        String hriRegionName = hri.getRegionNameAsString();
+        // getRegionNameAsString uses Bytes.toStringBinary which escapes some 
non-printable
+        // characters
+        String hriRegionName = Bytes.toString(hri.getRegionName());
         String regionName = region.getName();
+        LOG.debug("comparing to region " + hriRegionName);
         if (hriRegionName.equals(regionName)) {
           found = true;
           byte[] startKey = hri.getStartKey();
@@ -198,7 +177,7 @@ public class TestTableResource {
           break;
         }
       }
-      assertTrue(found);
+      assertTrue("Couldn't find region " + region.getName(), found);
     }
   }
 

Reply via email to