You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zh...@apache.org on 2018/01/29 07:02:52 UTC
hbase git commit: HBASE-19879 Promote TestAcidGuaranteesXXX to
LargeTests
Repository: hbase
Updated Branches:
refs/heads/master 918599ef1 -> 80438924f
HBASE-19879 Promote TestAcidGuaranteesXXX to LargeTests
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/80438924
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/80438924
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/80438924
Branch: refs/heads/master
Commit: 80438924ff5066bf809cf0318168025cf646d415
Parents: 918599e
Author: zhangduo <zh...@apache.org>
Authored: Mon Jan 29 13:04:58 2018 +0800
Committer: zhangduo <zh...@apache.org>
Committed: Mon Jan 29 14:55:04 2018 +0800
----------------------------------------------------------------------
.../hadoop/hbase/AcidGuaranteesTestBase.java | 134 +++++++++++++++++++
.../TestAcidGuaranteesWithAdaptivePolicy.java | 6 +-
.../TestAcidGuaranteesWithBasicPolicy.java | 6 +-
.../TestAcidGuaranteesWithEagerPolicy.java | 6 +-
...TestAcidGuaranteesWithNoInMemCompaction.java | 117 +---------------
5 files changed, 147 insertions(+), 122 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/80438924/hbase-server/src/test/java/org/apache/hadoop/hbase/AcidGuaranteesTestBase.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/AcidGuaranteesTestBase.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/AcidGuaranteesTestBase.java
new file mode 100644
index 0000000..c0aa1a0
--- /dev/null
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/AcidGuaranteesTestBase.java
@@ -0,0 +1,134 @@
+/**
+ * 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;
+
+import static org.apache.hadoop.hbase.AcidGuaranteesTestTool.FAMILIES;
+import static org.apache.hadoop.hbase.AcidGuaranteesTestTool.TABLE_NAME;
+
+import java.util.List;
+import java.util.stream.Stream;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;
+import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
+import org.apache.hadoop.hbase.regionserver.CompactingMemStore;
+import org.apache.hadoop.hbase.regionserver.ConstantSizeRegionSplitPolicy;
+import org.apache.hadoop.hbase.regionserver.MemStoreLAB;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import org.apache.hbase.thirdparty.com.google.common.collect.Lists;
+
+/**
+ * Test case that uses multiple threads to read and write multifamily rows into a table, verifying
+ * that reads never see partially-complete writes. This can run as a junit test, or with a main()
+ * function which runs against a real cluster (eg for testing with failures, region movement, etc)
+ */
+public abstract class AcidGuaranteesTestBase {
+
+ private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();
+
+ private AcidGuaranteesTestTool tool = new AcidGuaranteesTestTool();
+
+ protected abstract MemoryCompactionPolicy getMemoryCompactionPolicy();
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ // Set small flush size for minicluster so we exercise reseeking scanners
+ Configuration conf = UTIL.getConfiguration();
+ conf.set(HConstants.HREGION_MEMSTORE_FLUSH_SIZE, String.valueOf(128 * 1024));
+ // prevent aggressive region split
+ conf.set(HConstants.HBASE_REGION_SPLIT_POLICY_KEY,
+ ConstantSizeRegionSplitPolicy.class.getName());
+ conf.setInt("hfile.format.version", 3); // for mob tests
+ UTIL.startMiniCluster(1);
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ UTIL.shutdownMiniCluster();
+ }
+
+ @Before
+ public void setUp() throws Exception {
+ MemoryCompactionPolicy policy = getMemoryCompactionPolicy();
+ TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(TABLE_NAME)
+ .setValue(CompactingMemStore.COMPACTING_MEMSTORE_TYPE_KEY, policy.name());
+ if (policy == MemoryCompactionPolicy.EAGER) {
+ builder.setValue(MemStoreLAB.USEMSLAB_KEY, "false");
+ builder.setValue(CompactingMemStore.IN_MEMORY_FLUSH_THRESHOLD_FACTOR_KEY, "0.9");
+ }
+ Stream.of(FAMILIES).map(ColumnFamilyDescriptorBuilder::of)
+ .forEachOrdered(builder::addColumnFamily);
+ UTIL.getAdmin().createTable(builder.build());
+ tool.setConf(UTIL.getConfiguration());
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ UTIL.deleteTable(TABLE_NAME);
+ }
+
+ private void runTestAtomicity(long millisToRun, int numWriters, int numGetters, int numScanners,
+ int numUniqueRows) throws Exception {
+ runTestAtomicity(millisToRun, numWriters, numGetters, numScanners, numUniqueRows, false);
+ }
+
+ private void runTestAtomicity(long millisToRun, int numWriters, int numGetters, int numScanners,
+ int numUniqueRows, boolean useMob) throws Exception {
+ List<String> args = Lists.newArrayList("-millis", String.valueOf(millisToRun), "-numWriters",
+ String.valueOf(numWriters), "-numGetters", String.valueOf(numGetters), "-numScanners",
+ String.valueOf(numScanners), "-numUniqueRows", String.valueOf(numUniqueRows), "-crazyFlush");
+ if (useMob) {
+ args.add("-useMob");
+ }
+ tool.run(args.toArray(new String[0]));
+ }
+
+ @Test
+ public void testGetAtomicity() throws Exception {
+ runTestAtomicity(20000, 5, 5, 0, 3);
+ }
+
+ @Test
+ public void testScanAtomicity() throws Exception {
+ runTestAtomicity(20000, 5, 0, 5, 3);
+ }
+
+ @Test
+ public void testMixedAtomicity() throws Exception {
+ runTestAtomicity(20000, 5, 2, 2, 3);
+ }
+
+ @Test
+ public void testMobGetAtomicity() throws Exception {
+ runTestAtomicity(20000, 5, 5, 0, 3, true);
+ }
+
+ @Test
+ public void testMobScanAtomicity() throws Exception {
+ runTestAtomicity(20000, 5, 0, 5, 3, true);
+ }
+
+ @Test
+ public void testMobMixedAtomicity() throws Exception {
+ runTestAtomicity(20000, 5, 2, 2, 3, true);
+ }
+}
http://git-wip-us.apache.org/repos/asf/hbase/blob/80438924/hbase-server/src/test/java/org/apache/hadoop/hbase/TestAcidGuaranteesWithAdaptivePolicy.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestAcidGuaranteesWithAdaptivePolicy.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestAcidGuaranteesWithAdaptivePolicy.java
index b46a28c..ff77081 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestAcidGuaranteesWithAdaptivePolicy.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestAcidGuaranteesWithAdaptivePolicy.java
@@ -17,12 +17,12 @@
*/
package org.apache.hadoop.hbase;
-import org.apache.hadoop.hbase.testclassification.MediumTests;
+import org.apache.hadoop.hbase.testclassification.LargeTests;
import org.junit.ClassRule;
import org.junit.experimental.categories.Category;
-@Category({ MediumTests.class })
-public class TestAcidGuaranteesWithAdaptivePolicy extends TestAcidGuaranteesWithNoInMemCompaction {
+@Category(LargeTests.class)
+public class TestAcidGuaranteesWithAdaptivePolicy extends AcidGuaranteesTestBase {
@ClassRule
public static final HBaseClassTestRule CLASS_RULE =
http://git-wip-us.apache.org/repos/asf/hbase/blob/80438924/hbase-server/src/test/java/org/apache/hadoop/hbase/TestAcidGuaranteesWithBasicPolicy.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestAcidGuaranteesWithBasicPolicy.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestAcidGuaranteesWithBasicPolicy.java
index 7993649..02c6a98 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestAcidGuaranteesWithBasicPolicy.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestAcidGuaranteesWithBasicPolicy.java
@@ -17,12 +17,12 @@
*/
package org.apache.hadoop.hbase;
-import org.apache.hadoop.hbase.testclassification.MediumTests;
+import org.apache.hadoop.hbase.testclassification.LargeTests;
import org.junit.ClassRule;
import org.junit.experimental.categories.Category;
-@Category({ MediumTests.class })
-public class TestAcidGuaranteesWithBasicPolicy extends TestAcidGuaranteesWithNoInMemCompaction {
+@Category(LargeTests.class)
+public class TestAcidGuaranteesWithBasicPolicy extends AcidGuaranteesTestBase {
@ClassRule
public static final HBaseClassTestRule CLASS_RULE =
http://git-wip-us.apache.org/repos/asf/hbase/blob/80438924/hbase-server/src/test/java/org/apache/hadoop/hbase/TestAcidGuaranteesWithEagerPolicy.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestAcidGuaranteesWithEagerPolicy.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestAcidGuaranteesWithEagerPolicy.java
index c65eada..5f2e245 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestAcidGuaranteesWithEagerPolicy.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestAcidGuaranteesWithEagerPolicy.java
@@ -17,12 +17,12 @@
*/
package org.apache.hadoop.hbase;
-import org.apache.hadoop.hbase.testclassification.MediumTests;
+import org.apache.hadoop.hbase.testclassification.LargeTests;
import org.junit.ClassRule;
import org.junit.experimental.categories.Category;
-@Category({ MediumTests.class })
-public class TestAcidGuaranteesWithEagerPolicy extends TestAcidGuaranteesWithNoInMemCompaction {
+@Category(LargeTests.class)
+public class TestAcidGuaranteesWithEagerPolicy extends AcidGuaranteesTestBase {
@ClassRule
public static final HBaseClassTestRule CLASS_RULE =
http://git-wip-us.apache.org/repos/asf/hbase/blob/80438924/hbase-server/src/test/java/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.java
index 001f5c2..4b2bcd0 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.java
@@ -17,128 +17,19 @@
*/
package org.apache.hadoop.hbase;
-import static org.apache.hadoop.hbase.AcidGuaranteesTestTool.FAMILIES;
-import static org.apache.hadoop.hbase.AcidGuaranteesTestTool.TABLE_NAME;
-
-import java.util.List;
-import java.util.stream.Stream;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;
-import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
-import org.apache.hadoop.hbase.regionserver.CompactingMemStore;
-import org.apache.hadoop.hbase.regionserver.ConstantSizeRegionSplitPolicy;
-import org.apache.hadoop.hbase.regionserver.MemStoreLAB;
-import org.apache.hadoop.hbase.testclassification.MediumTests;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
+import org.apache.hadoop.hbase.testclassification.LargeTests;
import org.junit.ClassRule;
-import org.junit.Test;
import org.junit.experimental.categories.Category;
-import org.apache.hbase.thirdparty.com.google.common.collect.Lists;
-
-/**
- * Test case that uses multiple threads to read and write multifamily rows into a table, verifying
- * that reads never see partially-complete writes. This can run as a junit test, or with a main()
- * function which runs against a real cluster (eg for testing with failures, region movement, etc)
- */
-@Category({ MediumTests.class })
-public class TestAcidGuaranteesWithNoInMemCompaction {
+@Category(LargeTests.class)
+public class TestAcidGuaranteesWithNoInMemCompaction extends AcidGuaranteesTestBase {
@ClassRule
public static final HBaseClassTestRule CLASS_RULE =
HBaseClassTestRule.forClass(TestAcidGuaranteesWithNoInMemCompaction.class);
- private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();
-
- private AcidGuaranteesTestTool tool = new AcidGuaranteesTestTool();
-
+ @Override
protected MemoryCompactionPolicy getMemoryCompactionPolicy() {
return MemoryCompactionPolicy.NONE;
}
-
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- // Set small flush size for minicluster so we exercise reseeking scanners
- Configuration conf = UTIL.getConfiguration();
- conf.set(HConstants.HREGION_MEMSTORE_FLUSH_SIZE, String.valueOf(128 * 1024));
- // prevent aggressive region split
- conf.set(HConstants.HBASE_REGION_SPLIT_POLICY_KEY,
- ConstantSizeRegionSplitPolicy.class.getName());
- conf.setInt("hfile.format.version", 3); // for mob tests
- UTIL.startMiniCluster(1);
- }
-
- @AfterClass
- public static void tearDownAfterClass() throws Exception {
- UTIL.shutdownMiniCluster();
- }
-
- @Before
- public void setUp() throws Exception {
- MemoryCompactionPolicy policy = getMemoryCompactionPolicy();
- TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(TABLE_NAME)
- .setValue(CompactingMemStore.COMPACTING_MEMSTORE_TYPE_KEY, policy.name());
- if (policy == MemoryCompactionPolicy.EAGER) {
- builder.setValue(MemStoreLAB.USEMSLAB_KEY, "false");
- builder.setValue(CompactingMemStore.IN_MEMORY_FLUSH_THRESHOLD_FACTOR_KEY, "0.9");
- }
- Stream.of(FAMILIES).map(ColumnFamilyDescriptorBuilder::of)
- .forEachOrdered(builder::addColumnFamily);
- UTIL.getAdmin().createTable(builder.build());
- tool.setConf(UTIL.getConfiguration());
- }
-
- @After
- public void tearDown() throws Exception {
- UTIL.deleteTable(TABLE_NAME);
- }
-
- private void runTestAtomicity(long millisToRun, int numWriters, int numGetters, int numScanners,
- int numUniqueRows) throws Exception {
- runTestAtomicity(millisToRun, numWriters, numGetters, numScanners, numUniqueRows, false);
- }
-
- private void runTestAtomicity(long millisToRun, int numWriters, int numGetters, int numScanners,
- int numUniqueRows, boolean useMob) throws Exception {
- List<String> args = Lists.newArrayList("-millis", String.valueOf(millisToRun), "-numWriters",
- String.valueOf(numWriters), "-numGetters", String.valueOf(numGetters), "-numScanners",
- String.valueOf(numScanners), "-numUniqueRows", String.valueOf(numUniqueRows), "-crazyFlush");
- if (useMob) {
- args.add("-useMob");
- }
- tool.run(args.toArray(new String[0]));
- }
-
- @Test
- public void testGetAtomicity() throws Exception {
- runTestAtomicity(20000, 5, 5, 0, 3);
- }
-
- @Test
- public void testScanAtomicity() throws Exception {
- runTestAtomicity(20000, 5, 0, 5, 3);
- }
-
- @Test
- public void testMixedAtomicity() throws Exception {
- runTestAtomicity(20000, 5, 2, 2, 3);
- }
-
- @Test
- public void testMobGetAtomicity() throws Exception {
- runTestAtomicity(20000, 5, 5, 0, 3, true);
- }
-
- @Test
- public void testMobScanAtomicity() throws Exception {
- runTestAtomicity(20000, 5, 0, 5, 3, true);
- }
-
- @Test
- public void testMobMixedAtomicity() throws Exception {
- runTestAtomicity(20000, 5, 2, 2, 3, true);
- }
}