This is an automated email from the ASF dual-hosted git repository.
Apache9 pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-2 by this push:
new a1b004c78f1 HBASE-30188 Upgrade hbase-server to use junit5 Part20
(#8286) (#8298)
a1b004c78f1 is described below
commit a1b004c78f1100d652fdb7d9bef5b88f0f6056d2
Author: Duo Zhang <[email protected]>
AuthorDate: Wed Jun 3 18:23:05 2026 +0800
HBASE-30188 Upgrade hbase-server to use junit5 Part20 (#8286) (#8298)
(cherry picked from commit 8ce9e3b53798b284c402875856518c0566f33949)
Signed-off-by: Xiao Liu <[email protected]>
---
...estReplicationSyncUpToolWithBulkLoadedData.java | 47 +-
.../client/replication/TestReplicationAdmin.java | 2 +-
...point.java => ReplicationEndpointTestBase.java} | 79 ++-
...S.java => ReplicationKillMasterRSTestBase.java} | 21 +-
...nKillRS.java => ReplicationKillRSTestBase.java} | 23 +-
...RS.java => ReplicationKillSlaveRSTestBase.java} | 21 +-
.../hbase/replication/TestReplicationEndpoint.java | 637 +--------------------
.../replication/TestReplicationKillMasterRS.java | 30 +-
.../TestReplicationKillMasterRSCompressed.java | 21 +-
...ReplicationKillMasterRSWithSeparateOldWALs.java | 22 +-
.../replication/TestReplicationKillSlaveRS.java | 29 +-
...tReplicationKillSlaveRSWithSeparateOldWALs.java | 21 +-
.../replication/TestReplicationSyncUpTool.java | 69 ++-
.../replication/TestReplicationSyncUpToolBase.java | 8 +-
...estReplicationEndpointWithMultipleAsyncWAL.java | 23 +-
.../TestReplicationEndpointWithMultipleWAL.java | 23 +-
...KillMasterRSCompressedWithMultipleAsyncWAL.java | 25 +-
...ationKillMasterRSCompressedWithMultipleWAL.java | 25 +-
...tReplicationSyncUpToolWithMultipleAsyncWAL.java | 11 +-
.../TestReplicationSyncUpToolWithMultipleWAL.java | 11 +-
20 files changed, 211 insertions(+), 937 deletions(-)
diff --git
a/hbase-endpoint/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationSyncUpToolWithBulkLoadedData.java
b/hbase-endpoint/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationSyncUpToolWithBulkLoadedData.java
index 8c26547ee7c..d7f633c6916 100644
---
a/hbase-endpoint/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationSyncUpToolWithBulkLoadedData.java
+++
b/hbase-endpoint/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationSyncUpToolWithBulkLoadedData.java
@@ -17,10 +17,10 @@
*/
package org.apache.hadoop.hbase.replication;
-import static
org.apache.hadoop.hbase.replication.TestReplicationBase.NB_RETRIES;
-import static
org.apache.hadoop.hbase.replication.TestReplicationBase.SLEEP_TIME;
-import static org.apache.hadoop.hbase.replication.TestReplicationBase.row;
-import static org.junit.Assert.assertEquals;
+import static
org.apache.hadoop.hbase.replication.TestReplicationBaseNoBeforeAll.NB_RETRIES;
+import static
org.apache.hadoop.hbase.replication.TestReplicationBaseNoBeforeAll.SLEEP_TIME;
+import static
org.apache.hadoop.hbase.replication.TestReplicationBaseNoBeforeAll.row;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import java.io.IOException;
import java.util.ArrayList;
@@ -32,7 +32,6 @@ import java.util.Set;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
import org.apache.hadoop.hbase.HBaseTestingUtility;
import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.TableName;
@@ -45,19 +44,15 @@ import
org.apache.hadoop.hbase.testclassification.ReplicationTests;
import org.apache.hadoop.hbase.tool.BulkLoadHFiles;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.HFileTestUtil;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-@Category({ ReplicationTests.class, LargeTests.class })
+@Tag(ReplicationTests.TAG)
+@Tag(LargeTests.TAG)
public class TestReplicationSyncUpToolWithBulkLoadedData extends
TestReplicationSyncUpToolBase {
- @ClassRule
- public static final HBaseClassTestRule CLASS_RULE =
-
HBaseClassTestRule.forClass(TestReplicationSyncUpToolWithBulkLoadedData.class);
-
private static final Logger LOG =
LoggerFactory.getLogger(TestReplicationSyncUpToolWithBulkLoadedData.class);
@@ -122,12 +117,12 @@ public class TestReplicationSyncUpToolWithBulkLoadedData
extends TestReplication
loadAndReplicateHFiles(false, randomHFileRangeListIterator);
int rowCount_ht1Source = UTIL1.countRows(ht1Source);
- assertEquals("t1_syncup has 206 rows on source, after bulk load of another
103 hfiles", 206,
- rowCount_ht1Source);
+ assertEquals(206, rowCount_ht1Source,
+ "t1_syncup has 206 rows on source, after bulk load of another 103
hfiles");
int rowCount_ht2Source = UTIL1.countRows(ht2Source);
- assertEquals("t2_syncup has 406 rows on source, after bulk load of another
203 hfiles", 406,
- rowCount_ht2Source);
+ assertEquals(406, rowCount_ht2Source,
+ "t2_syncup has 406 rows on source, after bulk load of another 203
hfiles");
shutDownSourceHBaseCluster();
restartTargetHBaseCluster(1);
@@ -137,8 +132,8 @@ public class TestReplicationSyncUpToolWithBulkLoadedData
extends TestReplication
// Before sync up
int rowCountHt1TargetAtPeer1 = UTIL2.countRows(ht1TargetAtPeer1);
int rowCountHt2TargetAtPeer1 = UTIL2.countRows(ht2TargetAtPeer1);
- assertEquals("@Peer1 t1_syncup should still have 100 rows", 100,
rowCountHt1TargetAtPeer1);
- assertEquals("@Peer1 t2_syncup should still have 200 rows", 200,
rowCountHt2TargetAtPeer1);
+ assertEquals(100, rowCountHt1TargetAtPeer1, "@Peer1 t1_syncup should still
have 100 rows");
+ assertEquals(200, rowCountHt2TargetAtPeer1, "@Peer1 t2_syncup should still
have 200 rows");
// Run sync up tool
syncUp(UTIL1);
@@ -157,10 +152,10 @@ public class TestReplicationSyncUpToolWithBulkLoadedData
extends TestReplication
rowCount_ht2Source = UTIL1.countRows(ht2Source);
LOG.debug("t2_syncup should have 406 rows at source, and it is " +
rowCount_ht2Source);
}
- assertEquals("@Peer1 t1_syncup should be sync up and have 200 rows",
200,
- rowCountHt1TargetAtPeer1);
- assertEquals("@Peer1 t2_syncup should be sync up and have 400 rows",
400,
- rowCountHt2TargetAtPeer1);
+ assertEquals(200, rowCountHt1TargetAtPeer1,
+ "@Peer1 t1_syncup should be sync up and have 200 rows");
+ assertEquals(400, rowCountHt2TargetAtPeer1,
+ "@Peer1 t2_syncup should be sync up and have 400 rows");
}
if (rowCountHt1TargetAtPeer1 == 200 && rowCountHt2TargetAtPeer1 == 400) {
LOG.info("SyncUpAfterBulkLoad succeeded at retry = " + i);
@@ -228,7 +223,7 @@ public class TestReplicationSyncUpToolWithBulkLoadedData
extends TestReplication
Table source, byte[][][] hfileRanges, int numOfRows) throws Exception {
Path dir = UTIL1.getDataTestDirOnTestFS(testName);
FileSystem fs = UTIL1.getTestFileSystem();
- dir = dir.makeQualified(fs);
+ dir = dir.makeQualified(fs.getUri(), fs.getWorkingDirectory());
Path familyDir = new Path(dir, Bytes.toString(fam));
int hfileIdx = 0;
@@ -248,7 +243,7 @@ public class TestReplicationSyncUpToolWithBulkLoadedData
extends TestReplication
Table source, byte[][][] hfileRanges, int numOfRows) throws Exception {
Path dir = UTIL2.getDataTestDirOnTestFS(testName);
FileSystem fs = UTIL2.getTestFileSystem();
- dir = dir.makeQualified(fs);
+ dir = dir.makeQualified(fs.getUri(), fs.getWorkingDirectory());
Path familyDir = new Path(dir, Bytes.toString(fam));
int hfileIdx = 0;
@@ -269,7 +264,7 @@ public class TestReplicationSyncUpToolWithBulkLoadedData
extends TestReplication
for (int i = 0; i < NB_RETRIES; i++) {
int rowCountHt2TargetAtPeer1 = UTIL2.countRows(target);
if (i == NB_RETRIES - 1) {
- assertEquals(msg, expectedCount, rowCountHt2TargetAtPeer1);
+ assertEquals(expectedCount, rowCountHt2TargetAtPeer1, msg);
}
if (expectedCount == rowCountHt2TargetAtPeer1) {
break;
diff --git
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/replication/TestReplicationAdmin.java
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/replication/TestReplicationAdmin.java
index 9172259dca8..fd8c4056688 100644
---
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/replication/TestReplicationAdmin.java
+++
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/replication/TestReplicationAdmin.java
@@ -41,13 +41,13 @@ import org.apache.hadoop.hbase.ServerName;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.replication.DummyReplicationEndpoint;
+import
org.apache.hadoop.hbase.replication.ReplicationEndpointTestBase.InterClusterReplicationEndpointForTest;
import org.apache.hadoop.hbase.replication.ReplicationException;
import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;
import org.apache.hadoop.hbase.replication.ReplicationPeerConfigBuilder;
import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;
import org.apache.hadoop.hbase.replication.ReplicationQueueStorage;
import org.apache.hadoop.hbase.replication.ReplicationStorageFactory;
-import
org.apache.hadoop.hbase.replication.TestReplicationEndpoint.InterClusterReplicationEndpointForTest;
import org.apache.hadoop.hbase.testclassification.ClientTests;
import org.apache.hadoop.hbase.testclassification.MediumTests;
import org.junit.jupiter.api.AfterAll;
diff --git
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationEndpoint.java
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/ReplicationEndpointTestBase.java
similarity index 91%
copy from
hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationEndpoint.java
copy to
hbase-server/src/test/java/org/apache/hadoop/hbase/replication/ReplicationEndpointTestBase.java
index 46579a95865..b6a7099546d 100644
---
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationEndpoint.java
+++
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/ReplicationEndpointTestBase.java
@@ -17,6 +17,10 @@
*/
package org.apache.hadoop.hbase.replication;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
@@ -35,7 +39,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import org.apache.hadoop.hbase.Cell;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
+import org.apache.hadoop.hbase.HBaseTestingUtility;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.Waiter;
@@ -53,8 +57,6 @@ import
org.apache.hadoop.hbase.replication.regionserver.MetricsReplicationSource
import
org.apache.hadoop.hbase.replication.regionserver.MetricsReplicationSourceSourceImpl;
import
org.apache.hadoop.hbase.replication.regionserver.MetricsReplicationTableSource;
import org.apache.hadoop.hbase.replication.regionserver.MetricsSource;
-import org.apache.hadoop.hbase.testclassification.MediumTests;
-import org.apache.hadoop.hbase.testclassification.ReplicationTests;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
import org.apache.hadoop.hbase.util.JVMClusterUtil.RegionServerThread;
@@ -65,44 +67,34 @@ import org.apache.hadoop.hbase.wal.WALEdit;
import org.apache.hadoop.hbase.wal.WALKeyImpl;
import org.apache.hadoop.hbase.zookeeper.ZKConfig;
import org.apache.hadoop.metrics2.lib.DynamicMetricsRegistry;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Tests ReplicationSource and ReplicationEndpoint interactions
*/
-@Category({ ReplicationTests.class, MediumTests.class })
-public class TestReplicationEndpoint extends TestReplicationBase {
+public class ReplicationEndpointTestBase extends
TestReplicationBaseNoBeforeAll {
- @ClassRule
- public static final HBaseClassTestRule CLASS_RULE =
- HBaseClassTestRule.forClass(TestReplicationEndpoint.class);
-
- private static final Logger LOG =
LoggerFactory.getLogger(TestReplicationEndpoint.class);
+ private static final Logger LOG =
LoggerFactory.getLogger(ReplicationEndpointTestBase.class);
static int numRegionServers;
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- TestReplicationBase.setUpBeforeClass();
+ protected static void setUpBeforeClass() throws Exception {
+ configureClusters(UTIL1, UTIL2);
+ startClusters();
numRegionServers = UTIL1.getHBaseCluster().getRegionServerThreads().size();
}
- @AfterClass
- public static void tearDownAfterClass() throws Exception {
- TestReplicationBase.tearDownAfterClass();
+ @AfterAll
+ public static void assertStopped() {
// check stop is called
- Assert.assertTrue(ReplicationEndpointForTest.stoppedCount.get() > 0);
+ assertTrue(ReplicationEndpointForTest.stoppedCount.get() > 0);
}
- @Before
+ @BeforeEach
public void setup() throws Exception {
ReplicationEndpointForTest.contructedCount.set(0);
ReplicationEndpointForTest.startedCount.set(0);
@@ -161,7 +153,7 @@ public class TestReplicationEndpoint extends
TestReplicationBase {
}
});
- Assert.assertEquals(0, ReplicationEndpointForTest.replicateCount.get());
+ assertEquals(0, ReplicationEndpointForTest.replicateCount.get());
// now replicate some data.
doPut(Bytes.toBytes("row42"));
@@ -180,8 +172,8 @@ public class TestReplicationEndpoint extends
TestReplicationBase {
@Test
public void testReplicationEndpointReturnsFalseOnReplicate() throws
Exception {
- Assert.assertEquals(0, ReplicationEndpointForTest.replicateCount.get());
- Assert.assertTrue(!ReplicationEndpointReturningFalse.replicated.get());
+ assertEquals(0, ReplicationEndpointForTest.replicateCount.get());
+ assertTrue(!ReplicationEndpointReturningFalse.replicated.get());
int peerCount = admin.getPeersCount();
final String id = "testReplicationEndpointReturnsFalseOnReplicate";
admin.addPeer(id,
@@ -296,13 +288,13 @@ public class TestReplicationEndpoint extends
TestReplicationBase {
}
});
- Assert.assertNull(ReplicationEndpointWithWALEntryFilter.ex.get());
+ assertNull(ReplicationEndpointWithWALEntryFilter.ex.get());
// make sure our reflectively created filter is in the filter chain
- Assert.assertTrue(EverythingPassesWALEntryFilter.hasPassedAnEntry());
+ assertTrue(EverythingPassesWALEntryFilter.hasPassedAnEntry());
admin.removePeer("testWALEntryFilterFromReplicationEndpoint");
}
- @Test(expected = IOException.class)
+ @Test
public void testWALEntryFilterAddValidation() throws Exception {
ReplicationPeerConfig rpc =
new
ReplicationPeerConfig().setClusterKey(ZKConfig.getZooKeeperClusterKey(CONF1))
@@ -310,10 +302,10 @@ public class TestReplicationEndpoint extends
TestReplicationBase {
// test that we can create mutliple WALFilters reflectively
rpc.getConfiguration().put(BaseReplicationEndpoint.REPLICATION_WALENTRYFILTER_CONFIG_KEY,
"IAmNotARealWalEntryFilter");
- admin.addPeer("testWALEntryFilterAddValidation", rpc);
+ assertThrows(IOException.class, () ->
admin.addPeer("testWALEntryFilterAddValidation", rpc));
}
- @Test(expected = IOException.class)
+ @Test
public void testWALEntryFilterUpdateValidation() throws Exception {
ReplicationPeerConfig rpc =
new
ReplicationPeerConfig().setClusterKey(ZKConfig.getZooKeeperClusterKey(CONF1))
@@ -321,7 +313,8 @@ public class TestReplicationEndpoint extends
TestReplicationBase {
// test that we can create mutliple WALFilters reflectively
rpc.getConfiguration().put(BaseReplicationEndpoint.REPLICATION_WALENTRYFILTER_CONFIG_KEY,
"IAmNotARealWalEntryFilter");
- admin.updatePeerConfig("testWALEntryFilterUpdateValidation", rpc);
+ assertThrows(IOException.class,
+ () -> admin.updatePeerConfig("testWALEntryFilterUpdateValidation", rpc));
}
@Test
@@ -396,15 +389,15 @@ public class TestReplicationEndpoint extends
TestReplicationBase {
// after calling #setAgeOfLastShippedOpByTable
boolean containsRandomNewTable =
source.getSingleSourceSourceByTable().containsKey("RandomNewTable");
- Assert.assertEquals(false, containsRandomNewTable);
+ assertEquals(false, containsRandomNewTable);
source.updateTableLevelMetrics(createWALEntriesWithSize("RandomNewTable"));
containsRandomNewTable =
source.getSingleSourceSourceByTable().containsKey("RandomNewTable");
- Assert.assertEquals(true, containsRandomNewTable);
+ assertEquals(true, containsRandomNewTable);
MetricsReplicationTableSource msr =
source.getSingleSourceSourceByTable().get("RandomNewTable");
// age should be greater than zero we created the entry with time in the
past
- Assert.assertTrue(msr.getLastShippedAge() > 0);
- Assert.assertTrue(msr.getShippedBytes() > 0);
+ assertTrue(msr.getLastShippedAge() > 0);
+ assertTrue(msr.getShippedBytes() > 0);
}
@@ -445,15 +438,15 @@ public class TestReplicationEndpoint extends
TestReplicationBase {
if (ReplicationEndpointForTest.lastEntries == null) {
return; // first call
}
- Assert.assertEquals(1, ReplicationEndpointForTest.lastEntries.size());
+ assertEquals(1, ReplicationEndpointForTest.lastEntries.size());
List<Cell> cells =
ReplicationEndpointForTest.lastEntries.get(0).getEdit().getCells();
- Assert.assertEquals(1, cells.size());
- Assert.assertTrue(Bytes.equals(cells.get(0).getRowArray(),
cells.get(0).getRowOffset(),
+ assertEquals(1, cells.size());
+ assertTrue(Bytes.equals(cells.get(0).getRowArray(),
cells.get(0).getRowOffset(),
cells.get(0).getRowLength(), row, 0, row.length));
}
public static class ReplicationEndpointForTest extends
BaseReplicationEndpoint {
- static UUID uuid = UTIL1.getRandomUUID();
+ static UUID uuid = HBaseTestingUtility.getRandomUUID();
static AtomicInteger contructedCount = new AtomicInteger();
static AtomicInteger startedCount = new AtomicInteger();
static AtomicInteger stoppedCount = new AtomicInteger();
@@ -513,7 +506,7 @@ public class TestReplicationEndpoint extends
TestReplicationBase {
* <pre>
* create 't', 'f'
* add_peer '1', ENDPOINT_CLASSNAME =>
'org.apache.hadoop.hbase.replication.' + \
- * 'TestReplicationEndpoint$SleepingReplicationEndpointForTest'
+ * 'ReplicationEndpointTestBase$SleepingReplicationEndpointForTest'
* alter 't', {NAME=>'f', REPLICATION_SCOPE=>1}
* </pre>
*/
diff --git
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationKillMasterRS.java
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/ReplicationKillMasterRSTestBase.java
similarity index 60%
copy from
hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationKillMasterRS.java
copy to
hbase-server/src/test/java/org/apache/hadoop/hbase/replication/ReplicationKillMasterRSTestBase.java
index 7720d42a6ed..21d044b2ebc 100644
---
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationKillMasterRS.java
+++
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/ReplicationKillMasterRSTestBase.java
@@ -17,30 +17,13 @@
*/
package org.apache.hadoop.hbase.replication;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
-import org.apache.hadoop.hbase.testclassification.LargeTests;
-import org.apache.hadoop.hbase.testclassification.ReplicationTests;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Test;
/**
* Runs the TestReplicationKillRS test and selects the RS to kill in the
master cluster Do not add
* other tests in this class.
*/
-@Category({ ReplicationTests.class, LargeTests.class })
-public class TestReplicationKillMasterRS extends TestReplicationKillRS {
-
- @ClassRule
- public static final HBaseClassTestRule CLASS_RULE =
- HBaseClassTestRule.forClass(TestReplicationKillMasterRS.class);
-
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- NUM_SLAVES1 = 2;
- TestReplicationBase.setUpBeforeClass();
- }
+public class ReplicationKillMasterRSTestBase extends ReplicationKillRSTestBase
{
@Test
public void killOneMasterRS() throws Exception {
diff --git
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationKillRS.java
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/ReplicationKillRSTestBase.java
similarity index 86%
rename from
hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationKillRS.java
rename to
hbase-server/src/test/java/org/apache/hadoop/hbase/replication/ReplicationKillRSTestBase.java
index 254f152db16..5ad90b9a5e6 100644
---
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationKillRS.java
+++
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/ReplicationKillRSTestBase.java
@@ -17,10 +17,9 @@
*/
package org.apache.hadoop.hbase.replication;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.fail;
import org.apache.hadoop.hbase.HBaseTestingUtility;
-import org.apache.hadoop.hbase.UnknownScannerException;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Result;
@@ -28,12 +27,13 @@ import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
+import org.apache.hadoop.hbase.util.Threads;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public abstract class TestReplicationKillRS extends TestReplicationBase {
+public abstract class ReplicationKillRSTestBase extends
TestReplicationBaseNoBeforeAll {
- private static final Logger LOG =
LoggerFactory.getLogger(TestReplicationKillRS.class);
+ private static final Logger LOG =
LoggerFactory.getLogger(ReplicationKillRSTestBase.class);
/**
* Load up 1 tables over 2 region servers and kill a source during the
upload. The failover
@@ -60,8 +60,9 @@ public abstract class TestReplicationKillRS extends
TestReplicationBase {
try (ResultScanner scanner = table.getScanner(new Scan())) {
res = scanner.next(initialCount);
break;
- } catch (UnknownScannerException ex) {
+ } catch (Exception ex) {
LOG.info("Cluster wasn't ready yet, restarting scanner");
+ Thread.sleep(SLEEP_TIME * 2);
}
}
}
@@ -87,6 +88,10 @@ public abstract class TestReplicationKillRS extends
TestReplicationBase {
Result[] res2;
try (ResultScanner scanner = table.getScanner(new Scan())) {
res2 = scanner.next(initialCount * 2);
+ } catch (Exception e) {
+ LOG.warn("Cluster wasn't ready yet, sleep and retry later");
+ Thread.sleep(SLEEP_TIME * 2);
+ continue;
}
if (res2.length < initialCount) {
if (lastCount < res2.length) {
@@ -111,12 +116,8 @@ public abstract class TestReplicationKillRS extends
TestReplicationBase {
Thread killer = new Thread() {
@Override
public void run() {
- try {
- Thread.sleep(timeout);
- utility.getHBaseCluster().getRegionServer(rs).stop("Stopping as part
of the test");
- } catch (Exception e) {
- LOG.error("Couldn't kill a region server", e);
- }
+ Threads.sleepWithoutInterrupt(timeout);
+ utility.getHBaseCluster().getRegionServer(rs).abort("Stopping as part
of the test");
}
};
killer.setDaemon(true);
diff --git
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationKillSlaveRS.java
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/ReplicationKillSlaveRSTestBase.java
similarity index 60%
copy from
hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationKillSlaveRS.java
copy to
hbase-server/src/test/java/org/apache/hadoop/hbase/replication/ReplicationKillSlaveRSTestBase.java
index 6505a4a191d..4918bc0ed8c 100644
---
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationKillSlaveRS.java
+++
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/ReplicationKillSlaveRSTestBase.java
@@ -17,30 +17,13 @@
*/
package org.apache.hadoop.hbase.replication;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
-import org.apache.hadoop.hbase.testclassification.LargeTests;
-import org.apache.hadoop.hbase.testclassification.ReplicationTests;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Test;
/**
* Runs the TestReplicationKillRS test and selects the RS to kill in the slave
cluster Do not add
* other tests in this class.
*/
-@Category({ ReplicationTests.class, LargeTests.class })
-public class TestReplicationKillSlaveRS extends TestReplicationKillRS {
-
- @ClassRule
- public static final HBaseClassTestRule CLASS_RULE =
- HBaseClassTestRule.forClass(TestReplicationKillSlaveRS.class);
-
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- NUM_SLAVES2 = 2;
- TestReplicationBase.setUpBeforeClass();
- }
+public class ReplicationKillSlaveRSTestBase extends ReplicationKillRSTestBase {
@Test
public void killOneSlaveRS() throws Exception {
diff --git
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationEndpoint.java
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationEndpoint.java
index 46579a95865..daa1d28e8cf 100644
---
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationEndpoint.java
+++
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationEndpoint.java
@@ -17,641 +17,20 @@
*/
package org.apache.hadoop.hbase.replication;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-import java.util.UUID;
-import java.util.concurrent.Callable;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicReference;
-import org.apache.hadoop.hbase.Cell;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
-import org.apache.hadoop.hbase.KeyValue;
-import org.apache.hadoop.hbase.TableName;
-import org.apache.hadoop.hbase.Waiter;
-import org.apache.hadoop.hbase.client.Connection;
-import org.apache.hadoop.hbase.client.ConnectionFactory;
-import org.apache.hadoop.hbase.client.Put;
-import org.apache.hadoop.hbase.client.RegionInfo;
-import org.apache.hadoop.hbase.client.Table;
-import org.apache.hadoop.hbase.regionserver.HRegion;
-import
org.apache.hadoop.hbase.replication.regionserver.HBaseInterClusterReplicationEndpoint;
-import
org.apache.hadoop.hbase.replication.regionserver.MetricsReplicationGlobalSourceSource;
-import
org.apache.hadoop.hbase.replication.regionserver.MetricsReplicationGlobalSourceSourceImpl;
-import
org.apache.hadoop.hbase.replication.regionserver.MetricsReplicationSourceImpl;
-import
org.apache.hadoop.hbase.replication.regionserver.MetricsReplicationSourceSource;
-import
org.apache.hadoop.hbase.replication.regionserver.MetricsReplicationSourceSourceImpl;
-import
org.apache.hadoop.hbase.replication.regionserver.MetricsReplicationTableSource;
-import org.apache.hadoop.hbase.replication.regionserver.MetricsSource;
import org.apache.hadoop.hbase.testclassification.MediumTests;
import org.apache.hadoop.hbase.testclassification.ReplicationTests;
-import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
-import org.apache.hadoop.hbase.util.JVMClusterUtil.RegionServerThread;
-import org.apache.hadoop.hbase.util.Pair;
-import org.apache.hadoop.hbase.util.Threads;
-import org.apache.hadoop.hbase.wal.WAL.Entry;
-import org.apache.hadoop.hbase.wal.WALEdit;
-import org.apache.hadoop.hbase.wal.WALKeyImpl;
-import org.apache.hadoop.hbase.zookeeper.ZKConfig;
-import org.apache.hadoop.metrics2.lib.DynamicMetricsRegistry;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
/**
* Tests ReplicationSource and ReplicationEndpoint interactions
*/
-@Category({ ReplicationTests.class, MediumTests.class })
-public class TestReplicationEndpoint extends TestReplicationBase {
-
- @ClassRule
- public static final HBaseClassTestRule CLASS_RULE =
- HBaseClassTestRule.forClass(TestReplicationEndpoint.class);
-
- private static final Logger LOG =
LoggerFactory.getLogger(TestReplicationEndpoint.class);
-
- static int numRegionServers;
-
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- TestReplicationBase.setUpBeforeClass();
- numRegionServers = UTIL1.getHBaseCluster().getRegionServerThreads().size();
- }
-
- @AfterClass
- public static void tearDownAfterClass() throws Exception {
- TestReplicationBase.tearDownAfterClass();
- // check stop is called
- Assert.assertTrue(ReplicationEndpointForTest.stoppedCount.get() > 0);
- }
-
- @Before
- public void setup() throws Exception {
- ReplicationEndpointForTest.contructedCount.set(0);
- ReplicationEndpointForTest.startedCount.set(0);
- ReplicationEndpointForTest.replicateCount.set(0);
- ReplicationEndpointReturningFalse.replicated.set(false);
- ReplicationEndpointForTest.lastEntries = null;
- final List<RegionServerThread> rsThreads =
UTIL1.getMiniHBaseCluster().getRegionServerThreads();
- for (RegionServerThread rs : rsThreads) {
- UTIL1.getAdmin().rollWALWriter(rs.getRegionServer().getServerName());
- }
- // Wait for all log roll to finish
- UTIL1.waitFor(3000, new Waiter.ExplainingPredicate<Exception>() {
- @Override
- public boolean evaluate() throws Exception {
- for (RegionServerThread rs : rsThreads) {
- if (!rs.getRegionServer().walRollRequestFinished()) {
- return false;
- }
- }
- return true;
- }
-
- @Override
- public String explainFailure() throws Exception {
- List<String> logRollInProgressRsList = new ArrayList<>();
- for (RegionServerThread rs : rsThreads) {
- if (!rs.getRegionServer().walRollRequestFinished()) {
- logRollInProgressRsList.add(rs.getRegionServer().toString());
- }
- }
- return "Still waiting for log roll on regionservers: " +
logRollInProgressRsList;
- }
- });
- }
-
- @Test
- public void testCustomReplicationEndpoint() throws Exception {
- // test installing a custom replication endpoint other than the default
one.
- admin.addPeer("testCustomReplicationEndpoint",
- new
ReplicationPeerConfig().setClusterKey(ZKConfig.getZooKeeperClusterKey(CONF1))
-
.setReplicationEndpointImpl(ReplicationEndpointForTest.class.getName()),
- null);
-
- // check whether the class has been constructed and started
- Waiter.waitFor(CONF1, 60000, new Waiter.Predicate<Exception>() {
- @Override
- public boolean evaluate() throws Exception {
- return ReplicationEndpointForTest.contructedCount.get() >=
numRegionServers;
- }
- });
-
- Waiter.waitFor(CONF1, 60000, new Waiter.Predicate<Exception>() {
- @Override
- public boolean evaluate() throws Exception {
- return ReplicationEndpointForTest.startedCount.get() >=
numRegionServers;
- }
- });
-
- Assert.assertEquals(0, ReplicationEndpointForTest.replicateCount.get());
-
- // now replicate some data.
- doPut(Bytes.toBytes("row42"));
-
- Waiter.waitFor(CONF1, 60000, new Waiter.Predicate<Exception>() {
- @Override
- public boolean evaluate() throws Exception {
- return ReplicationEndpointForTest.replicateCount.get() >= 1;
- }
- });
-
- doAssert(Bytes.toBytes("row42"));
-
- admin.removePeer("testCustomReplicationEndpoint");
- }
-
- @Test
- public void testReplicationEndpointReturnsFalseOnReplicate() throws
Exception {
- Assert.assertEquals(0, ReplicationEndpointForTest.replicateCount.get());
- Assert.assertTrue(!ReplicationEndpointReturningFalse.replicated.get());
- int peerCount = admin.getPeersCount();
- final String id = "testReplicationEndpointReturnsFalseOnReplicate";
- admin.addPeer(id,
- new
ReplicationPeerConfig().setClusterKey(ZKConfig.getZooKeeperClusterKey(CONF1))
-
.setReplicationEndpointImpl(ReplicationEndpointReturningFalse.class.getName()),
- null);
- // This test is flakey and then there is so much stuff flying around in
here its, hard to
- // debug. Peer needs to be up for the edit to make it across. This wait on
- // peer count seems to be a hack that has us not progress till peer is up.
- if (admin.getPeersCount() <= peerCount) {
- LOG.info("Waiting on peercount to go up from " + peerCount);
- Threads.sleep(100);
- }
- // now replicate some data
- doPut(row);
-
- Waiter.waitFor(CONF1, 60000, new Waiter.Predicate<Exception>() {
- @Override
- public boolean evaluate() throws Exception {
- // Looks like replication endpoint returns false unless we put more
than 10 edits. We
- // only send over one edit.
- int count = ReplicationEndpointForTest.replicateCount.get();
- LOG.info("count=" + count);
- return ReplicationEndpointReturningFalse.replicated.get();
- }
- });
- if (ReplicationEndpointReturningFalse.ex.get() != null) {
- throw ReplicationEndpointReturningFalse.ex.get();
- }
-
- admin.removePeer("testReplicationEndpointReturnsFalseOnReplicate");
- }
-
- @Test
- public void testInterClusterReplication() throws Exception {
- final String id = "testInterClusterReplication";
-
- List<HRegion> regions = UTIL1.getHBaseCluster().getRegions(tableName);
- // This trick of waiting on peer to show up is taken from test above.
- int peerCount = admin.getPeersCount();
- admin
- .addPeer(id,
- new
ReplicationPeerConfig().setClusterKey(ZKConfig.getZooKeeperClusterKey(CONF2))
-
.setReplicationEndpointImpl(InterClusterReplicationEndpointForTest.class.getName()),
- null);
- // This test is flakey and then there is so much stuff flying around in
here its, hard to
- // debug. Peer needs to be up for the edit to make it across. This wait on
- // peer count seems to be a hack that has us not progress till peer is up.
- if (admin.getPeersCount() <= peerCount) {
- LOG.info("Waiting on peercount to go up from " + peerCount);
- Threads.sleep(100);
- }
-
- int totEdits = 0;
-
- // Make sure edits are spread across regions because we do region based
batching
- // before shipping edits.
- for (HRegion region : regions) {
- RegionInfo hri = region.getRegionInfo();
- byte[] row = hri.getStartKey();
- for (int i = 0; i < 100; i++) {
- if (row.length > 0) {
- Put put = new Put(row);
- put.addColumn(famName, row, row);
- region.put(put);
- totEdits++;
- }
- }
- }
-
- final int numEdits = totEdits;
- LOG.info("Waiting on replication of {}", numEdits);
- Waiter.waitFor(CONF1, 30000, new Waiter.ExplainingPredicate<Exception>() {
- @Override
- public boolean evaluate() throws Exception {
- return InterClusterReplicationEndpointForTest.replicateCount.get() ==
numEdits;
- }
-
- @Override
- public String explainFailure() throws Exception {
- String failure = "Failed to replicate all edits, expected = " +
numEdits + " replicated = "
- + InterClusterReplicationEndpointForTest.replicateCount.get();
- return failure;
- }
- });
-
- admin.removePeer("testInterClusterReplication");
- UTIL1.deleteTableData(tableName);
- }
-
- @Test
- public void testWALEntryFilterFromReplicationEndpoint() throws Exception {
- ReplicationPeerConfig rpc =
- new
ReplicationPeerConfig().setClusterKey(ZKConfig.getZooKeeperClusterKey(CONF1))
-
.setReplicationEndpointImpl(ReplicationEndpointWithWALEntryFilter.class.getName());
- // test that we can create mutliple WALFilters reflectively
-
rpc.getConfiguration().put(BaseReplicationEndpoint.REPLICATION_WALENTRYFILTER_CONFIG_KEY,
- EverythingPassesWALEntryFilter.class.getName() + ","
- + EverythingPassesWALEntryFilterSubclass.class.getName());
- admin.addPeer("testWALEntryFilterFromReplicationEndpoint", rpc);
- // now replicate some data.
- try (Connection connection = ConnectionFactory.createConnection(CONF1)) {
- doPut(connection, Bytes.toBytes("row1"));
- doPut(connection, row);
- doPut(connection, Bytes.toBytes("row2"));
- }
-
- Waiter.waitFor(CONF1, 60000, new Waiter.Predicate<Exception>() {
- @Override
- public boolean evaluate() throws Exception {
- return ReplicationEndpointForTest.replicateCount.get() >= 1;
- }
- });
-
- Assert.assertNull(ReplicationEndpointWithWALEntryFilter.ex.get());
- // make sure our reflectively created filter is in the filter chain
- Assert.assertTrue(EverythingPassesWALEntryFilter.hasPassedAnEntry());
- admin.removePeer("testWALEntryFilterFromReplicationEndpoint");
- }
-
- @Test(expected = IOException.class)
- public void testWALEntryFilterAddValidation() throws Exception {
- ReplicationPeerConfig rpc =
- new
ReplicationPeerConfig().setClusterKey(ZKConfig.getZooKeeperClusterKey(CONF1))
-
.setReplicationEndpointImpl(ReplicationEndpointWithWALEntryFilter.class.getName());
- // test that we can create mutliple WALFilters reflectively
-
rpc.getConfiguration().put(BaseReplicationEndpoint.REPLICATION_WALENTRYFILTER_CONFIG_KEY,
- "IAmNotARealWalEntryFilter");
- admin.addPeer("testWALEntryFilterAddValidation", rpc);
- }
-
- @Test(expected = IOException.class)
- public void testWALEntryFilterUpdateValidation() throws Exception {
- ReplicationPeerConfig rpc =
- new
ReplicationPeerConfig().setClusterKey(ZKConfig.getZooKeeperClusterKey(CONF1))
-
.setReplicationEndpointImpl(ReplicationEndpointWithWALEntryFilter.class.getName());
- // test that we can create mutliple WALFilters reflectively
-
rpc.getConfiguration().put(BaseReplicationEndpoint.REPLICATION_WALENTRYFILTER_CONFIG_KEY,
- "IAmNotARealWalEntryFilter");
- admin.updatePeerConfig("testWALEntryFilterUpdateValidation", rpc);
- }
-
- @Test
- public void testMetricsSourceBaseSourcePassThrough() {
- /*
- * The replication MetricsSource wraps a MetricsReplicationTableSourceImpl,
- * MetricsReplicationSourceSourceImpl and a
MetricsReplicationGlobalSourceSource, so that
- * metrics get written to both namespaces. Both of those classes wrap a
- * MetricsReplicationSourceImpl that implements BaseSource, which allows
for custom JMX metrics.
- * This test checks to make sure the BaseSource decorator logic on
MetricsSource actually calls
- * down through the two layers of wrapping to the actual BaseSource.
- */
- String id = "id";
- DynamicMetricsRegistry mockRegistry = mock(DynamicMetricsRegistry.class);
- MetricsReplicationSourceImpl singleRms =
mock(MetricsReplicationSourceImpl.class);
- when(singleRms.getMetricsRegistry()).thenReturn(mockRegistry);
- MetricsReplicationSourceImpl globalRms =
mock(MetricsReplicationSourceImpl.class);
- when(globalRms.getMetricsRegistry()).thenReturn(mockRegistry);
-
- MetricsReplicationSourceSource singleSourceSource =
- new MetricsReplicationSourceSourceImpl(singleRms, id);
- MetricsReplicationGlobalSourceSource globalSourceSource =
- new MetricsReplicationGlobalSourceSourceImpl(globalRms);
- MetricsReplicationGlobalSourceSource spyglobalSourceSource =
spy(globalSourceSource);
- doNothing().when(spyglobalSourceSource).incrFailedRecoveryQueue();
-
- Map<String, MetricsReplicationTableSource> singleSourceSourceByTable = new
HashMap<>();
- MetricsSource source =
- new MetricsSource(id, singleSourceSource, spyglobalSourceSource,
singleSourceSourceByTable);
-
- String gaugeName = "gauge";
- String singleGaugeName = "source.id." + gaugeName;
- String globalGaugeName = "source." + gaugeName;
- long delta = 1;
- String counterName = "counter";
- String singleCounterName = "source.id." + counterName;
- String globalCounterName = "source." + counterName;
- long count = 2;
- source.decGauge(gaugeName, delta);
- source.getMetricsContext();
- source.getMetricsDescription();
- source.getMetricsJmxContext();
- source.getMetricsName();
- source.incCounters(counterName, count);
- source.incGauge(gaugeName, delta);
- source.init();
- source.removeMetric(gaugeName);
- source.setGauge(gaugeName, delta);
- source.updateHistogram(counterName, count);
- source.incrFailedRecoveryQueue();
-
- verify(singleRms).decGauge(singleGaugeName, delta);
- verify(globalRms).decGauge(globalGaugeName, delta);
- verify(globalRms).getMetricsContext();
- verify(globalRms).getMetricsJmxContext();
- verify(globalRms).getMetricsName();
- verify(singleRms).incCounters(singleCounterName, count);
- verify(globalRms).incCounters(globalCounterName, count);
- verify(singleRms).incGauge(singleGaugeName, delta);
- verify(globalRms).incGauge(globalGaugeName, delta);
- verify(globalRms).init();
- verify(singleRms).removeMetric(singleGaugeName);
- verify(globalRms).removeMetric(globalGaugeName);
- verify(singleRms).setGauge(singleGaugeName, delta);
- verify(globalRms).setGauge(globalGaugeName, delta);
- verify(singleRms).updateHistogram(singleCounterName, count);
- verify(globalRms).updateHistogram(globalCounterName, count);
- verify(spyglobalSourceSource).incrFailedRecoveryQueue();
-
- // check singleSourceSourceByTable metrics.
- // singleSourceSourceByTable map entry will be created only
- // after calling #setAgeOfLastShippedOpByTable
- boolean containsRandomNewTable =
- source.getSingleSourceSourceByTable().containsKey("RandomNewTable");
- Assert.assertEquals(false, containsRandomNewTable);
- source.updateTableLevelMetrics(createWALEntriesWithSize("RandomNewTable"));
- containsRandomNewTable =
source.getSingleSourceSourceByTable().containsKey("RandomNewTable");
- Assert.assertEquals(true, containsRandomNewTable);
- MetricsReplicationTableSource msr =
source.getSingleSourceSourceByTable().get("RandomNewTable");
-
- // age should be greater than zero we created the entry with time in the
past
- Assert.assertTrue(msr.getLastShippedAge() > 0);
- Assert.assertTrue(msr.getShippedBytes() > 0);
-
- }
-
- private List<Pair<Entry, Long>> createWALEntriesWithSize(String tableName) {
- List<Pair<Entry, Long>> walEntriesWithSize = new ArrayList<>();
- byte[] a = new byte[] { 'a' };
- Entry entry = createEntry(tableName, null, a);
- walEntriesWithSize.add(new Pair<>(entry, 10L));
- return walEntriesWithSize;
- }
-
- private Entry createEntry(String tableName, TreeMap<byte[], Integer> scopes,
byte[]... kvs) {
- WALKeyImpl key1 = new WALKeyImpl(new byte[0], TableName.valueOf(tableName),
- EnvironmentEdgeManager.currentTime() - 1L, scopes);
- WALEdit edit1 = new WALEdit();
-
- for (byte[] kv : kvs) {
- edit1.add(new KeyValue(kv, kv, kv));
- }
- return new Entry(key1, edit1);
- }
-
- private void doPut(byte[] row) throws IOException {
- try (Connection connection = ConnectionFactory.createConnection(CONF1)) {
- doPut(connection, row);
- }
- }
-
- private void doPut(final Connection connection, final byte[] row) throws
IOException {
- try (Table t = connection.getTable(tableName)) {
- Put put = new Put(row);
- put.addColumn(famName, row, row);
- t.put(put);
- }
- }
-
- private static void doAssert(byte[] row) throws Exception {
- if (ReplicationEndpointForTest.lastEntries == null) {
- return; // first call
- }
- Assert.assertEquals(1, ReplicationEndpointForTest.lastEntries.size());
- List<Cell> cells =
ReplicationEndpointForTest.lastEntries.get(0).getEdit().getCells();
- Assert.assertEquals(1, cells.size());
- Assert.assertTrue(Bytes.equals(cells.get(0).getRowArray(),
cells.get(0).getRowOffset(),
- cells.get(0).getRowLength(), row, 0, row.length));
- }
-
- public static class ReplicationEndpointForTest extends
BaseReplicationEndpoint {
- static UUID uuid = UTIL1.getRandomUUID();
- static AtomicInteger contructedCount = new AtomicInteger();
- static AtomicInteger startedCount = new AtomicInteger();
- static AtomicInteger stoppedCount = new AtomicInteger();
- static AtomicInteger replicateCount = new AtomicInteger();
- static volatile List<Entry> lastEntries = null;
-
- public ReplicationEndpointForTest() {
- replicateCount.set(0);
- contructedCount.incrementAndGet();
- }
-
- @Override
- public UUID getPeerUUID() {
- return uuid;
- }
-
- @Override
- public boolean replicate(ReplicateContext replicateContext) {
- replicateCount.incrementAndGet();
- lastEntries = new ArrayList<>(replicateContext.entries);
- return true;
- }
-
- @Override
- public void start() {
- startAsync();
- }
-
- @Override
- public void stop() {
- stopAsync();
- }
-
- @Override
- protected void doStart() {
- startedCount.incrementAndGet();
- notifyStarted();
- }
-
- @Override
- protected void doStop() {
- stoppedCount.incrementAndGet();
- notifyStopped();
- }
-
- @Override
- public boolean canReplicateToSameCluster() {
- return true;
- }
- }
-
- /**
- * Not used by unit tests, helpful for manual testing with replication.
- * <p>
- * Snippet for `hbase shell`:
- *
- * <pre>
- * create 't', 'f'
- * add_peer '1', ENDPOINT_CLASSNAME =>
'org.apache.hadoop.hbase.replication.' + \
- * 'TestReplicationEndpoint$SleepingReplicationEndpointForTest'
- * alter 't', {NAME=>'f', REPLICATION_SCOPE=>1}
- * </pre>
- */
- public static class SleepingReplicationEndpointForTest extends
ReplicationEndpointForTest {
- private long duration;
-
- public SleepingReplicationEndpointForTest() {
- super();
- }
-
- @Override
- public void init(Context context) throws IOException {
- super.init(context);
- if (this.ctx != null) {
- duration = this.ctx.getConfiguration()
- .getLong("hbase.test.sleep.replication.endpoint.duration.millis",
5000L);
- }
- }
-
- @Override
- public boolean replicate(ReplicateContext context) {
- try {
- Thread.sleep(duration);
- } catch (InterruptedException e) {
- Thread.currentThread().interrupt();
- return false;
- }
- return super.replicate(context);
- }
- }
-
- public static class InterClusterReplicationEndpointForTest
- extends HBaseInterClusterReplicationEndpoint {
-
- static AtomicInteger replicateCount = new AtomicInteger();
- static boolean failedOnce;
-
- public InterClusterReplicationEndpointForTest() {
- replicateCount.set(0);
- }
-
- @Override
- public boolean replicate(ReplicateContext replicateContext) {
- boolean success = super.replicate(replicateContext);
- if (success) {
- replicateCount.addAndGet(replicateContext.entries.size());
- }
- return success;
- }
-
- @Override
- protected Callable<Integer> createReplicator(List<Entry> entries, int
ordinal, int timeout) {
- // Fail only once, we don't want to slow down the test.
- if (failedOnce) {
- return () -> ordinal;
- } else {
- failedOnce = true;
- return () -> {
- throw new IOException("Sample Exception: Failed to replicate.");
- };
- }
- }
- }
-
- public static class ReplicationEndpointReturningFalse extends
ReplicationEndpointForTest {
- static int COUNT = 10;
- static AtomicReference<Exception> ex = new AtomicReference<>(null);
- static AtomicBoolean replicated = new AtomicBoolean(false);
-
- @Override
- public boolean replicate(ReplicateContext replicateContext) {
- try {
- // check row
- doAssert(row);
- } catch (Exception e) {
- ex.set(e);
- }
-
- super.replicate(replicateContext);
- LOG.info("Replicated " + Bytes.toString(row) + ", count=" +
replicateCount.get());
-
- replicated.set(replicateCount.get() > COUNT); // first 10 times, we
return false
- return replicated.get();
- }
- }
-
- // return a WALEntry filter which only accepts "row", but not other rows
- public static class ReplicationEndpointWithWALEntryFilter extends
ReplicationEndpointForTest {
- static AtomicReference<Exception> ex = new AtomicReference<>(null);
-
- @Override
- public boolean replicate(ReplicateContext replicateContext) {
- try {
- super.replicate(replicateContext);
- doAssert(row);
- } catch (Exception e) {
- ex.set(e);
- }
- return true;
- }
-
- @Override
- public WALEntryFilter getWALEntryfilter() {
- return new ChainWALEntryFilter(super.getWALEntryfilter(), new
WALEntryFilter() {
- @Override
- public Entry filter(Entry entry) {
- ArrayList<Cell> cells = entry.getEdit().getCells();
- int size = cells.size();
- for (int i = size - 1; i >= 0; i--) {
- Cell cell = cells.get(i);
- if (
- !Bytes.equals(cell.getRowArray(), cell.getRowOffset(),
cell.getRowLength(), row, 0,
- row.length)
- ) {
- cells.remove(i);
- }
- }
- return entry;
- }
- });
- }
- }
-
- public static class EverythingPassesWALEntryFilter implements WALEntryFilter
{
- private static boolean passedEntry = false;
-
- @Override
- public Entry filter(Entry entry) {
- passedEntry = true;
- return entry;
- }
-
- public static boolean hasPassedAnEntry() {
- return passedEntry;
- }
- }
+@Tag(ReplicationTests.TAG)
+@Tag(MediumTests.TAG)
+public class TestReplicationEndpoint extends ReplicationEndpointTestBase {
- public static class EverythingPassesWALEntryFilterSubclass
- extends EverythingPassesWALEntryFilter {
+ @BeforeAll
+ public static void setUpBeforeAll() throws Exception {
+ ReplicationEndpointTestBase.setUpBeforeClass();
}
}
diff --git
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationKillMasterRS.java
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationKillMasterRS.java
index 7720d42a6ed..2e8cfcecbcb 100644
---
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationKillMasterRS.java
+++
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationKillMasterRS.java
@@ -17,33 +17,19 @@
*/
package org.apache.hadoop.hbase.replication;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
import org.apache.hadoop.hbase.testclassification.LargeTests;
import org.apache.hadoop.hbase.testclassification.ReplicationTests;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
-/**
- * Runs the TestReplicationKillRS test and selects the RS to kill in the
master cluster Do not add
- * other tests in this class.
- */
-@Category({ ReplicationTests.class, LargeTests.class })
-public class TestReplicationKillMasterRS extends TestReplicationKillRS {
-
- @ClassRule
- public static final HBaseClassTestRule CLASS_RULE =
- HBaseClassTestRule.forClass(TestReplicationKillMasterRS.class);
+@Tag(ReplicationTests.TAG)
+@Tag(LargeTests.TAG)
+public class TestReplicationKillMasterRS extends
ReplicationKillMasterRSTestBase {
- @BeforeClass
+ @BeforeAll
public static void setUpBeforeClass() throws Exception {
NUM_SLAVES1 = 2;
- TestReplicationBase.setUpBeforeClass();
- }
-
- @Test
- public void killOneMasterRS() throws Exception {
- loadTableAndKillRS(UTIL1);
+ configureClusters(UTIL1, UTIL2);
+ startClusters();
}
}
diff --git
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationKillMasterRSCompressed.java
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationKillMasterRSCompressed.java
index 7140d39adbf..dd7bf80267e 100644
---
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationKillMasterRSCompressed.java
+++
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationKillMasterRSCompressed.java
@@ -17,28 +17,25 @@
*/
package org.apache.hadoop.hbase.replication;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.testclassification.LargeTests;
import org.apache.hadoop.hbase.testclassification.ReplicationTests;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
/**
* Run the same test as TestReplicationKillMasterRS but with WAL compression
enabled Do not add
* other tests in this class.
*/
-@Category({ ReplicationTests.class, LargeTests.class })
-public class TestReplicationKillMasterRSCompressed extends
TestReplicationKillMasterRS {
+@Tag(ReplicationTests.TAG)
+@Tag(LargeTests.TAG)
+public class TestReplicationKillMasterRSCompressed extends
ReplicationKillMasterRSTestBase {
- @ClassRule
- public static final HBaseClassTestRule CLASS_RULE =
- HBaseClassTestRule.forClass(TestReplicationKillMasterRSCompressed.class);
-
- @BeforeClass
+ @BeforeAll
public static void setUpBeforeClass() throws Exception {
+ NUM_SLAVES1 = 2;
CONF1.setBoolean(HConstants.ENABLE_WAL_COMPRESSION, true);
- TestReplicationKillMasterRS.setUpBeforeClass();
+ configureClusters(UTIL1, UTIL2);
+ startClusters();
}
}
diff --git
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationKillMasterRSWithSeparateOldWALs.java
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationKillMasterRSWithSeparateOldWALs.java
index a5e19c9f443..31f91b44c26 100644
---
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationKillMasterRSWithSeparateOldWALs.java
+++
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationKillMasterRSWithSeparateOldWALs.java
@@ -17,24 +17,22 @@
*/
package org.apache.hadoop.hbase.replication;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
import org.apache.hadoop.hbase.testclassification.LargeTests;
import org.apache.hadoop.hbase.testclassification.ReplicationTests;
import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
-@Category({ ReplicationTests.class, LargeTests.class })
-public class TestReplicationKillMasterRSWithSeparateOldWALs extends
TestReplicationKillMasterRS {
+@Tag(ReplicationTests.TAG)
+@Tag(LargeTests.TAG)
+public class TestReplicationKillMasterRSWithSeparateOldWALs
+ extends ReplicationKillMasterRSTestBase {
- @ClassRule
- public static final HBaseClassTestRule CLASS_RULE =
-
HBaseClassTestRule.forClass(TestReplicationKillMasterRSWithSeparateOldWALs.class);
-
- @BeforeClass
+ @BeforeAll
public static void setUpBeforeClass() throws Exception {
+ NUM_SLAVES1 = 2;
CONF1.setBoolean(AbstractFSWALProvider.SEPARATE_OLDLOGDIR, true);
- TestReplicationKillMasterRS.setUpBeforeClass();
+ configureClusters(UTIL1, UTIL2);
+ startClusters();
}
}
diff --git
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationKillSlaveRS.java
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationKillSlaveRS.java
index 6505a4a191d..1b87129cf5d 100644
---
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationKillSlaveRS.java
+++
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationKillSlaveRS.java
@@ -17,33 +17,22 @@
*/
package org.apache.hadoop.hbase.replication;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
import org.apache.hadoop.hbase.testclassification.LargeTests;
import org.apache.hadoop.hbase.testclassification.ReplicationTests;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
/**
- * Runs the TestReplicationKillRS test and selects the RS to kill in the slave
cluster Do not add
- * other tests in this class.
+ *
*/
-@Category({ ReplicationTests.class, LargeTests.class })
-public class TestReplicationKillSlaveRS extends TestReplicationKillRS {
-
- @ClassRule
- public static final HBaseClassTestRule CLASS_RULE =
- HBaseClassTestRule.forClass(TestReplicationKillSlaveRS.class);
+@Tag(ReplicationTests.TAG)
+@Tag(LargeTests.TAG)
+public class TestReplicationKillSlaveRS extends ReplicationKillSlaveRSTestBase
{
- @BeforeClass
+ @BeforeAll
public static void setUpBeforeClass() throws Exception {
NUM_SLAVES2 = 2;
- TestReplicationBase.setUpBeforeClass();
- }
-
- @Test
- public void killOneSlaveRS() throws Exception {
- loadTableAndKillRS(UTIL2);
+ configureClusters(UTIL1, UTIL2);
+ startClusters();
}
}
diff --git
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationKillSlaveRSWithSeparateOldWALs.java
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationKillSlaveRSWithSeparateOldWALs.java
index 3b0766f6ed9..f37442240b6 100644
---
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationKillSlaveRSWithSeparateOldWALs.java
+++
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationKillSlaveRSWithSeparateOldWALs.java
@@ -17,24 +17,21 @@
*/
package org.apache.hadoop.hbase.replication;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
import org.apache.hadoop.hbase.testclassification.LargeTests;
import org.apache.hadoop.hbase.testclassification.ReplicationTests;
import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
-@Category({ ReplicationTests.class, LargeTests.class })
-public class TestReplicationKillSlaveRSWithSeparateOldWALs extends
TestReplicationKillSlaveRS {
+@Tag(ReplicationTests.TAG)
+@Tag(LargeTests.TAG)
+public class TestReplicationKillSlaveRSWithSeparateOldWALs extends
ReplicationKillSlaveRSTestBase {
- @ClassRule
- public static final HBaseClassTestRule CLASS_RULE =
-
HBaseClassTestRule.forClass(TestReplicationKillSlaveRSWithSeparateOldWALs.class);
-
- @BeforeClass
+ @BeforeAll
public static void setUpBeforeClass() throws Exception {
+ NUM_SLAVES2 = 2;
CONF1.setBoolean(AbstractFSWALProvider.SEPARATE_OLDLOGDIR, true);
- TestReplicationKillSlaveRS.setUpBeforeClass();
+ configureClusters(UTIL1, UTIL2);
+ startClusters();
}
}
diff --git
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationSyncUpTool.java
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationSyncUpTool.java
index 230f0a11a20..d01cf663341 100644
---
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationSyncUpTool.java
+++
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationSyncUpTool.java
@@ -17,32 +17,27 @@
*/
package org.apache.hadoop.hbase.replication;
-import static
org.apache.hadoop.hbase.replication.TestReplicationBase.NB_RETRIES;
-import static
org.apache.hadoop.hbase.replication.TestReplicationBase.NB_ROWS_IN_BATCH;
-import static
org.apache.hadoop.hbase.replication.TestReplicationBase.SLEEP_TIME;
-import static org.junit.Assert.assertEquals;
+import static
org.apache.hadoop.hbase.replication.TestReplicationBaseNoBeforeAll.NB_RETRIES;
+import static
org.apache.hadoop.hbase.replication.TestReplicationBaseNoBeforeAll.NB_ROWS_IN_BATCH;
+import static
org.apache.hadoop.hbase.replication.TestReplicationBaseNoBeforeAll.SLEEP_TIME;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.ArrayList;
import java.util.List;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.testclassification.LargeTests;
import org.apache.hadoop.hbase.testclassification.ReplicationTests;
import org.apache.hadoop.hbase.util.Bytes;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-@Category({ ReplicationTests.class, LargeTests.class })
+@Tag(ReplicationTests.TAG)
+@Tag(LargeTests.TAG)
public class TestReplicationSyncUpTool extends TestReplicationSyncUpToolBase {
- @ClassRule
- public static final HBaseClassTestRule CLASS_RULE =
- HBaseClassTestRule.forClass(TestReplicationSyncUpTool.class);
-
private static final Logger LOG =
LoggerFactory.getLogger(TestReplicationSyncUpTool.class);
/**
@@ -118,8 +113,8 @@ public class TestReplicationSyncUpTool extends
TestReplicationSyncUpToolBase {
for (int i = 0; i < NB_RETRIES; i++) {
int rowCountHt1TargetAtPeer1 = UTIL2.countRows(ht1TargetAtPeer1);
if (i == NB_RETRIES - 1) {
- assertEquals("t1_syncup has 101 rows on source, and 100 on slave1",
rowCountHt1Source - 1,
- rowCountHt1TargetAtPeer1);
+ assertEquals(rowCountHt1Source - 1, rowCountHt1TargetAtPeer1,
+ "t1_syncup has 101 rows on source, and 100 on slave1");
}
if (rowCountHt1Source - 1 == rowCountHt1TargetAtPeer1) {
break;
@@ -131,8 +126,8 @@ public class TestReplicationSyncUpTool extends
TestReplicationSyncUpToolBase {
for (int i = 0; i < NB_RETRIES; i++) {
int rowCountHt2TargetAtPeer1 = UTIL2.countRows(ht2TargetAtPeer1);
if (i == NB_RETRIES - 1) {
- assertEquals("t2_syncup has 201 rows on source, and 200 on slave1",
rowCountHt2Source - 1,
- rowCountHt2TargetAtPeer1);
+ assertEquals(rowCountHt2Source - 1, rowCountHt2TargetAtPeer1,
+ "t2_syncup has 201 rows on source, and 200 on slave1");
}
if (rowCountHt2Source - 1 == rowCountHt2TargetAtPeer1) {
break;
@@ -162,12 +157,12 @@ public class TestReplicationSyncUpTool extends
TestReplicationSyncUpToolBase {
ht2Source.delete(list);
int rowCount_ht1Source = UTIL1.countRows(ht1Source);
- assertEquals("t1_syncup has 51 rows on source, after remove 50 of the
replicated colfam", 51,
- rowCount_ht1Source);
+ assertEquals(51, rowCount_ht1Source,
+ "t1_syncup has 51 rows on source, after remove 50 of the replicated
colfam");
int rowCount_ht2Source = UTIL1.countRows(ht2Source);
- assertEquals("t2_syncup has 101 rows on source, after remove 100 of the
replicated colfam", 101,
- rowCount_ht2Source);
+ assertEquals(101, rowCount_ht2Source,
+ "t2_syncup has 101 rows on source, after remove 100 of the replicated
colfam");
shutDownSourceHBaseCluster();
restartTargetHBaseCluster(1);
@@ -177,8 +172,8 @@ public class TestReplicationSyncUpTool extends
TestReplicationSyncUpToolBase {
// before sync up
int rowCountHt1TargetAtPeer1 = UTIL2.countRows(ht1TargetAtPeer1);
int rowCountHt2TargetAtPeer1 = UTIL2.countRows(ht2TargetAtPeer1);
- assertEquals("@Peer1 t1_syncup should still have 100 rows", 100,
rowCountHt1TargetAtPeer1);
- assertEquals("@Peer1 t2_syncup should still have 200 rows", 200,
rowCountHt2TargetAtPeer1);
+ assertEquals(100, rowCountHt1TargetAtPeer1, "@Peer1 t1_syncup should still
have 100 rows");
+ assertEquals(200, rowCountHt2TargetAtPeer1, "@Peer1 t2_syncup should still
have 200 rows");
// After sync up
for (int i = 0; i < NB_RETRIES; i++) {
@@ -194,10 +189,10 @@ public class TestReplicationSyncUpTool extends
TestReplicationSyncUpToolBase {
rowCount_ht2Source = UTIL1.countRows(ht2Source);
LOG.debug("t2_syncup should have 101 rows at source, and it is " +
rowCount_ht2Source);
}
- assertEquals("@Peer1 t1_syncup should be sync up and have 50 rows", 50,
- rowCountHt1TargetAtPeer1);
- assertEquals("@Peer1 t2_syncup should be sync up and have 100 rows",
100,
- rowCountHt2TargetAtPeer1);
+ assertEquals(50, rowCountHt1TargetAtPeer1,
+ "@Peer1 t1_syncup should be sync up and have 50 rows");
+ assertEquals(100, rowCountHt2TargetAtPeer1,
+ "@Peer1 t2_syncup should be sync up and have 100 rows");
}
if (rowCountHt1TargetAtPeer1 == 50 && rowCountHt2TargetAtPeer1 == 100) {
LOG.info("SyncUpAfterDelete succeeded at retry = " + i);
@@ -240,9 +235,9 @@ public class TestReplicationSyncUpTool extends
TestReplicationSyncUpToolBase {
ht2Source.put(p);
int rowCount_ht1Source = UTIL1.countRows(ht1Source);
- assertEquals("t1_syncup has 102 rows on source", 102, rowCount_ht1Source);
+ assertEquals(102, rowCount_ht1Source, "t1_syncup has 102 rows on source");
int rowCount_ht2Source = UTIL1.countRows(ht2Source);
- assertEquals("t2_syncup has 202 rows on source", 202, rowCount_ht2Source);
+ assertEquals(202, rowCount_ht2Source, "t2_syncup has 202 rows on source");
shutDownSourceHBaseCluster();
restartTargetHBaseCluster(1);
@@ -252,10 +247,10 @@ public class TestReplicationSyncUpTool extends
TestReplicationSyncUpToolBase {
// before sync up
int rowCountHt1TargetAtPeer1 = UTIL2.countRows(ht1TargetAtPeer1);
int rowCountHt2TargetAtPeer1 = UTIL2.countRows(ht2TargetAtPeer1);
- assertEquals("@Peer1 t1_syncup should be NOT sync up and have 50 rows", 50,
- rowCountHt1TargetAtPeer1);
- assertEquals("@Peer1 t2_syncup should be NOT sync up and have 100 rows",
100,
- rowCountHt2TargetAtPeer1);
+ assertEquals(50, rowCountHt1TargetAtPeer1,
+ "@Peer1 t1_syncup should be NOT sync up and have 50 rows");
+ assertEquals(100, rowCountHt2TargetAtPeer1,
+ "@Peer1 t2_syncup should be NOT sync up and have 100 rows");
// after syun up
for (int i = 0; i < NB_RETRIES; i++) {
@@ -271,10 +266,10 @@ public class TestReplicationSyncUpTool extends
TestReplicationSyncUpToolBase {
rowCount_ht2Source = UTIL1.countRows(ht2Source);
LOG.debug("t2_syncup should have 202 rows at source, and it is " +
rowCount_ht2Source);
}
- assertEquals("@Peer1 t1_syncup should be sync up and have 100 rows",
100,
- rowCountHt1TargetAtPeer1);
- assertEquals("@Peer1 t2_syncup should be sync up and have 200 rows",
200,
- rowCountHt2TargetAtPeer1);
+ assertEquals(100, rowCountHt1TargetAtPeer1,
+ "@Peer1 t1_syncup should be sync up and have 100 rows");
+ assertEquals(200, rowCountHt2TargetAtPeer1,
+ "@Peer1 t2_syncup should be sync up and have 200 rows");
}
if (rowCountHt1TargetAtPeer1 == 100 && rowCountHt2TargetAtPeer1 == 200) {
LOG.info("SyncUpAfterPut succeeded at retry = " + i);
diff --git
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationSyncUpToolBase.java
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationSyncUpToolBase.java
index 1f5ba53bd34..e3b87c1d734 100644
---
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationSyncUpToolBase.java
+++
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationSyncUpToolBase.java
@@ -32,8 +32,8 @@ import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
import org.apache.hadoop.hbase.replication.regionserver.ReplicationSyncUp;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.util.ToolRunner;
-import org.junit.After;
-import org.junit.Before;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
import org.apache.hbase.thirdparty.com.google.common.io.Closeables;
@@ -66,7 +66,7 @@ public abstract class TestReplicationSyncUpToolBase {
protected void customizeClusterConf(Configuration conf) {
}
- @Before
+ @BeforeEach
public void setUp() throws Exception {
customizeClusterConf(UTIL1.getConfiguration());
customizeClusterConf(UTIL2.getConfiguration());
@@ -96,7 +96,7 @@ public abstract class TestReplicationSyncUpToolBase {
.setColumnFamily(ColumnFamilyDescriptorBuilder.of(NO_REP_FAMILY)).build();
}
- @After
+ @AfterEach
public void tearDown() throws Exception {
Closeables.close(ht1Source, true);
Closeables.close(ht2Source, true);
diff --git
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/multiwal/TestReplicationEndpointWithMultipleAsyncWAL.java
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/multiwal/TestReplicationEndpointWithMultipleAsyncWAL.java
index d3a947fb240..ad82b2fca59 100644
---
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/multiwal/TestReplicationEndpointWithMultipleAsyncWAL.java
+++
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/multiwal/TestReplicationEndpointWithMultipleAsyncWAL.java
@@ -17,27 +17,22 @@
*/
package org.apache.hadoop.hbase.replication.multiwal;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
-import org.apache.hadoop.hbase.replication.TestReplicationEndpoint;
+import org.apache.hadoop.hbase.replication.ReplicationEndpointTestBase;
import org.apache.hadoop.hbase.testclassification.MediumTests;
import org.apache.hadoop.hbase.testclassification.ReplicationTests;
import org.apache.hadoop.hbase.wal.RegionGroupingProvider;
import org.apache.hadoop.hbase.wal.WALFactory;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
-@Category({ ReplicationTests.class, MediumTests.class })
-public class TestReplicationEndpointWithMultipleAsyncWAL extends
TestReplicationEndpoint {
+@Tag(ReplicationTests.TAG)
+@Tag(MediumTests.TAG)
+public class TestReplicationEndpointWithMultipleAsyncWAL extends
ReplicationEndpointTestBase {
- @ClassRule
- public static final HBaseClassTestRule CLASS_RULE =
-
HBaseClassTestRule.forClass(TestReplicationEndpointWithMultipleAsyncWAL.class);
-
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
+ @BeforeAll
+ public static void setUpBeforeAll() throws Exception {
CONF1.set(WALFactory.WAL_PROVIDER, "multiwal");
CONF1.set(RegionGroupingProvider.DELEGATE_PROVIDER, "asyncfs");
- TestReplicationEndpoint.setUpBeforeClass();
+ ReplicationEndpointTestBase.setUpBeforeClass();
}
}
diff --git
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/multiwal/TestReplicationEndpointWithMultipleWAL.java
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/multiwal/TestReplicationEndpointWithMultipleWAL.java
index a882c504399..504c98d182a 100644
---
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/multiwal/TestReplicationEndpointWithMultipleWAL.java
+++
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/multiwal/TestReplicationEndpointWithMultipleWAL.java
@@ -17,27 +17,22 @@
*/
package org.apache.hadoop.hbase.replication.multiwal;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
-import org.apache.hadoop.hbase.replication.TestReplicationEndpoint;
+import org.apache.hadoop.hbase.replication.ReplicationEndpointTestBase;
import org.apache.hadoop.hbase.testclassification.MediumTests;
import org.apache.hadoop.hbase.testclassification.ReplicationTests;
import org.apache.hadoop.hbase.wal.RegionGroupingProvider;
import org.apache.hadoop.hbase.wal.WALFactory;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
-@Category({ ReplicationTests.class, MediumTests.class })
-public class TestReplicationEndpointWithMultipleWAL extends
TestReplicationEndpoint {
+@Tag(ReplicationTests.TAG)
+@Tag(MediumTests.TAG)
+public class TestReplicationEndpointWithMultipleWAL extends
ReplicationEndpointTestBase {
- @ClassRule
- public static final HBaseClassTestRule CLASS_RULE =
- HBaseClassTestRule.forClass(TestReplicationEndpointWithMultipleWAL.class);
-
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
+ @BeforeAll
+ public static void setUpBeforeAll() throws Exception {
CONF1.set(WALFactory.WAL_PROVIDER, "multiwal");
CONF1.set(RegionGroupingProvider.DELEGATE_PROVIDER, "filesystem");
- TestReplicationEndpoint.setUpBeforeClass();
+ ReplicationEndpointTestBase.setUpBeforeClass();
}
}
diff --git
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/multiwal/TestReplicationKillMasterRSCompressedWithMultipleAsyncWAL.java
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/multiwal/TestReplicationKillMasterRSCompressedWithMultipleAsyncWAL.java
index 623e4c28cd0..2f8cae29402 100644
---
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/multiwal/TestReplicationKillMasterRSCompressedWithMultipleAsyncWAL.java
+++
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/multiwal/TestReplicationKillMasterRSCompressedWithMultipleAsyncWAL.java
@@ -17,28 +17,27 @@
*/
package org.apache.hadoop.hbase.replication.multiwal;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
-import
org.apache.hadoop.hbase.replication.TestReplicationKillMasterRSCompressed;
+import org.apache.hadoop.hbase.HConstants;
+import org.apache.hadoop.hbase.replication.ReplicationKillMasterRSTestBase;
import org.apache.hadoop.hbase.testclassification.LargeTests;
import org.apache.hadoop.hbase.testclassification.ReplicationTests;
import org.apache.hadoop.hbase.wal.RegionGroupingProvider;
import org.apache.hadoop.hbase.wal.WALFactory;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
-@Category({ ReplicationTests.class, LargeTests.class })
+@Tag(ReplicationTests.TAG)
+@Tag(LargeTests.TAG)
public class TestReplicationKillMasterRSCompressedWithMultipleAsyncWAL
- extends TestReplicationKillMasterRSCompressed {
+ extends ReplicationKillMasterRSTestBase {
- @ClassRule
- public static final HBaseClassTestRule CLASS_RULE =
-
HBaseClassTestRule.forClass(TestReplicationKillMasterRSCompressedWithMultipleAsyncWAL.class);
-
- @BeforeClass
+ @BeforeAll
public static void setUpBeforeClass() throws Exception {
+ NUM_SLAVES1 = 2;
CONF1.set(WALFactory.WAL_PROVIDER, "multiwal");
CONF1.set(RegionGroupingProvider.DELEGATE_PROVIDER, "asyncfs");
- TestReplicationKillMasterRSCompressed.setUpBeforeClass();
+ CONF1.setBoolean(HConstants.ENABLE_WAL_COMPRESSION, true);
+ configureClusters(UTIL1, UTIL2);
+ startClusters();
}
}
diff --git
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/multiwal/TestReplicationKillMasterRSCompressedWithMultipleWAL.java
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/multiwal/TestReplicationKillMasterRSCompressedWithMultipleWAL.java
index 54921520b1c..d9ebd1d623b 100644
---
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/multiwal/TestReplicationKillMasterRSCompressedWithMultipleWAL.java
+++
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/multiwal/TestReplicationKillMasterRSCompressedWithMultipleWAL.java
@@ -17,28 +17,27 @@
*/
package org.apache.hadoop.hbase.replication.multiwal;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
-import
org.apache.hadoop.hbase.replication.TestReplicationKillMasterRSCompressed;
+import org.apache.hadoop.hbase.HConstants;
+import org.apache.hadoop.hbase.replication.ReplicationKillMasterRSTestBase;
import org.apache.hadoop.hbase.testclassification.LargeTests;
import org.apache.hadoop.hbase.testclassification.ReplicationTests;
import org.apache.hadoop.hbase.wal.RegionGroupingProvider;
import org.apache.hadoop.hbase.wal.WALFactory;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
-@Category({ ReplicationTests.class, LargeTests.class })
+@Tag(ReplicationTests.TAG)
+@Tag(LargeTests.TAG)
public class TestReplicationKillMasterRSCompressedWithMultipleWAL
- extends TestReplicationKillMasterRSCompressed {
+ extends ReplicationKillMasterRSTestBase {
- @ClassRule
- public static final HBaseClassTestRule CLASS_RULE =
-
HBaseClassTestRule.forClass(TestReplicationKillMasterRSCompressedWithMultipleWAL.class);
-
- @BeforeClass
+ @BeforeAll
public static void setUpBeforeClass() throws Exception {
+ NUM_SLAVES1 = 2;
CONF1.set(WALFactory.WAL_PROVIDER, "multiwal");
CONF1.set(RegionGroupingProvider.DELEGATE_PROVIDER, "filesystem");
- TestReplicationKillMasterRSCompressed.setUpBeforeClass();
+ CONF1.setBoolean(HConstants.ENABLE_WAL_COMPRESSION, true);
+ configureClusters(UTIL1, UTIL2);
+ startClusters();
}
}
diff --git
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/multiwal/TestReplicationSyncUpToolWithMultipleAsyncWAL.java
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/multiwal/TestReplicationSyncUpToolWithMultipleAsyncWAL.java
index 83cd41773ca..f8de4560006 100644
---
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/multiwal/TestReplicationSyncUpToolWithMultipleAsyncWAL.java
+++
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/multiwal/TestReplicationSyncUpToolWithMultipleAsyncWAL.java
@@ -18,22 +18,17 @@
package org.apache.hadoop.hbase.replication.multiwal;
import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
import org.apache.hadoop.hbase.replication.TestReplicationSyncUpTool;
import org.apache.hadoop.hbase.testclassification.LargeTests;
import org.apache.hadoop.hbase.testclassification.ReplicationTests;
import org.apache.hadoop.hbase.wal.RegionGroupingProvider;
import org.apache.hadoop.hbase.wal.WALFactory;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
-@Category({ ReplicationTests.class, LargeTests.class })
+@Tag(ReplicationTests.TAG)
+@Tag(LargeTests.TAG)
public class TestReplicationSyncUpToolWithMultipleAsyncWAL extends
TestReplicationSyncUpTool {
- @ClassRule
- public static final HBaseClassTestRule CLASS_RULE =
-
HBaseClassTestRule.forClass(TestReplicationSyncUpToolWithMultipleAsyncWAL.class);
-
@Override
protected void customizeClusterConf(Configuration conf) {
conf.set(WALFactory.WAL_PROVIDER, "multiwal");
diff --git
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/multiwal/TestReplicationSyncUpToolWithMultipleWAL.java
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/multiwal/TestReplicationSyncUpToolWithMultipleWAL.java
index 673b841430e..6883c48cc8d 100644
---
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/multiwal/TestReplicationSyncUpToolWithMultipleWAL.java
+++
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/multiwal/TestReplicationSyncUpToolWithMultipleWAL.java
@@ -18,22 +18,17 @@
package org.apache.hadoop.hbase.replication.multiwal;
import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
import org.apache.hadoop.hbase.replication.TestReplicationSyncUpTool;
import org.apache.hadoop.hbase.testclassification.LargeTests;
import org.apache.hadoop.hbase.testclassification.ReplicationTests;
import org.apache.hadoop.hbase.wal.RegionGroupingProvider;
import org.apache.hadoop.hbase.wal.WALFactory;
-import org.junit.ClassRule;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
-@Category({ ReplicationTests.class, LargeTests.class })
+@Tag(ReplicationTests.TAG)
+@Tag(LargeTests.TAG)
public class TestReplicationSyncUpToolWithMultipleWAL extends
TestReplicationSyncUpTool {
- @ClassRule
- public static final HBaseClassTestRule CLASS_RULE =
-
HBaseClassTestRule.forClass(TestReplicationSyncUpToolWithMultipleWAL.class);
-
@Override
protected void customizeClusterConf(Configuration conf) {
conf.set(WALFactory.WAL_PROVIDER, "multiwal");