23
23
import static org .junit .Assert .assertThrows ;
24
24
import static org .junit .Assert .assertTrue ;
25
25
26
+ import java .io .File ;
26
27
import java .io .IOException ;
27
28
import java .nio .ByteBuffer ;
28
29
import java .util .ArrayList ;
@@ -378,6 +379,51 @@ public void TestIncBackupRestoreWithOriginalSplits() throws Exception {
378
379
}
379
380
}
380
381
382
+ @ Test
383
+ public void TestIncBackupRestoreWithOriginalSplitsSeperateFs () throws Exception {
384
+ String originalBackupRoot = BACKUP_ROOT_DIR ;
385
+ // prepare BACKUP_ROOT_DIR on a different filesystem from HBase.
386
+ try (Connection conn = ConnectionFactory .createConnection (conf1 );
387
+ BackupAdminImpl admin = new BackupAdminImpl (conn )) {
388
+ String backupTargetDir = TEST_UTIL .getDataTestDir ("backupTarget" ).toString ();
389
+ BACKUP_ROOT_DIR = new File (backupTargetDir ).toURI ().toString ();
390
+
391
+ List <TableName > tables = Lists .newArrayList (table1 );
392
+
393
+ insertIntoTable (conn , table1 , famName , 3 , 100 );
394
+ String fullBackupId = takeFullBackup (tables , admin , true );
395
+ assertTrue (checkSucceeded (fullBackupId ));
396
+
397
+ insertIntoTable (conn , table1 , famName , 4 , 100 );
398
+ BackupRequest request =
399
+ createBackupRequest (BackupType .INCREMENTAL , tables , BACKUP_ROOT_DIR , true );
400
+ String incrementalBackupId = admin .backupTables (request );
401
+ assertTrue (checkSucceeded (incrementalBackupId ));
402
+
403
+ TableName [] fromTable = new TableName [] { table1 };
404
+ TableName [] toTable = new TableName [] { table1_restore };
405
+
406
+ // Using original splits
407
+ admin .restore (BackupUtils .createRestoreRequest (BACKUP_ROOT_DIR , incrementalBackupId , false ,
408
+ fromTable , toTable , true , true ));
409
+
410
+ int actualRowCount = TEST_UTIL .countRows (table1_restore );
411
+ int expectedRowCount = TEST_UTIL .countRows (table1 );
412
+ assertEquals (expectedRowCount , actualRowCount );
413
+
414
+ // Using new splits
415
+ admin .restore (BackupUtils .createRestoreRequest (BACKUP_ROOT_DIR , incrementalBackupId , false ,
416
+ fromTable , toTable , true , false ));
417
+
418
+ expectedRowCount = TEST_UTIL .countRows (table1 );
419
+ assertEquals (expectedRowCount , actualRowCount );
420
+
421
+ } finally {
422
+ BACKUP_ROOT_DIR = originalBackupRoot ;
423
+ }
424
+
425
+ }
426
+
381
427
private void checkThrowsCFMismatch (IOException ex , List <TableName > tables ) {
382
428
Throwable cause = Throwables .getRootCause (ex );
383
429
assertEquals (cause .getClass (), ColumnFamilyMismatchException .class );
@@ -387,7 +433,13 @@ private void checkThrowsCFMismatch(IOException ex, List<TableName> tables) {
387
433
388
434
private String takeFullBackup (List <TableName > tables , BackupAdminImpl backupAdmin )
389
435
throws IOException {
390
- BackupRequest req = createBackupRequest (BackupType .FULL , tables , BACKUP_ROOT_DIR );
436
+ return takeFullBackup (tables , backupAdmin , false );
437
+ }
438
+
439
+ private String takeFullBackup (List <TableName > tables , BackupAdminImpl backupAdmin ,
440
+ boolean noChecksumVerify ) throws IOException {
441
+ BackupRequest req =
442
+ createBackupRequest (BackupType .FULL , tables , BACKUP_ROOT_DIR , noChecksumVerify );
391
443
String backupId = backupAdmin .backupTables (req );
392
444
checkSucceeded (backupId );
393
445
return backupId ;
0 commit comments