HBASE-16634 Speedup TestExportSnapshot
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/e19632a1 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/e19632a1 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/e19632a1 Branch: refs/heads/hbase-12439 Commit: e19632a19abc52a983d444811852bf0f11cd0d0b Parents: 216e847 Author: Matteo Bertozzi <matteo.berto...@cloudera.com> Authored: Thu Sep 15 18:29:09 2016 -0700 Committer: Matteo Bertozzi <matteo.berto...@cloudera.com> Committed: Thu Sep 15 18:29:09 2016 -0700 ---------------------------------------------------------------------- .../hbase/snapshot/MobSnapshotTestingUtils.java | 15 ++++++++- .../hbase/snapshot/SnapshotTestingUtils.java | 34 ++++++++++++++++---- .../hbase/snapshot/TestExportSnapshot.java | 8 ++--- .../snapshot/TestFlushSnapshotFromClient.java | 8 ++--- .../hbase/snapshot/TestMobExportSnapshot.java | 8 ++--- .../snapshot/TestMobSecureExportSnapshot.java | 4 +-- .../snapshot/TestSecureExportSnapshot.java | 1 - 7 files changed, 54 insertions(+), 24 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/e19632a1/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/MobSnapshotTestingUtils.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/MobSnapshotTestingUtils.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/MobSnapshotTestingUtils.java index 9026115..107f487 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/MobSnapshotTestingUtils.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/MobSnapshotTestingUtils.java @@ -38,6 +38,20 @@ public class MobSnapshotTestingUtils { public static void createMobTable(final HBaseTestingUtility util, final TableName tableName, int regionReplication, final byte[]... families) throws IOException, InterruptedException { + createMobTable(util, tableName, SnapshotTestingUtils.getSplitKeys(), + regionReplication, families); + } + + public static void createPreSplitMobTable(final HBaseTestingUtility util, + final TableName tableName, int nRegions, final byte[]... families) + throws IOException, InterruptedException { + createMobTable(util, tableName, SnapshotTestingUtils.getSplitKeys(nRegions), + 1, families); + } + + private static void createMobTable(final HBaseTestingUtility util, + final TableName tableName, final byte[][] splitKeys, int regionReplication, + final byte[]... families) throws IOException, InterruptedException { HTableDescriptor htd = new HTableDescriptor(tableName); htd.setRegionReplication(regionReplication); for (byte[] family : families) { @@ -46,7 +60,6 @@ public class MobSnapshotTestingUtils { hcd.setMobThreshold(0L); htd.addFamily(hcd); } - byte[][] splitKeys = SnapshotTestingUtils.getSplitKeys(); util.getHBaseAdmin().createTable(htd, splitKeys); SnapshotTestingUtils.waitForTableToBeOnline(util, tableName); assertEquals((splitKeys.length + 1) * regionReplication, util http://git-wip-us.apache.org/repos/asf/hbase/blob/e19632a1/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/SnapshotTestingUtils.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/SnapshotTestingUtils.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/SnapshotTestingUtils.java index 770bb00..dfd00b3 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/SnapshotTestingUtils.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/SnapshotTestingUtils.java @@ -82,9 +82,10 @@ import com.google.protobuf.ServiceException; */ @InterfaceAudience.Private public final class SnapshotTestingUtils { - private static final Log LOG = LogFactory.getLog(SnapshotTestingUtils.class); - private static byte[] KEYS = Bytes.toBytes("0123456789"); + + // default number of regions (and keys) given by getSplitKeys() and createTable() + private static byte[] KEYS = Bytes.toBytes("0123456"); private SnapshotTestingUtils() { // private constructor for utility class @@ -750,23 +751,32 @@ public final class SnapshotTestingUtils { } public static void createTable(final HBaseTestingUtility util, final TableName tableName, - int regionReplication, final byte[]... families) throws IOException, InterruptedException { + int regionReplication, int nRegions, final byte[]... families) + throws IOException, InterruptedException { HTableDescriptor htd = new HTableDescriptor(tableName); htd.setRegionReplication(regionReplication); for (byte[] family : families) { HColumnDescriptor hcd = new HColumnDescriptor(family); htd.addFamily(hcd); } - byte[][] splitKeys = getSplitKeys(); + byte[][] splitKeys = getSplitKeys(nRegions); util.createTable(htd, splitKeys); assertEquals((splitKeys.length + 1) * regionReplication, util.getHBaseAdmin().getTableRegions(tableName).size()); } public static byte[][] getSplitKeys() { - byte[][] splitKeys = new byte[KEYS.length-2][]; + return getSplitKeys(KEYS.length); + } + + public static byte[][] getSplitKeys(int nRegions) { + nRegions = nRegions < KEYS.length ? nRegions : (KEYS.length - 1); + final byte[][] splitKeys = new byte[nRegions-1][]; + final int step = KEYS.length / nRegions; + int keyIndex = 1; for (int i = 0; i < splitKeys.length; ++i) { - splitKeys[i] = new byte[] { KEYS[i+1] }; + splitKeys[i] = new byte[] { KEYS[keyIndex] }; + keyIndex += step; } return splitKeys; } @@ -776,6 +786,16 @@ public final class SnapshotTestingUtils { createTable(util, tableName, 1, families); } + public static void createTable(final HBaseTestingUtility util, final TableName tableName, + final int regionReplication, final byte[]... families) throws IOException, InterruptedException { + createTable(util, tableName, regionReplication, KEYS.length, families); + } + + public static void createPreSplitTable(final HBaseTestingUtility util, final TableName tableName, + final int nRegions, final byte[]... families) throws IOException, InterruptedException { + createTable(util, tableName, 1, nRegions, families); + } + public static void loadData(final HBaseTestingUtility util, final TableName tableName, int rows, byte[]... families) throws IOException, InterruptedException { BufferedMutator mutator = util.getConnection().getBufferedMutator(tableName); @@ -861,6 +881,6 @@ public final class SnapshotTestingUtils { } } } - assert(set.size() == getSplitKeys().length + 1); + assertEquals(getSplitKeys().length + 1, set.size()); } } http://git-wip-us.apache.org/repos/asf/hbase/blob/e19632a1/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/TestExportSnapshot.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/TestExportSnapshot.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/TestExportSnapshot.java index d0b32f8..ee0d0e2 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/TestExportSnapshot.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/TestExportSnapshot.java @@ -45,7 +45,7 @@ import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.SnapshotDescriptio import org.apache.hadoop.hbase.protobuf.generated.SnapshotProtos.SnapshotFileInfo; import org.apache.hadoop.hbase.protobuf.generated.SnapshotProtos.SnapshotRegionManifest; import org.apache.hadoop.hbase.snapshot.SnapshotTestingUtils.SnapshotMock; -import org.apache.hadoop.hbase.testclassification.MediumTests; +import org.apache.hadoop.hbase.testclassification.LargeTests; import org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests; import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.hbase.util.FSUtils; @@ -62,7 +62,7 @@ import org.junit.rules.TestRule; /** * Test Export Snapshot Tool */ -@Category({VerySlowRegionServerTests.class, MediumTests.class}) +@Category({VerySlowRegionServerTests.class, LargeTests.class}) public class TestExportSnapshot { @Rule public final TestRule timeout = CategoryBasedTimeout.builder(). withTimeout(this.getClass()).withLookingForStuckThread(true).build(); @@ -91,12 +91,10 @@ public class TestExportSnapshot { public static void setUpBeforeClass() throws Exception { setUpBaseConf(TEST_UTIL.getConfiguration()); TEST_UTIL.startMiniCluster(3); - TEST_UTIL.startMiniMapReduceCluster(); } @AfterClass public static void tearDownAfterClass() throws Exception { - TEST_UTIL.shutdownMiniMapReduceCluster(); TEST_UTIL.shutdownMiniCluster(); } @@ -127,7 +125,7 @@ public class TestExportSnapshot { } protected void createTable() throws Exception { - SnapshotTestingUtils.createTable(TEST_UTIL, tableName, FAMILY); + SnapshotTestingUtils.createPreSplitTable(TEST_UTIL, tableName, 2, FAMILY); } @After http://git-wip-us.apache.org/repos/asf/hbase/blob/e19632a1/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/TestFlushSnapshotFromClient.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/TestFlushSnapshotFromClient.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/TestFlushSnapshotFromClient.java index 8efc2d7..a852547 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/TestFlushSnapshotFromClient.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/TestFlushSnapshotFromClient.java @@ -325,8 +325,8 @@ public class TestFlushSnapshotFromClient { int numRegionsAfterMerge = numRegions - 2; admin.mergeRegionsAsync(regions.get(1).getEncodedNameAsBytes(), regions.get(2).getEncodedNameAsBytes(), true); - admin.mergeRegionsAsync(regions.get(5).getEncodedNameAsBytes(), - regions.get(6).getEncodedNameAsBytes(), true); + admin.mergeRegionsAsync(regions.get(4).getEncodedNameAsBytes(), + regions.get(5).getEncodedNameAsBytes(), true); // Verify that there's one region less waitRegionsAfterMerge(numRegionsAfterMerge); @@ -366,8 +366,8 @@ public class TestFlushSnapshotFromClient { int numRegionsAfterMerge = numRegions - 2; admin.mergeRegionsAsync(regions.get(1).getEncodedNameAsBytes(), regions.get(2).getEncodedNameAsBytes(), true); - admin.mergeRegionsAsync(regions.get(5).getEncodedNameAsBytes(), - regions.get(6).getEncodedNameAsBytes(), true); + admin.mergeRegionsAsync(regions.get(4).getEncodedNameAsBytes(), + regions.get(5).getEncodedNameAsBytes(), true); waitRegionsAfterMerge(numRegionsAfterMerge); assertEquals(numRegionsAfterMerge, admin.getTableRegions(TABLE_NAME).size()); http://git-wip-us.apache.org/repos/asf/hbase/blob/e19632a1/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/TestMobExportSnapshot.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/TestMobExportSnapshot.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/TestMobExportSnapshot.java index b6cb339..d755961 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/TestMobExportSnapshot.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/TestMobExportSnapshot.java @@ -25,14 +25,15 @@ import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HRegionInfo; import org.apache.hadoop.hbase.mob.MobConstants; import org.apache.hadoop.hbase.mob.MobUtils; -import org.apache.hadoop.hbase.testclassification.MediumTests; +import org.apache.hadoop.hbase.testclassification.LargeTests; +import org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests; import org.junit.BeforeClass; import org.junit.experimental.categories.Category; /** * Test Export Snapshot Tool */ -@Category(MediumTests.class) +@Category({VerySlowRegionServerTests.class, LargeTests.class}) public class TestMobExportSnapshot extends TestExportSnapshot { private final Log LOG = LogFactory.getLog(getClass()); @@ -45,12 +46,11 @@ public class TestMobExportSnapshot extends TestExportSnapshot { public static void setUpBeforeClass() throws Exception { setUpBaseConf(TEST_UTIL.getConfiguration()); TEST_UTIL.startMiniCluster(3); - TEST_UTIL.startMiniMapReduceCluster(); } @Override protected void createTable() throws Exception { - MobSnapshotTestingUtils.createMobTable(TEST_UTIL, tableName, 1, FAMILY); + MobSnapshotTestingUtils.createPreSplitMobTable(TEST_UTIL, tableName, 2, FAMILY); } @Override http://git-wip-us.apache.org/repos/asf/hbase/blob/e19632a1/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/TestMobSecureExportSnapshot.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/TestMobSecureExportSnapshot.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/TestMobSecureExportSnapshot.java index 4a89db8..8154995 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/TestMobSecureExportSnapshot.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/TestMobSecureExportSnapshot.java @@ -20,6 +20,7 @@ package org.apache.hadoop.hbase.snapshot; import org.apache.hadoop.hbase.testclassification.LargeTests; +import org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests; import org.apache.hadoop.hbase.mapreduce.HadoopSecurityEnabledUserProviderForTesting; import org.apache.hadoop.hbase.security.UserProvider; import org.apache.hadoop.hbase.security.access.AccessControlLists; @@ -31,7 +32,7 @@ import org.junit.experimental.categories.Category; /** * Reruns TestMobExportSnapshot using MobExportSnapshot in secure mode. */ -@Category(LargeTests.class) +@Category({VerySlowRegionServerTests.class, LargeTests.class}) public class TestMobSecureExportSnapshot extends TestMobExportSnapshot { @BeforeClass public static void setUpBeforeClass() throws Exception { @@ -45,7 +46,6 @@ public class TestMobSecureExportSnapshot extends TestMobExportSnapshot { SecureTestUtil.enableSecurity(TEST_UTIL.getConfiguration()); TEST_UTIL.startMiniCluster(3); - TEST_UTIL.startMiniMapReduceCluster(); // Wait for the ACL table to become available TEST_UTIL.waitTableEnabled(AccessControlLists.ACL_TABLE_NAME); http://git-wip-us.apache.org/repos/asf/hbase/blob/e19632a1/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/TestSecureExportSnapshot.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/TestSecureExportSnapshot.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/TestSecureExportSnapshot.java index cf55c4d..f335e4e 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/TestSecureExportSnapshot.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/snapshot/TestSecureExportSnapshot.java @@ -51,7 +51,6 @@ public class TestSecureExportSnapshot extends TestExportSnapshot { SecureTestUtil.enableSecurity(TEST_UTIL.getConfiguration()); TEST_UTIL.startMiniCluster(3); - TEST_UTIL.startMiniMapReduceCluster(); // Wait for the ACL table to become available TEST_UTIL.waitTableEnabled(AccessControlLists.ACL_TABLE_NAME);