Skip to content

Commit eee6494

Browse files
authored
HBASE-30098 Rewrite RestoreSnapshotFromClientTestBase and its sub classes (#8107) (#8127) (#8141)
(cherry picked from commit 60e22ab) Signed-off-by: Xiao Liu <liuxiaocs@apache.org>
1 parent bd69892 commit eee6494

19 files changed

Lines changed: 237 additions & 274 deletions

hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientAfterSplittingRegionsTestBase.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,16 @@
2020
import java.io.IOException;
2121
import java.util.List;
2222
import org.apache.hadoop.hbase.snapshot.SnapshotTestingUtils;
23-
import org.junit.Test;
23+
import org.junit.jupiter.api.TestTemplate;
2424

2525
public class RestoreSnapshotFromClientAfterSplittingRegionsTestBase
2626
extends RestoreSnapshotFromClientTestBase {
2727

28-
@Test
28+
protected RestoreSnapshotFromClientAfterSplittingRegionsTestBase(int numReplicas) {
29+
super(numReplicas);
30+
}
31+
32+
@TestTemplate
2933
public void testRestoreSnapshotAfterSplittingRegions() throws IOException, InterruptedException {
3034
List<RegionInfo> regionInfos = admin.getRegions(tableName);
3135
RegionReplicaUtil.removeNonDefaultRegions(regionInfos);

hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientAfterTruncateTestBase.java

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -19,30 +19,38 @@
1919

2020
import org.apache.hadoop.hbase.TableName;
2121
import org.apache.hadoop.hbase.snapshot.SnapshotTestingUtils;
22-
import org.junit.Test;
22+
import org.junit.jupiter.api.TestTemplate;
2323

2424
public class RestoreSnapshotFromClientAfterTruncateTestBase
2525
extends RestoreSnapshotFromClientTestBase {
2626

27-
@Test
27+
protected RestoreSnapshotFromClientAfterTruncateTestBase(int numReplicas) {
28+
super(numReplicas);
29+
}
30+
31+
@TestTemplate
2832
public void testRestoreSnapshotAfterTruncate() throws Exception {
2933
TableName tableName = TableName.valueOf(getValidMethodName());
30-
SnapshotTestingUtils.createTable(TEST_UTIL, tableName, getNumReplicas(), FAMILY);
31-
SnapshotTestingUtils.loadData(TEST_UTIL, tableName, 500, FAMILY);
32-
int numOfRows = 0;
34+
SnapshotTestingUtils.createTable(TEST_UTIL, tableName, numReplicas, FAMILY);
35+
try {
36+
SnapshotTestingUtils.loadData(TEST_UTIL, tableName, 500, FAMILY);
37+
int numOfRows = 0;
3338

34-
try (Table table = TEST_UTIL.getConnection().getTable(tableName)) {
35-
numOfRows = countRows(table);
36-
}
37-
// take snapshot
38-
admin.snapshot("snap", tableName);
39-
admin.disableTable(tableName);
40-
admin.truncateTable(tableName, false);
41-
admin.disableTable(tableName);
42-
admin.restoreSnapshot("snap");
39+
try (Table table = TEST_UTIL.getConnection().getTable(tableName)) {
40+
numOfRows = countRows(table);
41+
}
42+
// take snapshot
43+
admin.snapshot("snap", tableName);
44+
admin.disableTable(tableName);
45+
admin.truncateTable(tableName, false);
46+
admin.disableTable(tableName);
47+
admin.restoreSnapshot("snap");
4348

44-
admin.enableTable(tableName);
45-
verifyRowCount(TEST_UTIL, tableName, numOfRows);
46-
SnapshotTestingUtils.verifyReplicasCameOnline(tableName, admin, getNumReplicas());
49+
admin.enableTable(tableName);
50+
verifyRowCount(TEST_UTIL, tableName, numOfRows);
51+
SnapshotTestingUtils.verifyReplicasCameOnline(tableName, admin, numReplicas);
52+
} finally {
53+
TEST_UTIL.deleteTable(tableName);
54+
}
4755
}
4856
}

hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientCloneTestBase.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,43 +21,47 @@
2121
import org.apache.hadoop.hbase.TableName;
2222
import org.apache.hadoop.hbase.snapshot.SnapshotTestingUtils;
2323
import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
24-
import org.junit.Test;
24+
import org.junit.jupiter.api.TestTemplate;
2525

2626
public class RestoreSnapshotFromClientCloneTestBase extends RestoreSnapshotFromClientTestBase {
2727

28-
@Test
28+
protected RestoreSnapshotFromClientCloneTestBase(int numReplicas) {
29+
super(numReplicas);
30+
}
31+
32+
@TestTemplate
2933
public void testCloneSnapshotOfCloned() throws IOException, InterruptedException {
3034
TableName clonedTableName =
3135
TableName.valueOf(getValidMethodName() + "-" + EnvironmentEdgeManager.currentTime());
3236
admin.cloneSnapshot(snapshotName0, clonedTableName);
3337
verifyRowCount(TEST_UTIL, clonedTableName, snapshot0Rows);
34-
SnapshotTestingUtils.verifyReplicasCameOnline(clonedTableName, admin, getNumReplicas());
38+
SnapshotTestingUtils.verifyReplicasCameOnline(clonedTableName, admin, numReplicas);
3539
admin.disableTable(clonedTableName);
3640
admin.snapshot(snapshotName2, clonedTableName);
3741
TEST_UTIL.deleteTable(clonedTableName);
3842
waitCleanerRun();
3943

4044
admin.cloneSnapshot(snapshotName2, clonedTableName);
4145
verifyRowCount(TEST_UTIL, clonedTableName, snapshot0Rows);
42-
SnapshotTestingUtils.verifyReplicasCameOnline(clonedTableName, admin, getNumReplicas());
46+
SnapshotTestingUtils.verifyReplicasCameOnline(clonedTableName, admin, numReplicas);
4347
TEST_UTIL.deleteTable(clonedTableName);
4448
}
4549

46-
@Test
50+
@TestTemplate
4751
public void testCloneAndRestoreSnapshot() throws IOException, InterruptedException {
4852
TEST_UTIL.deleteTable(tableName);
4953
waitCleanerRun();
5054

5155
admin.cloneSnapshot(snapshotName0, tableName);
5256
verifyRowCount(TEST_UTIL, tableName, snapshot0Rows);
53-
SnapshotTestingUtils.verifyReplicasCameOnline(tableName, admin, getNumReplicas());
57+
SnapshotTestingUtils.verifyReplicasCameOnline(tableName, admin, numReplicas);
5458
waitCleanerRun();
5559

5660
admin.disableTable(tableName);
5761
admin.restoreSnapshot(snapshotName0);
5862
admin.enableTable(tableName);
5963
verifyRowCount(TEST_UTIL, tableName, snapshot0Rows);
60-
SnapshotTestingUtils.verifyReplicasCameOnline(tableName, admin, getNumReplicas());
64+
SnapshotTestingUtils.verifyReplicasCameOnline(tableName, admin, numReplicas);
6165
}
6266

6367
private void waitCleanerRun() throws InterruptedException {

hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientGetCompactionStateTestBase.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,19 @@
1717
*/
1818
package org.apache.hadoop.hbase.client;
1919

20-
import static org.junit.Assert.assertEquals;
20+
import static org.junit.jupiter.api.Assertions.assertEquals;
2121

2222
import java.io.IOException;
23-
import org.junit.Test;
23+
import org.junit.jupiter.api.TestTemplate;
2424

2525
public class RestoreSnapshotFromClientGetCompactionStateTestBase
2626
extends RestoreSnapshotFromClientTestBase {
2727

28-
@Test
28+
protected RestoreSnapshotFromClientGetCompactionStateTestBase(int numReplicas) {
29+
super(numReplicas);
30+
}
31+
32+
@TestTemplate
2933
public void testGetCompactionStateAfterRestoringSnapshot()
3034
throws IOException, InterruptedException {
3135
// Take a snapshot

hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientSchemaChangeTestBase.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
*/
1818
package org.apache.hadoop.hbase.client;
1919

20-
import static org.junit.Assert.assertEquals;
21-
import static org.junit.Assert.fail;
20+
import static org.junit.jupiter.api.Assertions.assertEquals;
21+
import static org.junit.jupiter.api.Assertions.fail;
2222

2323
import java.io.IOException;
2424
import java.util.HashSet;
@@ -31,11 +31,15 @@
3131
import org.apache.hadoop.hbase.util.Bytes;
3232
import org.apache.hadoop.hbase.util.CommonFSUtils;
3333
import org.apache.hadoop.hbase.util.FSUtils;
34-
import org.junit.Test;
34+
import org.junit.jupiter.api.TestTemplate;
3535

3636
public class RestoreSnapshotFromClientSchemaChangeTestBase
3737
extends RestoreSnapshotFromClientTestBase {
3838

39+
protected RestoreSnapshotFromClientSchemaChangeTestBase(int numReplicas) {
40+
super(numReplicas);
41+
}
42+
3943
private Set<String> getFamiliesFromFS(final TableName tableName) throws IOException {
4044
MasterFileSystem mfs = TEST_UTIL.getMiniHBaseCluster().getMaster().getMasterFileSystem();
4145
Set<String> families = new HashSet<>();
@@ -52,7 +56,7 @@ protected ColumnFamilyDescriptor getTestRestoreSchemaChangeHCD() {
5256
return ColumnFamilyDescriptorBuilder.of(TEST_FAMILY2);
5357
}
5458

55-
@Test
59+
@TestTemplate
5660
public void testRestoreSchemaChange() throws Exception {
5761
Table table = TEST_UTIL.getConnection().getTable(tableName);
5862

hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientSimpleTestBase.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,24 @@
1717
*/
1818
package org.apache.hadoop.hbase.client;
1919

20-
import static org.junit.Assert.assertFalse;
21-
import static org.junit.Assert.fail;
20+
import static org.junit.jupiter.api.Assertions.assertFalse;
21+
import static org.junit.jupiter.api.Assertions.fail;
2222

2323
import java.io.IOException;
2424
import org.apache.hadoop.hbase.TableName;
2525
import org.apache.hadoop.hbase.snapshot.CorruptedSnapshotException;
2626
import org.apache.hadoop.hbase.snapshot.SnapshotTestingUtils;
2727
import org.apache.hadoop.hbase.util.Bytes;
2828
import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
29-
import org.junit.Test;
29+
import org.junit.jupiter.api.TestTemplate;
3030

3131
public class RestoreSnapshotFromClientSimpleTestBase extends RestoreSnapshotFromClientTestBase {
3232

33-
@Test
33+
protected RestoreSnapshotFromClientSimpleTestBase(int numReplicas) {
34+
super(numReplicas);
35+
}
36+
37+
@TestTemplate
3438
public void testRestoreSnapshot() throws IOException {
3539
verifyRowCount(TEST_UTIL, tableName, snapshot1Rows);
3640
admin.disableTable(tableName);
@@ -39,30 +43,30 @@ public void testRestoreSnapshot() throws IOException {
3943
admin.restoreSnapshot(snapshotName0);
4044
admin.enableTable(tableName);
4145
verifyRowCount(TEST_UTIL, tableName, snapshot0Rows);
42-
SnapshotTestingUtils.verifyReplicasCameOnline(tableName, admin, getNumReplicas());
46+
SnapshotTestingUtils.verifyReplicasCameOnline(tableName, admin, numReplicas);
4347

4448
// Restore from emptySnapshot
4549
admin.disableTable(tableName);
4650
admin.restoreSnapshot(emptySnapshot);
4751
admin.enableTable(tableName);
4852
verifyRowCount(TEST_UTIL, tableName, 0);
49-
SnapshotTestingUtils.verifyReplicasCameOnline(tableName, admin, getNumReplicas());
53+
SnapshotTestingUtils.verifyReplicasCameOnline(tableName, admin, numReplicas);
5054

5155
// Restore from snapshot-1
5256
admin.disableTable(tableName);
5357
admin.restoreSnapshot(snapshotName1);
5458
admin.enableTable(tableName);
5559
verifyRowCount(TEST_UTIL, tableName, snapshot1Rows);
56-
SnapshotTestingUtils.verifyReplicasCameOnline(tableName, admin, getNumReplicas());
60+
SnapshotTestingUtils.verifyReplicasCameOnline(tableName, admin, numReplicas);
5761

5862
// Restore from snapshot-1
5963
TEST_UTIL.deleteTable(tableName);
6064
admin.restoreSnapshot(snapshotName1);
6165
verifyRowCount(TEST_UTIL, tableName, snapshot1Rows);
62-
SnapshotTestingUtils.verifyReplicasCameOnline(tableName, admin, getNumReplicas());
66+
SnapshotTestingUtils.verifyReplicasCameOnline(tableName, admin, numReplicas);
6367
}
6468

65-
@Test
69+
@TestTemplate
6670
public void testCorruptedSnapshot() throws IOException, InterruptedException {
6771
SnapshotTestingUtils.corruptSnapshot(TEST_UTIL, Bytes.toString(snapshotName0));
6872
TableName cloneName =

hbase-server/src/test/java/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientTestBase.java

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
package org.apache.hadoop.hbase.client;
1919

2020
import java.io.IOException;
21+
import java.util.stream.Stream;
2122
import org.apache.hadoop.conf.Configuration;
2223
import org.apache.hadoop.hbase.HBaseTestingUtility;
2324
import org.apache.hadoop.hbase.HConstants;
@@ -26,12 +27,11 @@
2627
import org.apache.hadoop.hbase.snapshot.SnapshotTestingUtils;
2728
import org.apache.hadoop.hbase.util.Bytes;
2829
import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
29-
import org.junit.After;
30-
import org.junit.AfterClass;
31-
import org.junit.Before;
32-
import org.junit.BeforeClass;
33-
import org.junit.Rule;
34-
import org.junit.rules.TestName;
30+
import org.junit.jupiter.api.AfterAll;
31+
import org.junit.jupiter.api.AfterEach;
32+
import org.junit.jupiter.api.BeforeEach;
33+
import org.junit.jupiter.api.TestInfo;
34+
import org.junit.jupiter.params.provider.Arguments;
3535

3636
/**
3737
* Base class for testing restore snapshot
@@ -51,13 +51,16 @@ public class RestoreSnapshotFromClientTestBase {
5151
protected int snapshot1Rows;
5252
protected Admin admin;
5353

54-
@Rule
55-
public TestName name = new TestName();
54+
protected int numReplicas;
5655

57-
@BeforeClass
58-
public static void setupCluster() throws Exception {
59-
setupConf(TEST_UTIL.getConfiguration());
60-
TEST_UTIL.startMiniCluster(3);
56+
private String testName;
57+
58+
protected RestoreSnapshotFromClientTestBase(int numReplicas) {
59+
this.numReplicas = numReplicas;
60+
}
61+
62+
public static Stream<Arguments> parameters() {
63+
return Stream.of(Arguments.of(1), Arguments.of(3));
6164
}
6265

6366
protected static void setupConf(Configuration conf) {
@@ -69,7 +72,7 @@ protected static void setupConf(Configuration conf) {
6972
TEST_UTIL.getConfiguration().setBoolean("hbase.master.enabletable.roundrobin", true);
7073
}
7174

72-
@AfterClass
75+
@AfterAll
7376
public static void tearDownAfterClass() throws Exception {
7477
TEST_UTIL.shutdownMiniCluster();
7578
}
@@ -79,10 +82,12 @@ public static void tearDownAfterClass() throws Exception {
7982
* snapshotName1) of different states. The tableName, snapshotNames and the number of rows in the
8083
* snapshot are initialized.
8184
*/
82-
@Before
83-
public void setup() throws Exception {
85+
@BeforeEach
86+
public void setUp(TestInfo testInfo) throws Exception {
8487
this.admin = TEST_UTIL.getAdmin();
8588
long tid = EnvironmentEdgeManager.currentTime();
89+
testName = testInfo.getTestMethod().get().getName()
90+
+ testInfo.getDisplayName().replaceAll("[^0-9A-Za-z_]", "_");
8691
tableName = TableName.valueOf(getValidMethodName() + "-" + tid);
8792
emptySnapshot = Bytes.toBytes("emptySnaptb-" + tid);
8893
snapshotName0 = Bytes.toBytes("snaptb0-" + tid);
@@ -116,20 +121,16 @@ public void setup() throws Exception {
116121
}
117122

118123
protected void createTable() throws Exception {
119-
SnapshotTestingUtils.createTable(TEST_UTIL, tableName, getNumReplicas(), FAMILY);
124+
SnapshotTestingUtils.createTable(TEST_UTIL, tableName, numReplicas, FAMILY);
120125
}
121126

122-
@After
127+
@AfterEach
123128
public void tearDown() throws Exception {
124129
TEST_UTIL.deleteTable(tableName);
125130
SnapshotTestingUtils.deleteAllSnapshots(TEST_UTIL.getAdmin());
126131
SnapshotTestingUtils.deleteArchiveDirectory(TEST_UTIL);
127132
}
128133

129-
protected int getNumReplicas() {
130-
return 1;
131-
}
132-
133134
protected int countRows(Table table, byte[]... families) throws IOException {
134135
return TEST_UTIL.countRows(table, families);
135136
}
@@ -145,6 +146,6 @@ protected final void splitRegion(RegionInfo regionInfo) throws IOException {
145146
}
146147

147148
protected final String getValidMethodName() {
148-
return name.getMethodName().replaceAll("[^0-9A-Za-z_]", "_");
149+
return testName;
149150
}
150151
}

0 commit comments

Comments
 (0)