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); } }