Skip to content

Commit f79ec42

Browse files
committed
refactor
1 parent 14ff41c commit f79ec42

File tree

1 file changed

+77
-118
lines changed

1 file changed

+77
-118
lines changed

system-test/spanner.ts

Lines changed: 77 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,32 @@ describe('Spanner', () => {
195195
await postgreSqlOperationUpdateDDL.promise();
196196
}
197197

198+
async function createBackup(database, backupId, expireTime) {
199+
const databaseAdminClient = spanner.getDatabaseAdminClient();
200+
const [operation] = await databaseAdminClient.createBackup({
201+
parent: databaseAdminClient.instancePath(projectId!, instanceId),
202+
backupId: backupId,
203+
backup: {
204+
database: database.formattedName_,
205+
expireTime: Spanner.timestamp(expireTime).toStruct(),
206+
name: databaseAdminClient.backupPath(projectId!, instanceId, backupId),
207+
},
208+
});
209+
210+
if ('database' in operation.metadata!) {
211+
assert.strictEqual(
212+
operation.metadata!.name,
213+
`${instance.formattedName_}/backups/${backupId}`
214+
);
215+
}
216+
217+
if ('database' in operation.metadata!) {
218+
assert.strictEqual(operation.metadata!.database, database.formattedName_);
219+
}
220+
221+
await operation.promise();
222+
}
223+
198224
before(async () => {
199225
await deleteOldTestInstances();
200226
if (generateInstanceForTest) {
@@ -3240,11 +3266,10 @@ describe('Spanner', () => {
32403266

32413267
let googleSqlDatabase1: Database;
32423268
let googleSqlDatabase2: Database;
3243-
let googleSqlRestoreDatabase: Database;
3269+
let restoreDatabase: Database;
32443270

32453271
let postgreSqlDatabase1: Database;
32463272
let postgreSqlDatabase2: Database;
3247-
let postgreSqlRestoreDatabase: Database;
32483273

32493274
let googleSqlBackup1: Backup;
32503275
let googleSqlBackup2: Backup;
@@ -3283,131 +3308,57 @@ describe('Spanner', () => {
32833308

32843309
// Create a second database since only one pending backup can be created
32853310
// per database.
3286-
googleSqlDatabase2 = instance.database(generateName('database'));
3287-
const [, googleSqlDatabase2CreateOperation] =
3288-
await googleSqlDatabase2.create({
3289-
schema: `
3290-
CREATE TABLE Albums (
3291-
AlbumId STRING(1024) NOT NULL,
3292-
AlbumTitle STRING(1024) NOT NULL,
3293-
) PRIMARY KEY(AlbumId)`,
3294-
gaxOptions: GAX_OPTIONS,
3295-
});
3296-
await googleSqlDatabase2CreateOperation.promise();
3311+
const googleSqlDatabase2Id = generateName('database');
3312+
await creategSQLDatabase(googleSqlDatabase2Id, null);
3313+
googleSqlDatabase2 = instance.database(googleSqlDatabase2Id);
32973314
RESOURCES_TO_CLEAN.push(googleSqlDatabase2);
32983315

32993316
if (!SKIP_POSTGRESQL_BACKUP_TESTS) {
3300-
postgreSqlDatabase2 = instance.database(generateName('pg-db'));
3301-
const [, postgreSqlDatabase2CreateOperation] =
3302-
await postgreSqlDatabase2.create({
3303-
databaseDialect: Spanner.POSTGRESQL,
3304-
gaxOptions: GAX_OPTIONS,
3305-
});
3306-
await postgreSqlDatabase2CreateOperation.promise();
3307-
3308-
const schema = [
3309-
`CREATE TABLE Albums (
3310-
AlbumId VARCHAR NOT NULL PRIMARY KEY,
3311-
AlbumTitle VARCHAR NOT NULL
3312-
);`,
3313-
];
3314-
const [postgreSqlDatabase2UpdateOperation] =
3315-
await postgreSqlDatabase2.updateSchema(schema);
3316-
await postgreSqlDatabase2UpdateOperation.promise();
3317+
const postgreSqlDatabase2Id = generateName('pg-db');
3318+
await createPostgresDatabase(postgreSqlDatabase2Id);
3319+
postgreSqlDatabase2 = instance.database(postgreSqlDatabase2Id);
33173320
RESOURCES_TO_CLEAN.push(postgreSqlDatabase2);
33183321
}
33193322
// Initialize a database instance to restore to.
3320-
googleSqlRestoreDatabase = instance.database(generateName('database'));
3321-
postgreSqlRestoreDatabase = instance.database(generateName('pg-db'));
3323+
// const googleSqlRestoreDatabaseId = generateName('database');
3324+
// await creategSQLDatabase(googleSqlRestoreDatabaseId, null);
3325+
// googleSqlRestoreDatabase = instance.database(googleSqlRestoreDatabaseId);
3326+
3327+
// const postgreSqlRestoreDatabaseId = generateName('pg-db');
3328+
// await createPostgresDatabase(postgreSqlRestoreDatabaseId);
3329+
// postgreSqlRestoreDatabase = instance.database(postgreSqlRestoreDatabaseId);
33223330

33233331
// Create backups.
3332+
await createBackup(
3333+
googleSqlDatabase1,
3334+
googleSqlBackup1Name,
3335+
backupExpiryDate
3336+
);
3337+
await createBackup(
3338+
googleSqlDatabase2,
3339+
googleSqlBackup2Name,
3340+
backupExpiryDate
3341+
);
3342+
33243343
googleSqlBackup1 = instance.backup(googleSqlBackup1Name);
33253344
googleSqlBackup2 = instance.backup(googleSqlBackup2Name);
3326-
const [, googleSqlBackup1Operation] = await googleSqlBackup1.create({
3327-
databasePath: googleSqlDatabase1.formattedName_,
3328-
expireTime: backupExpiryDate,
3329-
gaxOptions: GAX_OPTIONS,
3330-
});
3331-
const [, googleSqlBackup2Operation] = await googleSqlBackup2.create({
3332-
databasePath: googleSqlDatabase2.formattedName_,
3333-
expireTime: backupExpiryDate,
3334-
gaxOptions: GAX_OPTIONS,
3335-
});
3336-
3337-
if ('database' in googleSqlBackup1Operation.metadata) {
3338-
assert.strictEqual(
3339-
googleSqlBackup1Operation.metadata!.name,
3340-
`${instance.formattedName_}/backups/${googleSqlBackup1Name}`
3341-
);
3342-
}
33433345

3344-
if ('database' in googleSqlBackup1Operation.metadata) {
3345-
assert.strictEqual(
3346-
googleSqlBackup1Operation.metadata!.database,
3347-
googleSqlDatabase1.formattedName_
3348-
);
3349-
}
3346+
RESOURCES_TO_CLEAN.push(...[googleSqlBackup1, googleSqlBackup2]);
33503347

3351-
if ('database' in googleSqlBackup2Operation.metadata) {
3352-
assert.strictEqual(
3353-
googleSqlBackup2Operation.metadata!.name,
3354-
`${instance.formattedName_}/backups/${googleSqlBackup2Name}`
3348+
if (!SKIP_POSTGRESQL_BACKUP_TESTS) {
3349+
await createBackup(
3350+
postgreSqlDatabase1,
3351+
postgreSqlBackup1Name,
3352+
backupExpiryDate
33553353
);
3356-
}
3357-
if ('database' in googleSqlBackup2Operation.metadata) {
3358-
assert.strictEqual(
3359-
googleSqlBackup2Operation.metadata!.database,
3360-
googleSqlDatabase2.formattedName_
3354+
await createBackup(
3355+
postgreSqlDatabase2,
3356+
postgreSqlBackup2Name,
3357+
backupExpiryDate
33613358
);
3362-
}
3363-
3364-
// Wait for backups to finish.
3365-
await googleSqlBackup1Operation.promise();
3366-
await googleSqlBackup2Operation.promise();
3367-
RESOURCES_TO_CLEAN.push(...[googleSqlBackup1, googleSqlBackup2]);
33683359

3369-
if (!SKIP_POSTGRESQL_BACKUP_TESTS) {
33703360
postgreSqlBackup1 = instance.backup(postgreSqlBackup1Name);
33713361
postgreSqlBackup2 = instance.backup(postgreSqlBackup2Name);
3372-
const [, postgreSqlBackup1Operation] = await postgreSqlBackup1.create({
3373-
databasePath: postgreSqlDatabase1.formattedName_,
3374-
expireTime: backupExpiryDate,
3375-
gaxOptions: GAX_OPTIONS,
3376-
});
3377-
const [, postgreSqlBackup2Operation] = await postgreSqlBackup2.create({
3378-
databasePath: postgreSqlDatabase2.formattedName_,
3379-
expireTime: backupExpiryDate,
3380-
gaxOptions: GAX_OPTIONS,
3381-
});
3382-
3383-
if ('database' in postgreSqlBackup1Operation.metadata) {
3384-
assert.strictEqual(
3385-
postgreSqlBackup1Operation.metadata!.name,
3386-
`${instance.formattedName_}/backups/${postgreSqlBackup1Name}`
3387-
);
3388-
}
3389-
if ('database' in postgreSqlBackup1Operation.metadata) {
3390-
assert.strictEqual(
3391-
postgreSqlBackup1Operation.metadata!.database,
3392-
postgreSqlDatabase1.formattedName_
3393-
);
3394-
}
3395-
if ('database' in postgreSqlBackup2Operation.metadata) {
3396-
assert.strictEqual(
3397-
postgreSqlBackup2Operation.metadata!.name,
3398-
`${instance.formattedName_}/backups/${postgreSqlBackup2Name}`
3399-
);
3400-
}
3401-
if ('database' in postgreSqlBackup2Operation.metadata) {
3402-
assert.strictEqual(
3403-
postgreSqlBackup2Operation.metadata!.database,
3404-
postgreSqlDatabase2.formattedName_
3405-
);
3406-
}
3407-
3408-
// Wait for backups to finish.
3409-
await postgreSqlBackup1Operation.promise();
3410-
await postgreSqlBackup2Operation.promise();
34113362

34123363
RESOURCES_TO_CLEAN.push(...[postgreSqlBackup1, postgreSqlBackup2]);
34133364
}
@@ -3564,14 +3515,20 @@ describe('Spanner', () => {
35643515
}
35653516
});
35663517

3567-
const restoreBackup = async (restoreDatabase, backup1, database1) => {
3518+
const restoreBackup = async (restoreDatabaseId, backup1, database1) => {
35683519
// Perform restore to a different database.
3569-
const [, restoreOperation] = await restoreDatabase.restore(
3570-
backup1.formattedName_
3571-
);
3520+
const databaseAdminClient = spanner.getDatabaseAdminClient();
3521+
const [restoreOperation] = await databaseAdminClient.restoreDatabase({
3522+
parent: databaseAdminClient.instancePath(projectId!, instanceId),
3523+
databaseId: restoreDatabaseId,
3524+
backup: backup1.formattedName_,
3525+
});
35723526

35733527
// Wait for restore to complete.
35743528
await restoreOperation.promise();
3529+
3530+
restoreDatabase = instance.database(restoreDatabaseId);
3531+
35753532
RESOURCES_TO_CLEAN.push(restoreDatabase);
35763533

35773534
const [databaseMetadata] = await restoreDatabase.getMetadata();
@@ -3614,16 +3571,18 @@ describe('Spanner', () => {
36143571
};
36153572

36163573
it('GOOGLE_STANDARD_SQL should restore a backup', async () => {
3574+
const googleSqlRestoreDatabaseId = generateName('database');
36173575
await restoreBackup(
3618-
googleSqlRestoreDatabase,
3576+
googleSqlRestoreDatabaseId,
36193577
googleSqlBackup1,
36203578
googleSqlDatabase1
36213579
);
36223580
});
36233581

36243582
it.skip('POSTGRESQL should restore a backup', async () => {
3583+
const postgreSqlRestoreDatabaseId = generateName('pg-db');
36253584
await restoreBackup(
3626-
postgreSqlRestoreDatabase,
3585+
postgreSqlRestoreDatabaseId,
36273586
postgreSqlBackup1,
36283587
postgreSqlDatabase1
36293588
);
@@ -3645,14 +3604,14 @@ describe('Spanner', () => {
36453604

36463605
it('GOOGLE_STANDARD_SQL should not be able to restore to an existing database', async () => {
36473606
await restoreExistingDatabaseFail(
3648-
googleSqlRestoreDatabase,
3607+
restoreDatabase,
36493608
googleSqlBackup1
36503609
);
36513610
});
36523611

36533612
it.skip('POSTGRESQL should not be able to restore to an existing database', async () => {
36543613
await restoreExistingDatabaseFail(
3655-
postgreSqlRestoreDatabase,
3614+
restoreDatabase,
36563615
postgreSqlBackup1
36573616
);
36583617
});

0 commit comments

Comments
 (0)