@@ -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