From 91268aa55d5d36d70c9e64f4ab9c1939fb2e0033 Mon Sep 17 00:00:00 2001 From: Dima Spivak Date: Wed, 8 Oct 2014 15:34:44 -0700 Subject: [PATCH] HBASE-12181 Some tests create a table and try to use it before regions are assigned * Adds HBaseTestingUtility#waitUntilAllRegionsAssigned after createTable * Confirms that lists of regions have at least one element before using * Minor nit refactoring of #testSplitHooksBeforeAndAfterPONR --- .../TestSplitTransactionOnCluster.java | 25 +++++++++++++++------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java index 0708b79..89870ca 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java @@ -1032,19 +1032,28 @@ public class TestSplitTransactionOnCluster { public void testSplitHooksBeforeAndAfterPONR() throws Exception { TableName firstTable = TableName.valueOf("testSplitHooksBeforeAndAfterPONR_1"); TableName secondTable = TableName.valueOf("testSplitHooksBeforeAndAfterPONR_2"); + HColumnDescriptor hcd = new HColumnDescriptor("cf"); + HTableDescriptor desc = new HTableDescriptor(firstTable); desc.addCoprocessor(MockedRegionObserver.class.getName()); - HColumnDescriptor hcd = new HColumnDescriptor("cf"); desc.addFamily(hcd); admin.createTable(desc); + TESTING_UTIL.waitUntilAllRegionsAssigned(firstTable); + desc = new HTableDescriptor(secondTable); - hcd = new HColumnDescriptor("cf"); desc.addFamily(hcd); admin.createTable(desc); - List firstTableregions = cluster.getRegions(firstTable); + TESTING_UTIL.waitUntilAllRegionsAssigned(secondTable); + + List firstTableRegions = cluster.getRegions(firstTable); List secondTableRegions = cluster.getRegions(secondTable); + + // Check that both tables actually have regions. + if (firstTableRegions.size() == 0 || secondTableRegions.size() == 0) { + fail("Each table should have at least one region."); + } ServerName serverName = - cluster.getServerHoldingRegion(firstTableregions.get(0).getRegionName()); + cluster.getServerHoldingRegion(firstTableRegions.get(0).getRegionName()); admin.move(secondTableRegions.get(0).getRegionInfo().getEncodedNameAsBytes(), Bytes.toBytes(serverName.getServerName())); Table table1 = null; @@ -1055,12 +1064,12 @@ public class TestSplitTransactionOnCluster { insertData(firstTable, admin, table1); insertData(secondTable, admin, table2); admin.split(firstTable, "row2".getBytes()); - firstTableregions = cluster.getRegions(firstTable); - while (firstTableregions.size() != 2) { + firstTableRegions = cluster.getRegions(firstTable); + while (firstTableRegions.size() != 2) { Thread.sleep(1000); - firstTableregions = cluster.getRegions(firstTable); + firstTableRegions = cluster.getRegions(firstTable); } - assertEquals("Number of regions after split should be 2.", 2, firstTableregions.size()); + assertEquals("Number of regions after split should be 2.", 2, firstTableRegions.size()); secondTableRegions = cluster.getRegions(secondTable); assertEquals("Number of regions after split should be 2.", 2, secondTableRegions.size()); } finally { -- 1.9.3 (Apple Git-50)