Search in sources :

Example 11 with Backup

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;
    }
}
Also used : Backup(com.google.cloud.spanner.Backup) Operation(com.google.longrunning.Operation) SpannerException(com.google.cloud.spanner.SpannerException)

Example 12 with Backup

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());
}
Also used : Backup(com.google.cloud.spanner.Backup) CreateBackupMetadata(com.google.spanner.admin.database.v1.CreateBackupMetadata) SpannerException(com.google.cloud.spanner.SpannerException) ExecutionException(java.util.concurrent.ExecutionException) Timestamp(com.google.cloud.Timestamp)

Example 13 with Backup

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());
}
Also used : Backup(com.google.cloud.spanner.Backup)

Example 14 with Backup

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");
}
Also used : Backup(com.google.cloud.spanner.Backup) CreateBackupMetadata(com.google.spanner.admin.database.v1.CreateBackupMetadata) Operation(com.google.longrunning.Operation) Timestamp(com.google.cloud.Timestamp)

Example 15 with Backup

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));
}
Also used : InstanceId(com.google.cloud.spanner.InstanceId) Backup(com.google.cloud.spanner.Backup) Database(com.google.cloud.spanner.Database) DatabaseId(com.google.cloud.spanner.DatabaseId) Timestamp(com.google.cloud.Timestamp) Test(org.junit.Test) SlowTest(com.google.cloud.spanner.SlowTest)

Aggregations

Backup (com.google.cloud.spanner.Backup)19 Timestamp (com.google.cloud.Timestamp)13 CreateBackupMetadata (com.google.spanner.admin.database.v1.CreateBackupMetadata)7 SpannerException (com.google.cloud.spanner.SpannerException)6 ExecutionException (java.util.concurrent.ExecutionException)6 Database (com.google.cloud.spanner.Database)5 SlowTest (com.google.cloud.spanner.SlowTest)5 Test (org.junit.Test)5 DatabaseId (com.google.cloud.spanner.DatabaseId)2 InstanceId (com.google.cloud.spanner.InstanceId)2 Operation (com.google.longrunning.Operation)2 CreateDatabaseMetadata (com.google.spanner.admin.database.v1.CreateDatabaseMetadata)2 RestoreDatabaseMetadata (com.google.spanner.admin.database.v1.RestoreDatabaseMetadata)2 OperationSnapshot (com.google.api.gax.longrunning.OperationSnapshot)1 DatabaseAdminClient (com.google.cloud.spanner.DatabaseAdminClient)1 DatabaseClient (com.google.cloud.spanner.DatabaseClient)1 Instance (com.google.cloud.spanner.Instance)1 RestoreInfo (com.google.cloud.spanner.RestoreInfo)1 Spanner (com.google.cloud.spanner.Spanner)1 SpannerOptions (com.google.cloud.spanner.SpannerOptions)1