Skip to content

Commit a962599

Browse files
HBASE-29375 Add Unit Tests for BackupAdminImpl and Improve Test Granularity (#7171)
Signed-off-by: Tak Lon (Stephen) Wu <[email protected]> Reviewed by: Kevin Geiszler <[email protected]>
1 parent b2f2c2f commit a962599

File tree

2 files changed

+795
-10
lines changed

2 files changed

+795
-10
lines changed

hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupAdminImpl.java

Lines changed: 45 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
*/
1818
package org.apache.hadoop.hbase.backup.impl;
1919

20+
import com.google.errorprone.annotations.RestrictedApi;
2021
import java.io.IOException;
2122
import java.util.ArrayList;
2223
import java.util.Arrays;
@@ -175,8 +176,11 @@ public int deleteBackups(String[] backupIds) throws IOException {
175176
* @param table backup system table
176177
* @throws IOException if a table operation fails
177178
*/
178-
private void finalizeDelete(List<String> backupRoots, BackupSystemTable table)
179-
throws IOException {
179+
@RestrictedApi(
180+
explanation = "Package-private for test visibility only. Do not use outside tests.",
181+
link = "",
182+
allowedOnPath = "(.*/src/test/.*|.*/org/apache/hadoop/hbase/backup/impl/BackupAdminImpl.java)")
183+
void finalizeDelete(List<String> backupRoots, BackupSystemTable table) throws IOException {
180184
for (String backupRoot : backupRoots) {
181185
Set<TableName> incrTableSet = table.getIncrementalBackupTableSet(backupRoot);
182186
Map<TableName, List<BackupInfo>> tableMap =
@@ -212,7 +216,11 @@ private void finalizeDelete(List<String> backupRoots, BackupSystemTable table)
212216
* @return total number of deleted backup images
213217
* @throws IOException if deleting the backup fails
214218
*/
215-
private int deleteBackup(String backupId, BackupSystemTable sysTable) throws IOException {
219+
@RestrictedApi(
220+
explanation = "Package-private for test visibility only. Do not use outside tests.",
221+
link = "",
222+
allowedOnPath = "(.*/src/test/.*|.*/org/apache/hadoop/hbase/backup/impl/BackupAdminImpl.java)")
223+
int deleteBackup(String backupId, BackupSystemTable sysTable) throws IOException {
216224
BackupInfo backupInfo = sysTable.readBackupInfo(backupId);
217225

218226
int totalDeleted = 0;
@@ -274,7 +282,11 @@ private int deleteBackup(String backupId, BackupSystemTable sysTable) throws IOE
274282
return totalDeleted;
275283
}
276284

277-
private void removeTableFromBackupImage(BackupInfo info, TableName tn, BackupSystemTable sysTable)
285+
@RestrictedApi(
286+
explanation = "Package-private for test visibility only. Do not use outside tests.",
287+
link = "",
288+
allowedOnPath = "(.*/src/test/.*|.*/org/apache/hadoop/hbase/backup/impl/BackupAdminImpl.java)")
289+
void removeTableFromBackupImage(BackupInfo info, TableName tn, BackupSystemTable sysTable)
278290
throws IOException {
279291
List<TableName> tables = info.getTableNames();
280292
LOG.debug(
@@ -297,7 +309,11 @@ private void removeTableFromBackupImage(BackupInfo info, TableName tn, BackupSys
297309
}
298310
}
299311

300-
private List<BackupInfo> getAffectedBackupSessions(BackupInfo backupInfo, TableName tn,
312+
@RestrictedApi(
313+
explanation = "Package-private for test visibility only. Do not use outside tests.",
314+
link = "",
315+
allowedOnPath = "(.*/src/test/.*|.*/org/apache/hadoop/hbase/backup/impl/BackupAdminImpl.java)")
316+
List<BackupInfo> getAffectedBackupSessions(BackupInfo backupInfo, TableName tn,
301317
BackupSystemTable table) throws IOException {
302318
LOG.debug("GetAffectedBackupInfos for: " + backupInfo.getBackupId() + " table=" + tn);
303319
long ts = backupInfo.getStartTs();
@@ -329,7 +345,11 @@ private List<BackupInfo> getAffectedBackupSessions(BackupInfo backupInfo, TableN
329345
* Clean up the data at target directory
330346
* @throws IOException if cleaning up the backup directory fails
331347
*/
332-
private void cleanupBackupDir(BackupInfo backupInfo, TableName table, Configuration conf)
348+
@RestrictedApi(
349+
explanation = "Package-private for test visibility only. Do not use outside tests.",
350+
link = "",
351+
allowedOnPath = "(.*/src/test/.*|.*/org/apache/hadoop/hbase/backup/impl/BackupAdminImpl.java)")
352+
void cleanupBackupDir(BackupInfo backupInfo, TableName table, Configuration conf)
333353
throws IOException {
334354
try {
335355
// clean up the data at target directory
@@ -339,7 +359,7 @@ private void cleanupBackupDir(BackupInfo backupInfo, TableName table, Configurat
339359
return;
340360
}
341361

342-
FileSystem outputFs = FileSystem.get(new Path(backupInfo.getBackupRootDir()).toUri(), conf);
362+
FileSystem outputFs = getFileSystem(new Path(backupInfo.getBackupRootDir()), conf);
343363

344364
Path targetDirPath = new Path(BackupUtils.getTableBackupDir(backupInfo.getBackupRootDir(),
345365
backupInfo.getBackupId(), table));
@@ -355,7 +375,19 @@ private void cleanupBackupDir(BackupInfo backupInfo, TableName table, Configurat
355375
}
356376
}
357377

358-
private boolean isLastBackupSession(BackupSystemTable table, TableName tn, long startTime)
378+
@RestrictedApi(
379+
explanation = "Package-private for test visibility only. Do not use outside tests.",
380+
link = "",
381+
allowedOnPath = "(.*/src/test/.*|.*/org/apache/hadoop/hbase/backup/impl/BackupAdminImpl.java)")
382+
FileSystem getFileSystem(Path path, Configuration conf) throws IOException {
383+
return FileSystem.get(path.toUri(), conf);
384+
}
385+
386+
@RestrictedApi(
387+
explanation = "Package-private for test visibility only. Do not use outside tests.",
388+
link = "",
389+
allowedOnPath = "(.*/src/test/.*|.*/org/apache/hadoop/hbase/backup/impl/BackupAdminImpl.java)")
390+
boolean isLastBackupSession(BackupSystemTable table, TableName tn, long startTime)
359391
throws IOException {
360392
List<BackupInfo> history = table.getBackupHistory();
361393
for (BackupInfo info : history) {
@@ -682,8 +714,11 @@ public void mergeBackups(String[] backupIds) throws IOException {
682714
* @param table backup system table
683715
* @throws IOException if the backup image is not valid for merge
684716
*/
685-
private void checkIfValidForMerge(String[] backupIds, BackupSystemTable table)
686-
throws IOException {
717+
@RestrictedApi(
718+
explanation = "Package-private for test visibility only. Do not use outside tests.",
719+
link = "",
720+
allowedOnPath = "(.*/src/test/.*|.*/org/apache/hadoop/hbase/backup/impl/BackupAdminImpl.java)")
721+
void checkIfValidForMerge(String[] backupIds, BackupSystemTable table) throws IOException {
687722
String backupRoot = null;
688723

689724
final Set<TableName> allTables = new HashSet<>();

0 commit comments

Comments
 (0)