use of com.google.cloud.spanner.Backup in project java-spanner by googleapis.
the class ITBackupTest method waitForDbOperations.
private static void waitForDbOperations(String backupId) throws InterruptedException {
try {
Backup backupMetadata = dbAdminClient.getBackup(testHelper.getInstanceId().getInstance(), backupId);
assertNotNull(backupMetadata.getProto());
boolean allDbOpsDone = false;
while (!allDbOpsDone) {
allDbOpsDone = true;
for (String referencingDb : backupMetadata.getProto().getReferencingDatabasesList()) {
String filter = String.format("name:%s/operations/ AND " + "(" + "(metadata.@type:type.googleapis.com/" + "google.spanner.admin.database.v1.OptimizeRestoredDatabaseMetadata) OR " + "(metadata.@type:type.googleapis.com/" + "google.spanner.admin.database.v1.RestoreDatabaseMetadata)" + ")", referencingDb);
for (Operation op : dbAdminClient.listDatabaseOperations(testHelper.getInstanceId().getInstance(), Options.filter(filter)).iterateAll()) {
if (!op.getDone()) {
Thread.sleep(5000L);
allDbOpsDone = false;
break;
}
}
}
}
} catch (SpannerException e) {
if (e.getErrorCode() == ErrorCode.NOT_FOUND) {
return;
}
throw e;
}
}
use of com.google.cloud.spanner.Backup in project java-spanner by googleapis.
the class ITBackupTest method testCreateInvalidExpirationDate.
private void testCreateInvalidExpirationDate(Database database) {
// This is not allowed, the expiration date must be at least 6 hours in the future.
Timestamp expireTime = daysAgo(1);
String backupId = testHelper.getUniqueBackupId();
logger.info(String.format("Creating backup %s with invalid expiration date", backupId));
OperationFuture<Backup, CreateBackupMetadata> op = dbAdminClient.createBackup(instanceId, backupId, database.getId().getDatabase(), expireTime);
backups.add(backupId);
ExecutionException executionException = assertThrows(ExecutionException.class, op::get);
Throwable cause = executionException.getCause();
assertEquals(SpannerException.class, cause.getClass());
SpannerException spannerException = (SpannerException) cause;
assertEquals(ErrorCode.INVALID_ARGUMENT, spannerException.getErrorCode());
}
use of com.google.cloud.spanner.Backup in project java-spanner by googleapis.
the class ITBackupTest method testGetBackup.
private void testGetBackup(Database database, String backupId, Timestamp expireTime) {
// Get the most recent version of the backup.
logger.info(String.format("Getting backup %s", backupId));
Backup backup = instance.getBackup(backupId);
assertEquals(State.READY, backup.getState());
assertTrue(backup.getSize() > 0L);
assertEquals(expireTime, backup.getExpireTime());
assertEquals(database.getId(), backup.getDatabase());
}
use of com.google.cloud.spanner.Backup in project java-spanner by googleapis.
the class ITBackupTest method testCancelBackupOperation.
private void testCancelBackupOperation(Database database) throws InterruptedException, ExecutionException {
Timestamp expireTime = afterDays(7);
String backupId = testHelper.getUniqueBackupId();
logger.info(String.format("Starting to create backup %s", backupId));
OperationFuture<Backup, CreateBackupMetadata> op = dbAdminClient.createBackup(instanceId, backupId, database.getId().getDatabase(), expireTime);
backups.add(backupId);
// Cancel the backup operation.
logger.info(String.format("Cancelling the creation of backup %s", backupId));
dbAdminClient.cancelOperation(op.getName());
logger.info("Fetching backup operations");
boolean operationFound = false;
for (Operation operation : dbAdminClient.listBackupOperations(instanceId, Options.filter(String.format("name:%s", op.getName()))).iterateAll()) {
assertEquals(Code.CANCELLED.value(), operation.getError().getCode());
operationFound = true;
}
assertTrue(operationFound);
logger.info("Finished cancel test");
}
use of com.google.cloud.spanner.Backup in project java-spanner by googleapis.
the class ITBackupTest method test04_backupCreationWithVersionTimeTooFarInThePastFails.
@Test(expected = SpannerException.class)
public void test04_backupCreationWithVersionTimeTooFarInThePastFails() throws Exception {
final Database testDatabase = testHelper.createTestDatabase();
final DatabaseId databaseId = testDatabase.getId();
final InstanceId instanceId = databaseId.getInstanceId();
final String backupId = testHelper.getUniqueBackupId();
final Timestamp expireTime = afterDays(7);
final Timestamp versionTime = daysAgo(30);
final Backup backupToCreate = dbAdminClient.newBackupBuilder(BackupId.of(instanceId, backupId)).setDatabase(databaseId).setExpireTime(expireTime).setVersionTime(versionTime).build();
getOrThrow(dbAdminClient.createBackup(backupToCreate));
}
Aggregations