Skip to content

Commit 9015dc1

Browse files
committed
Fixes for broken tests
Signed-off-by: worksofliam <[email protected]>
1 parent 0784c73 commit 9015dc1

File tree

4 files changed

+74
-48
lines changed

4 files changed

+74
-48
lines changed

.vscode/launch.json

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,24 @@
3131
"preLaunchTask": "${defaultBuildTask}",
3232
"sourceMaps": true,
3333
"env": {
34-
"testing": "true"
34+
"db2_testing": "true"
35+
}
36+
},
37+
{
38+
"name": "Launch Tests (Specific)",
39+
"type": "extensionHost",
40+
"request": "launch",
41+
"args": [
42+
"--extensionDevelopmentPath=${workspaceFolder}"
43+
],
44+
"outFiles": [
45+
"${workspaceFolder}/dist/**/*.js"
46+
],
47+
"preLaunchTask": "${defaultBuildTask}",
48+
"sourceMaps": true,
49+
"env": {
50+
"db2_testing": "true",
51+
"db2_specific": "true"
3552
}
3653
},
3754
]

src/testing/database.ts

Lines changed: 48 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -161,59 +161,64 @@ export const DatabaseSuite: TestSuite = {
161161
const qsys = Statement.delimName(`qsys`, true);
162162
const createSqlSample = Statement.delimName(`CREATE_SQL_SAMPLE`, true);
163163

164-
const parms = await Callable.getParms(qsys, createSqlSample);
164+
const parms = await Callable.getSignaturesFor(qsys, [createSqlSample]);
165165
assert.notStrictEqual(parms.length, 0);
166166
}},
167167

