Skip to content

Commit 70f65cd

Browse files
committed
refactor test
1 parent 3b6182d commit 70f65cd

File tree

1 file changed

+110
-116
lines changed

1 file changed

+110
-116
lines changed

system-test/spanner.ts

Lines changed: 110 additions & 116 deletions
Original file line numberDiff line numberDiff line change
@@ -117,124 +117,118 @@ describe('Spanner', () => {
117117
gaxOptions: GAX_OPTIONS,
118118
};
119119

120-
before(async () => {
121-
try {
122-
await deleteOldTestInstances();
123-
const instanceAdminClient = spanner.getInstanceAdminClient();
124-
const databaseAdminClient = spanner.getDatabaseAdminClient();
125-
if (generateInstanceForTest) {
126-
const [instanceCreationOperation] =
127-
await instanceAdminClient.createInstance({
128-
instanceId: instanceId,
129-
parent: instanceAdminClient.projectPath(projectId!),
130-
instance: {
131-
config: instanceAdminClient.instanceConfigPath(
132-
projectId!,
133-
INSTANCE_CONFIG.config
134-
),
135-
nodeCount: 1,
136-
displayName: 'Test name for instance.',
137-
labels: {
138-
created: Math.round(Date.now() / 1000).toString(), // current time
139-
},
140-
},
141-
});
142-
await instanceCreationOperation.promise();
143-
instance = spanner.instance(instanceId!);
144-
RESOURCES_TO_CLEAN.push(instance);
145-
} else {
146-
instance = spanner.instance(envInstanceName);
147-
console.log(
148-
`Not creating temp instance, using + ${instance.formattedName_}...`
149-
);
150-
}
151-
if (IS_EMULATOR_ENABLED) {
152-
const createSingersTableStatement = `
153-
CREATE TABLE ${TABLE_NAME} (
154-
SingerId STRING(1024) NOT NULL,
155-
Name STRING(1024),
156-
) PRIMARY KEY(SingerId)`;
157-
const [googleSqlOperation1] = await databaseAdminClient.createDatabase({
158-
createStatement: 'CREATE DATABASE `' + gSQLdatabaseId1 + '`',
159-
extraStatements: [createSingersTableStatement],
160-
parent: databaseAdminClient.instancePath(projectId!, instanceId!),
161-
});
162-
await googleSqlOperation1.promise();
163-
DATABASE = instance.database(gSQLdatabaseId1);
164-
RESOURCES_TO_CLEAN.push(DATABASE);
165-
} else {
166-
// Reading proto descriptor file
167-
const protoDescriptor = fs
168-
.readFileSync('test/data/descriptors.pb')
169-
.toString('base64');
120+
async function createInstance(id) {
121+
const instanceAdminClient = spanner.getInstanceAdminClient();
122+
const [instanceCreationOperation] =
123+
await instanceAdminClient.createInstance({
124+
instanceId: id,
125+
parent: instanceAdminClient.projectPath(projectId!),
126+
instance: {
127+
config: instanceAdminClient.instanceConfigPath(
128+
projectId!,
129+
INSTANCE_CONFIG.config
130+
),
131+
nodeCount: 1,
132+
displayName: 'Test name for instance.',
133+
labels: {
134+
created: Math.round(Date.now() / 1000).toString(), // current time
135+
},
136+
},
137+
});
138+
await instanceCreationOperation.promise();
139+
}
170140

171-
const createSingersTableStatement = [
172-
`
173-
CREATE PROTO BUNDLE (
174-
examples.spanner.music.SingerInfo,
175-
examples.spanner.music.Genre,
176-
)`,
141+
async function creategSQLDatabase(gSQLdatabaseId, protoDescriptor) {
142+
const databaseAdminClient = spanner.getDatabaseAdminClient();
143+
const createSingersTableStatement = protoDescriptor
144+
? [
145+
`CREATE PROTO BUNDLE (
146+
examples.spanner.music.SingerInfo,
147+
examples.spanner.music.Genre,
148+
)`,
177149
`
178-
CREATE TABLE ${TABLE_NAME} (
179-
SingerId STRING(1024) NOT NULL,
180-
Name STRING(1024),
181-
) PRIMARY KEY(SingerId)`,
150+
CREATE TABLE ${TABLE_NAME} (
151+
SingerId STRING(1024) NOT NULL,
152+
Name STRING(1024),
153+
) PRIMARY KEY(SingerId)`,
154+
]
155+
: [
156+
`CREATE TABLE ${TABLE_NAME} (
157+
SingerId STRING(1024) NOT NULL,
158+
Name STRING(1024),
159+
) PRIMARY KEY(SingerId)`,
182160
];
183-
const [googleSqlOperation1] = await databaseAdminClient.createDatabase({
184-
createStatement: 'CREATE DATABASE `' + gSQLdatabaseId1 + '`',
185-
extraStatements: createSingersTableStatement,
186-
parent: databaseAdminClient.instancePath(projectId!, instanceId!),
187-
protoDescriptors: protoDescriptor,
188-
});
189-
await googleSqlOperation1.promise();
190-
DATABASE = instance.database(gSQLdatabaseId1);
191-
RESOURCES_TO_CLEAN.push(DATABASE);
192-
}
193-
const [postgreSqlOperation] = await databaseAdminClient.createDatabase({
194-
createStatement: 'CREATE DATABASE "' + pgdatabaseId + '"',
195-
parent: databaseAdminClient.instancePath(projectId!, instanceId!),
196-
databaseDialect:
197-
protos.google.spanner.admin.database.v1.DatabaseDialect.POSTGRESQL,
198-
});
199-
await postgreSqlOperation.promise();
200-
const statements = [
201-
`CREATE TABLE ${TABLE_NAME} (
202-
SingerId VARCHAR(1024) NOT NULL,
203-
Name VARCHAR(1024),
204-
PRIMARY KEY (SingerId)
205-
);`,
206-
];
207-
const [postgreSqlOperationUpdateDDL] =
208-
await databaseAdminClient.updateDatabaseDdl({
209-
database: databaseAdminClient.databasePath(
210-
projectId!,
211-
instanceId!,
212-
pgdatabaseId
213-
),
214-
statements: statements,
215-
});
216-
await postgreSqlOperationUpdateDDL.promise();
217-
PG_DATABASE = instance.database(pgdatabaseId, {incStep: 1});
218-
RESOURCES_TO_CLEAN.push(PG_DATABASE);
219-
220-
const createSingersTableStatement = `
221-
CREATE TABLE ${TABLE_NAME} (
222-
SingerId STRING(1024) NOT NULL,
223-
Name STRING(1024),
224-
) PRIMARY KEY(SingerId)`;
225-
const [googleSqlOperation2] = await databaseAdminClient.createDatabase({
226-
createStatement: 'CREATE DATABASE `' + gSQLdatabaseId2 + '`',
227-
extraStatements: [createSingersTableStatement],
228-
parent: databaseAdminClient.instancePath(projectId!, instanceId!),
229-
});
230-
await googleSqlOperation2.promise();
231-
DATABASE_DROP_PROTECTION = instance.database(gSQLdatabaseId2, {
232-
incStep: 1,
233-
});
234-
RESOURCES_TO_CLEAN.push(DATABASE_DROP_PROTECTION);
235-
} catch (err) {
236-
console.log('ERROR: ', err);
161+
const [googleSqlOperation] = await databaseAdminClient.createDatabase({
162+
createStatement: 'CREATE DATABASE `' + gSQLdatabaseId + '`',
163+
extraStatements: createSingersTableStatement,
164+
parent: databaseAdminClient.instancePath(projectId!, instanceId!),
165+
protoDescriptors: protoDescriptor ? protoDescriptor : null,
166+
});
167+
await googleSqlOperation.promise();
168+
}
169+
170+
async function createPostgresDatabase(pgdatabaseId) {
171+
const databaseAdminClient = spanner.getDatabaseAdminClient();
172+
const [pgOperation] = await databaseAdminClient.createDatabase({
173+
createStatement: 'CREATE DATABASE "' + pgdatabaseId + '"',
174+
parent: databaseAdminClient.instancePath(projectId!, instanceId!),
175+
databaseDialect:
176+
protos.google.spanner.admin.database.v1.DatabaseDialect.POSTGRESQL,
177+
});
178+
await pgOperation.promise();
179+
const statements = [
180+
`CREATE TABLE ${TABLE_NAME} (
181+
SingerId VARCHAR(1024) NOT NULL,
182+
Name VARCHAR(1024),
183+
PRIMARY KEY (SingerId)
184+
);`,
185+
];
186+
const [postgreSqlOperationUpdateDDL] =
187+
await databaseAdminClient.updateDatabaseDdl({
188+
database: databaseAdminClient.databasePath(
189+
projectId!,
190+
instanceId!,
191+
pgdatabaseId
192+
),
193+
statements: statements,
194+
});
195+
await postgreSqlOperationUpdateDDL.promise();
196+
}
197+
198+
before(async () => {
199+
await deleteOldTestInstances();
200+
if (generateInstanceForTest) {
201+
await createInstance(instanceId!);
202+
instance = spanner.instance(instanceId!);
203+
RESOURCES_TO_CLEAN.push(instance);
204+
} else {
205+
instance = spanner.instance(envInstanceName);
206+
console.log(
207+
`Not creating temp instance, using + ${instance.formattedName_}...`
208+
);
209+
}
210+
if (IS_EMULATOR_ENABLED) {
211+
await creategSQLDatabase(gSQLdatabaseId1, null);
212+
DATABASE = instance.database(gSQLdatabaseId1);
213+
RESOURCES_TO_CLEAN.push(DATABASE);
214+
} else {
215+
// Reading proto descriptor file
216+
const protoDescriptor = fs
217+
.readFileSync('test/data/descriptors.pb')
218+
.toString('base64');
219+
creategSQLDatabase(gSQLdatabaseId1, protoDescriptor);
220+
DATABASE = instance.database(gSQLdatabaseId1);
221+
RESOURCES_TO_CLEAN.push(DATABASE);
237222
}
223+
await createPostgresDatabase(pgdatabaseId);
224+
PG_DATABASE = instance.database(pgdatabaseId, {incStep: 1});
225+
RESOURCES_TO_CLEAN.push(PG_DATABASE);
226+
227+
await creategSQLDatabase(gSQLdatabaseId2, null);
228+
DATABASE_DROP_PROTECTION = instance.database(gSQLdatabaseId2, {
229+
incStep: 1,
230+
});
231+
RESOURCES_TO_CLEAN.push(DATABASE_DROP_PROTECTION);
238232
});
239233

240234
after(async () => {
@@ -282,6 +276,8 @@ describe('Spanner', () => {
282276
let postgreSqlTable;
283277

284278
before(async () => {
279+
googleSqlTable = DATABASE.table(TABLE_NAME);
280+
postgreSqlTable = PG_DATABASE.table(TABLE_NAME);
285281
if (IS_EMULATOR_ENABLED) {
286282
// TODO: add column Float32Value FLOAT32 and FLOAT32Array Array<FLOAT32> while using float32 feature.
287283
const [googleSqlOperationUpdateDDL] = await DATABASE.updateSchema(
@@ -466,12 +462,10 @@ describe('Spanner', () => {
466462
};
467463

468464
it('GOOGLE_STANDARD_SQL should throw an error for incorrect value types', done => {
469-
googleSqlTable = DATABASE.table(TABLE_NAME);
470465
incorrectValueType(done, googleSqlTable);
471466
});
472467

473468
it('POSTGRESQL should throw an error for incorrect value types', done => {
474-
postgreSqlTable = PG_DATABASE.table(TABLE_NAME);
475469
incorrectValueType(done, postgreSqlTable);
476470
});
477471

0 commit comments

Comments
 (0)