/*
* Copyright (c) 2014 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.management.backup;
import org.apache.commons.io.FileUtils;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.Assert;
import java.io.File;
import java.io.FilenameFilter;
import java.util.UUID;
public class DbBackupHandlerTest extends BackupTestBase {
private static DbBackupHandler dbBackupHandler;
@BeforeClass
public static void setUp() {
// Suppress Sonar violation of Lazy initialization of static fields should be synchronized
// Junit test will be called in single thread by default, it's safe to ignore this violation
dbBackupHandler = (DbBackupHandler) backupManager.getBackupHandler(); // NOSONAR ("squid:S2444")
}
@Test
public void testCreateBackup() {
final String snapshotTag = UUID.randomUUID().toString();
dbBackupHandler.createBackup(snapshotTag);
for (String keyspace : dbBackupHandler.getKeyspaceList()) {
File[] cfFolders = dbBackupHandler.getValidKeyspace(keyspace).listFiles();
for (File cfFolder : FileUtil.toSafeArray(cfFolders)) {
File[] snapshots = cfFolder.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.equals(DbBackupHandler.DB_SNAPSHOT_SUBDIR);
}
});
if (snapshots == null || snapshots.length == 0) {
continue;
}
for (File snapshot : snapshots) {
File[] subSnapshots = snapshot.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.startsWith(snapshotTag + BackupConstants.BACKUP_NAME_DELIMITER);
}
});
Assert.assertNotNull(subSnapshots);
Assert.assertEquals(1, subSnapshots.length);
}
}
}
}
@Test
public void testDumpBackup() {
final String snapshotTag = UUID.randomUUID().toString();
String fullBackupTag = dbBackupHandler.createBackup(snapshotTag);
File dbBackup = null;
try {
dbBackup = dbBackupHandler.dumpBackup(snapshotTag, fullBackupTag);
File[] backupDir = backupManager.getBackupContext().getBackupDir().listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return dir.isDirectory() && name.equals(snapshotTag);
}
});
Assert.assertNotNull(backupDir);
Assert.assertEquals(1, backupDir.length);
Assert.assertTrue(backupDir[0].isDirectory());
File[] backupFolder = backupDir[0].listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.startsWith(snapshotTag + BackupConstants.BACKUP_NAME_DELIMITER);
}
});
Assert.assertNotNull(backupFolder);
Assert.assertEquals(1, backupFolder.length);
Assert.assertTrue(backupFolder[0].isDirectory());
String[] subBackups = backupManager.getBackupContext().getBackupDir().list();
Assert.assertNotNull(subBackups);
Assert.assertTrue(subBackups.length > 0);
} finally {
if (dbBackup != null) {
FileUtils.deleteQuietly(dbBackup);
}
}
}
}