168168
{name: `Setup for overloaded routines`, test: async () => {
169169
// Setup overloaded routines
170+
try {
171+
await JobManager.runSQL(`DROP SCHEMA OVERLOAD`);
172+
} catch (e) {
173+
console.log(`Probably doesn't exist.`);
174+
}
175+
170176
try {
171177
await JobManager.runSQL(`CREATE SCHEMA OVERLOAD`);
172178
} catch (e) {
173179
console.log(`Probably exists.`);
174180
}
175181
try {
176-
const setupStatements = [
177-
// Functions
178-
`CREATE OR REPLACE FUNCTION OVERLOAD.MULTI_FUNC (P1 INTEGER) RETURNS INTEGER SPECIFIC OVERLOAD.MULTI_FUNC_SQUARED RETURN P1 * P1;`,
179-
`LABEL ON SPECIFIC FUNCTION OVERLOAD.MULTI_FUNC_SQUARED IS 'Accepts One Integer and Returns Its Square';`,
180-
`COMMENT ON PARAMETER SPECIFIC FUNCTION OVERLOAD.MULTI_FUNC_SQUARED (P1 IS 'Value to Square');`,
181-
182-
`CREATE OR REPLACE FUNCTION OVERLOAD.MULTI_FUNC (P1 INTEGER, P2 INTEGER) RETURNS INTEGER SPECIFIC OVERLOAD.MULTI_FUNC_PRODUCT RETURN P1 * P2;`,
183-
`LABEL ON SPECIFIC FUNCTION OVERLOAD.MULTI_FUNC_PRODUCT IS 'Accepts Two Integer and Returns the Product';`,
184-
`COMMENT ON PARAMETER SPECIFIC FUNCTION OVERLOAD.MULTI_FUNC_PRODUCT (P1 IS 'First Value', P2 IS 'Second Value');`,
185-
186-
// Procedures
187-
`CREATE OR REPLACE PROCEDURE OVERLOAD.MULTI_PROC () SPECIFIC OVERLOAD.MULTI_PROC_ALL_MONITORS PROGRAM TYPE SUB DYNAMIC RESULT SETS 1 `,
188-
`BEGIN DECLARE MONITORS CURSOR WITH RETURN FOR SELECT * FROM QUSRSYS.QAUGDBPMD2; OPEN MONITORS; END;`,
189-
`LABEL ON SPECIFIC PROCEDURE OVERLOAD.MULTI_PROC_ALL_MONITORS IS 'Returns the Entire List of Monitors';`,
190-
191-
`CREATE OR REPLACE PROCEDURE OVERLOAD.MULTI_PROC (IN CREATOR CHARACTER(10)) SPECIFIC OVERLOAD.MULTI_PROC_MY_MONITORS PROGRAM TYPE SUB DYNAMIC RESULT SETS 1 `,
192-
`BEGIN DECLARE MONITORS CURSOR WITH RETURN FOR SELECT * FROM QUSRSYS.QAUGDBPMD2 WHERE "Created by" = CREATOR; OPEN MONITORS; END;`,
193-
`LABEL ON SPECIFIC PROCEDURE OVERLOAD.MULTI_PROC_MY_MONITORS IS 'Returns the List of My Monitors';`,
194-
`COMMENT ON PARAMETER SPECIFIC PROCEDURE OVERLOAD.MULTI_PROC_MY_MONITORS (CREATOR IS 'User That Created the Monitor');`,
182+
const statements = [
183+
`CREATE OR REPLACE FUNCTION OVERLOAD.MULTI_FUNC (P1 INTEGER) RETURNS INTEGER SPECIFIC OVERLOAD.MULTI_FUNC_SQUARED RETURN P1 * P1`,
184+
`LABEL ON SPECIFIC FUNCTION OVERLOAD.MULTI_FUNC_SQUARED IS 'Accepts One Integer and Returns Its Square'`,
185+
`COMMENT ON PARAMETER SPECIFIC FUNCTION OVERLOAD.MULTI_FUNC_SQUARED (P1 IS 'Value to Square')`,
186+
187+
`CREATE OR REPLACE FUNCTION OVERLOAD.MULTI_FUNC (P1 INTEGER, P2 INTEGER) RETURNS INTEGER SPECIFIC OVERLOAD.MULTI_FUNC_PRODUCT RETURN P1 * P2`,
188+
`LABEL ON SPECIFIC FUNCTION OVERLOAD.MULTI_FUNC_PRODUCT IS 'Accepts Two Integer and Returns the Product'`,
189+
`COMMENT ON PARAMETER SPECIFIC FUNCTION OVERLOAD.MULTI_FUNC_PRODUCT (P1 IS 'First Value', P2 IS 'Second Value')`,
190+
191+
`CREATE OR REPLACE PROCEDURE OVERLOAD.MULTI_PROC () SPECIFIC OVERLOAD.MULTI_PROC_ALL_MONITORS PROGRAM TYPE SUB DYNAMIC RESULT SETS 1 BEGIN DECLARE MONITORS CURSOR WITH RETURN FOR SELECT * FROM QUSRSYS.QAUGDBPMD2; OPEN MONITORS; END`,
192+
`LABEL ON SPECIFIC PROCEDURE OVERLOAD.MULTI_PROC_ALL_MONITORS IS 'Returns the Entire List of Monitors'`,
193+
194+
`CREATE OR REPLACE PROCEDURE OVERLOAD.MULTI_PROC (IN CREATOR CHARACTER(10)) SPECIFIC OVERLOAD.MULTI_PROC_MY_MONITORS PROGRAM TYPE SUB DYNAMIC RESULT SETS 1 BEGIN DECLARE MONITORS CURSOR WITH RETURN FOR SELECT * FROM QUSRSYS.QAUGDBPMD2 WHERE "Created by" = CREATOR; OPEN MONITORS; END`,
195+
`LABEL ON SPECIFIC PROCEDURE OVERLOAD.MULTI_PROC_MY_MONITORS IS 'Returns the List of My Monitors'`,
196+
`COMMENT ON PARAMETER SPECIFIC PROCEDURE OVERLOAD.MULTI_PROC_MY_MONITORS (CREATOR IS 'User That Created the Monitor')`,
195197
]
196-
// Server component doesn't support running multiple queries in one request
197-
await getInstance().getContent().runSQL(setupStatements.join(`\n`));
198+
199+
for (const statement of statements) {
200+
await JobManager.runSQL(statement);
201+
}
198202
} catch (e) {
203+
assert.fail(e);
199204
console.log(`Possible fail`);
205+
console.log(e);
200206
}
201207
}},
202208

203-
{name: `Retrieve overloaded functions`, test: async () => {
209+
{name: `Retrieve overloaded function parameters`, test: async () => {
204210
const functions = await Database.getObjects(`OVERLOAD`, [`functions`]);
205-
// Verify two functions with same name exist
206-
assert.strictEqual(functions.length, 2);
207-
}},
211+
assert.ok(functions.some(f => f.specificName === `MULTI_FUNC_SQUARED`));
212+
assert.ok(functions.some(f => f.specificName === `MULTI_FUNC_PRODUCT`));
208213

209-
{name: `Retrieve overloaded function parameters`, test: async () => {
210-
const parms1 = await Callable.getParms(`OVERLOAD`, `MULTI_FUNC_SQUARED`);
211-
// Verify one parameter for this function
212-
assert.strictEqual(parms1.length, 1);
214+
const multiFuncSquared = await Callable.getSignaturesFor(`OVERLOAD`, [`MULTI_FUNC_SQUARED`]);
215+
assert.strictEqual(multiFuncSquared.length, 1);
216+
assert.strictEqual(multiFuncSquared[0].parms.length, 1);
217+
218+
const multiFuncProduct = await Callable.getSignaturesFor(`OVERLOAD`, [`MULTI_FUNC_PRODUCT`]);
213219

214-
const parms2 = await Callable.getParms(`OVERLOAD`, `MULTI_FUNC_PRODUCT`);
215-
// Verify two parameter for this function
216-
assert.strictEqual(parms2.length, 2);
220+
assert.strictEqual(multiFuncProduct.length, 1);
221+
assert.strictEqual(multiFuncProduct[0].parms.length, 2);
217222
}},
218223

219224
{name: `Generate SQL for overloaded functions`, test: async () => {
@@ -232,20 +237,19 @@ export const DatabaseSuite: TestSuite = {
232237
assert.strictEqual(functions[0].specificName, `MULTI_FUNC_PRODUCT`);
233238
}},
234239

235-
{name: `Retrieve overloaded procedures`, test: async () => {
240+
{name: `Retrieve overloaded procedure parameters`, test: async () => {
236241
const procedures = await Database.getObjects(`OVERLOAD`, [`procedures`]);
237-
// Verify two procedures with same name exist
238-
assert.strictEqual(procedures.length, 2);
239-
}},
242+
assert.ok(procedures.some(proc => proc.specificName === `MULTI_PROC_ALL_MONITORS`));
243+
assert.ok(procedures.some(proc => proc.specificName === `MULTI_PROC_MY_MONITORS`));
240244

241-
{name: `Retrieve overloaded procedure parameters`, test: async () => {
242-
const parms1 = await Callable.getParms(`OVERLOAD`, `MULTI_PROC_ALL_MONITORS`);
243-
// Verify no parameters for this procedure
244-
assert.strictEqual(parms1.length, 0);
245+
const specificNames = procedures.map(proc => proc.specificName);
246+
247+
const signatures = await Callable.getSignaturesFor(`OVERLOAD`, specificNames);
245248

246-
const parms2 = await Callable.getParms(`OVERLOAD`, `MULTI_PROC_MY_MONITORS`);
247-
// Verify one parameter for this procedure
248-
assert.strictEqual(parms2.length, 1);
249+
// Only one procedure should have parameters
250+
assert.strictEqual(signatures.length, 1);
251+
const multiProcAllMonitors = signatures.find(sig => sig.specificName === `MULTI_PROC_MY_MONITORS`);
252+
assert.strictEqual(multiProcAllMonitors.parms.length, 1);
249253
}},
250254

251255
{name: `Generate SQL for overloaded procedures`, test: async () => {

src/testing/databasePerformance.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ export const DatabasePerformanceSuite: TestSuite = {
4646
test: async () => {
4747
const start = performance.now();
4848
const promises = Object.entries(sqlTypes).map(([_, value]) => Database.getObjects(forSchema, [value.type]));
49-
const results = await Promise.allSettled(promises);
49+
const results = await Promise.all(promises);
5050
const end = performance.now();
5151
console.log(`time get objects: ${end - start}ms`);
5252
},

src/testing/index.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export interface TestCase {
3030

3131
let testSuitesTreeProvider: TestSuitesTreeProvider;
3232
export function initialiseTestSuite(context: vscode.ExtensionContext) {
33-
if (env.testing === `true`) {
33+
if (env['db2_testing'] === `true`) {
3434
const instance = getInstance();
3535

3636
vscode.commands.executeCommand(`setContext`, `vscode-db2i:testing`, true);
@@ -55,7 +55,12 @@ export function initialiseTestSuite(context: vscode.ExtensionContext) {
5555
})
5656
);
5757

58-
return runTests;
58+
const specificTests = env[`db2_specific`] === "true";
59+
if (specificTests)
60+
return async () => {};
61+
else
62+
return runTests;
63+
5964
}
6065
}
6166

0 commit comments

Comments
 (0)