Skip to content

Commit deb5746

Browse files
authored
chore: test backups systes tests (#2366)
1 parent 42c0b83 commit deb5746

File tree

1 file changed

+54
-106
lines changed

1 file changed

+54
-106
lines changed

system-test/spanner.ts

Lines changed: 54 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -3339,24 +3339,13 @@ describe('Spanner', () => {
33393339
const SKIP_POSTGRESQL_BACKUP_TESTS = true;
33403340

33413341
let googleSqlDatabase1: Database;
3342-
let googleSqlDatabase2: Database;
3343-
let restoreDatabase: Database;
3344-
3342+
let googleSqlRestoreDatabase: Database;
3343+
let postgreSqlRestoreDatabase: Database;
33453344
let postgreSqlDatabase1: Database;
3346-
let postgreSqlDatabase2: Database;
3347-
33483345
let googleSqlBackup1: Backup;
3349-
let googleSqlBackup2: Backup;
3350-
33513346
let postgreSqlBackup1: Backup;
3352-
let postgreSqlBackup2: Backup;
3353-
33543347
const googleSqlBackup1Name = generateName('backup');
3355-
const googleSqlBackup2Name = generateName('backup');
3356-
33573348
const postgreSqlBackup1Name = generateName('pg-backup');
3358-
const postgreSqlBackup2Name = generateName('pg-backup');
3359-
33603349
const backupExpiryDate = futureDateByHours(12);
33613350
const backupExpiryPreciseDate = Spanner.timestamp(backupExpiryDate);
33623351

@@ -3375,58 +3364,14 @@ describe('Spanner', () => {
33753364
Name: generateName('name'),
33763365
});
33773366

3378-
await postgreSqlDatabase1.table(TABLE_NAME).insert({
3379-
SingerId: generateName('id'),
3380-
Name: generateName('name'),
3381-
});
3382-
3383-
// Create a second database since only one pending backup can be created
3384-
// per database.
3385-
const googleSqlDatabase2Id = generateName('database');
3386-
await creategSQLDatabase(googleSqlDatabase2Id, null);
3387-
googleSqlDatabase2 = instance.database(googleSqlDatabase2Id);
3388-
RESOURCES_TO_CLEAN.push(googleSqlDatabase2);
3389-
3390-
if (!SKIP_POSTGRESQL_BACKUP_TESTS) {
3391-
const postgreSqlDatabase2Id = generateName('pg-db');
3392-
await createPostgresDatabase(postgreSqlDatabase2Id);
3393-
postgreSqlDatabase2 = instance.database(postgreSqlDatabase2Id);
3394-
RESOURCES_TO_CLEAN.push(postgreSqlDatabase2);
3395-
}
3396-
3397-
// Create backups.
3398-
await createBackup(
3399-
googleSqlDatabase1,
3400-
googleSqlBackup1Name,
3401-
backupExpiryDate,
3402-
);
3403-
await createBackup(
3404-
googleSqlDatabase2,
3405-
googleSqlBackup2Name,
3406-
backupExpiryDate,
3407-
);
3408-
34093367
googleSqlBackup1 = instance.backup(googleSqlBackup1Name);
3410-
googleSqlBackup2 = instance.backup(googleSqlBackup2Name);
3411-
3412-
RESOURCES_TO_CLEAN.push(...[googleSqlBackup1, googleSqlBackup2]);
34133368

34143369
if (!SKIP_POSTGRESQL_BACKUP_TESTS) {
3415-
await createBackup(
3416-
postgreSqlDatabase1,
3417-
postgreSqlBackup1Name,
3418-
backupExpiryDate,
3419-
);
3420-
await createBackup(
3421-
postgreSqlDatabase2,
3422-
postgreSqlBackup2Name,
3423-
backupExpiryDate,
3424-
);
3425-
3370+
await postgreSqlDatabase1.table(TABLE_NAME).insert({
3371+
SingerId: generateName('id'),
3372+
Name: generateName('name'),
3373+
});
34263374
postgreSqlBackup1 = instance.backup(postgreSqlBackup1Name);
3427-
postgreSqlBackup2 = instance.backup(postgreSqlBackup2Name);
3428-
3429-
RESOURCES_TO_CLEAN.push(...[postgreSqlBackup1, postgreSqlBackup2]);
34303375
}
34313376
});
34323377

@@ -3463,6 +3408,12 @@ describe('Spanner', () => {
34633408
};
34643409

34653410
it('GOOGLE_STANDARD_SQL should have completed a backup', async () => {
3411+
// Create backups.
3412+
await createBackup(
3413+
googleSqlDatabase1,
3414+
googleSqlBackup1Name,
3415+
backupExpiryDate,
3416+
);
34663417
await completedBackup(
34673418
googleSqlBackup1,
34683419
googleSqlBackup1Name,
@@ -3471,6 +3422,11 @@ describe('Spanner', () => {
34713422
});
34723423

34733424
it.skip('POSTGRESQL should have completed a backup', async () => {
3425+
await createBackup(
3426+
postgreSqlDatabase1,
3427+
postgreSqlBackup1Name,
3428+
backupExpiryDate,
3429+
);
34743430
await completedBackup(
34753431
postgreSqlBackup1,
34763432
postgreSqlBackup1Name,
@@ -3525,7 +3481,7 @@ describe('Spanner', () => {
35253481
backup => backup.formattedName_ === googleSqlBackup1.formattedName_,
35263482
),
35273483
);
3528-
if (!IS_EMULATOR_ENABLED && !SKIP_POSTGRESQL_BACKUP_TESTS) {
3484+
if (!SKIP_POSTGRESQL_BACKUP_TESTS) {
35293485
assert.ok(
35303486
backups.find(
35313487
backup =>
@@ -3540,47 +3496,29 @@ describe('Spanner', () => {
35403496
pageSize: 1,
35413497
gaxOptions: {autoPaginate: false},
35423498
});
3543-
const [page2] = await instance.getBackups({
3544-
pageSize: 1,
3545-
pageToken: resp1!.nextPageToken!,
3546-
gaxOptions: {autoPaginate: false},
3547-
});
35483499

3549-
let page3size = 2;
3550-
if (!IS_EMULATOR_ENABLED && !SKIP_POSTGRESQL_BACKUP_TESTS) {
3551-
page3size = 4;
3500+
let totalPageSize = 1;
3501+
if (!SKIP_POSTGRESQL_BACKUP_TESTS) {
3502+
totalPageSize = 2;
35523503
}
3553-
const [page3] = await instance.getBackups({
3554-
pageSize: page3size,
3504+
const [totalPages] = await instance.getBackups({
3505+
pageSize: totalPageSize,
35553506
gaxOptions: {autoPaginate: false},
35563507
});
35573508
assert.strictEqual(page1.length, 1);
3558-
assert.strictEqual(page2.length, 1);
3559-
assert.strictEqual(page3.length, page3size);
3560-
assert.notStrictEqual(page2[0].formattedName_, page1[0].formattedName_);
3509+
assert.strictEqual(totalPages.length, totalPageSize);
35613510
assert.ok(
3562-
page3.find(
3511+
totalPages.find(
35633512
backup => backup.formattedName_ === googleSqlBackup1.formattedName_,
35643513
),
35653514
);
3566-
assert.ok(
3567-
page3.find(
3568-
backup => backup.formattedName_ === googleSqlBackup2.formattedName_,
3569-
),
3570-
);
3571-
if (!IS_EMULATOR_ENABLED && !SKIP_POSTGRESQL_BACKUP_TESTS) {
3515+
if (!SKIP_POSTGRESQL_BACKUP_TESTS) {
35723516
assert.ok(
3573-
page3.find(
3517+
totalPages.find(
35743518
backup =>
35753519
backup.formattedName_ === postgreSqlBackup1.formattedName_,
35763520
),
35773521
);
3578-
assert.ok(
3579-
page3.find(
3580-
backup =>
3581-
backup.formattedName_ === postgreSqlBackup2.formattedName_,
3582-
),
3583-
);
35843522
}
35853523
});
35863524

@@ -3596,9 +3534,7 @@ describe('Spanner', () => {
35963534
// Wait for restore to complete.
35973535
await restoreOperation.promise();
35983536

3599-
restoreDatabase = instance.database(restoreDatabaseId);
3600-
3601-
RESOURCES_TO_CLEAN.push(restoreDatabase);
3537+
const restoreDatabase = instance.database(restoreDatabaseId);
36023538

36033539
const [databaseMetadata] = await restoreDatabase.getMetadata();
36043540
assert.ok(
@@ -3637,11 +3573,13 @@ describe('Spanner', () => {
36373573
filter: 'metadata.@type:RestoreDatabaseMetadata',
36383574
});
36393575
assert.strictEqual(restoreOperations.length, 1);
3576+
3577+
return restoreDatabase;
36403578
};
36413579

36423580
it('GOOGLE_STANDARD_SQL should restore a backup', async () => {
36433581
const googleSqlRestoreDatabaseId = generateName('database');
3644-
await restoreBackup(
3582+
googleSqlRestoreDatabase = await restoreBackup(
36453583
googleSqlRestoreDatabaseId,
36463584
googleSqlBackup1,
36473585
googleSqlDatabase1,
@@ -3650,7 +3588,7 @@ describe('Spanner', () => {
36503588

36513589
it.skip('POSTGRESQL should restore a backup', async () => {
36523590
const postgreSqlRestoreDatabaseId = generateName('pg-db');
3653-
await restoreBackup(
3591+
postgreSqlRestoreDatabase = await restoreBackup(
36543592
postgreSqlRestoreDatabaseId,
36553593
postgreSqlBackup1,
36563594
postgreSqlDatabase1,
@@ -3672,11 +3610,17 @@ describe('Spanner', () => {
36723610
};
36733611

36743612
it('GOOGLE_STANDARD_SQL should not be able to restore to an existing database', async () => {
3675-
await restoreExistingDatabaseFail(restoreDatabase, googleSqlBackup1);
3613+
await restoreExistingDatabaseFail(
3614+
googleSqlRestoreDatabase,
3615+
googleSqlBackup1,
3616+
);
36763617
});
36773618

36783619
it.skip('POSTGRESQL should not be able to restore to an existing database', async () => {
3679-
await restoreExistingDatabaseFail(restoreDatabase, postgreSqlBackup1);
3620+
await restoreExistingDatabaseFail(
3621+
postgreSqlRestoreDatabase,
3622+
postgreSqlBackup1,
3623+
);
36803624
});
36813625

36823626
const updateBackupExpiry = async backup1 => {
@@ -3746,14 +3690,6 @@ describe('Spanner', () => {
37463690
}
37473691
};
37483692

3749-
it('GOOGLE_STANDARD_SQL should delete backup', async () => {
3750-
await deleteBackup(googleSqlBackup2);
3751-
});
3752-
3753-
it.skip('POSTGRESQL should delete backup', async () => {
3754-
await deleteBackup(postgreSqlBackup2);
3755-
});
3756-
37573693
const listBackupOperations = async (backup1, database1) => {
37583694
// List operations and ensure operation for current backup exists.
37593695
// Without a filter.
@@ -3789,13 +3725,25 @@ describe('Spanner', () => {
37893725
);
37903726
};
37913727

3792-
it('GOOGLE_STANDARD_SQL should delete backup', async () => {
3728+
it('GOOGLE_STANDARD_SQL should list backup operations', async () => {
37933729
await listBackupOperations(googleSqlBackup1, googleSqlDatabase1);
37943730
});
37953731

3796-
it.skip('POSTGRESQL should delete backup', async () => {
3732+
it.skip('POSTGRESQL should list backup operations', async () => {
37973733
await listBackupOperations(postgreSqlBackup1, postgreSqlDatabase1);
37983734
});
3735+
3736+
it('GOOGLE_STANDARD_SQL should delete backups', async () => {
3737+
// Delete the restored database before deleting the backup, as backup deletion can fail if the restored database remains in the READY_OPTIMIZING state.
3738+
await googleSqlRestoreDatabase.delete();
3739+
await deleteBackup(googleSqlBackup1);
3740+
});
3741+
3742+
it.skip('POSTGRESQL should delete backups', async () => {
3743+
// Delete the restored database before deleting the backup, as backup deletion can fail if the restored database remains in the READY_OPTIMIZING state.
3744+
await postgreSqlRestoreDatabase.delete();
3745+
await deleteBackup(postgreSqlBackup1);
3746+
});
37993747
});
38003748

38013749
describe('Sessions', () => {

0 commit comments

Comments
 (0)