Skip to content

Commit 377acf3

Browse files
committed
Fix SODA collection test not closing message in soda5.js
1 parent 7738361 commit 377acf3

File tree

4 files changed

+71
-52
lines changed

4 files changed

+71
-52
lines changed

test/notes.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ const configList = [
3030
"\t* NODE_ORACLEDB_PASSWORD\n" +
3131
"\t* NODE_ORACLEDB_CONNECTIONSTRING\n",
3232
}
33-
]
33+
];
3434

3535
if (dbconfig.test.DBA_PRIVILEGE) {
3636
configList.push({
@@ -86,7 +86,7 @@ before(function(done) {
8686
conn.execute(
8787
"select * from dual",
8888
function(err, result) {
89-
if (!Boolean(err) && Boolean(result.rows) && (result.rows[0][0]==="X")) {
89+
if (!err && result.rows && (result.rows[0][0]==="X")) {
9090
cb(null, index);
9191
} else {
9292
cb(new Error("Query test failed"), index);
@@ -95,7 +95,7 @@ before(function(done) {
9595
);
9696
});
9797
seriesList.push(function (cb) {
98-
conn.close(function (err) {cb(err, index)});
98+
conn.close(function (err) {cb(err, index);});
9999
});
100100
});
101101
async.series(seriesList, function(err, results) {

test/soda5.js

Lines changed: 22 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -487,7 +487,7 @@ describe('173. soda5.js', () => {
487487
await dropIdxOpt(options);
488488
}); // 173.11
489489

490-
it('173.12 getDataGiuide(), basic case', async () => {
490+
it('173.12 getDataGuide(), basic case', async () => {
491491

492492
let conn, collection;
493493

@@ -512,54 +512,50 @@ describe('173. soda5.js', () => {
512512
should.not.exist(err);
513513
}
514514

515-
let compatibleVersion;
516-
if (dbconfig.test.DBA_PRIVILEGE) {
517-
try {
518-
const connectionDetails = {
519-
user : dbconfig.test.DBA_user,
520-
password : dbconfig.test.DBA_password,
521-
connectString : dbconfig.connectString,
522-
privilege : oracledb.SYSDBA,
523-
};
524-
let conn = await oracledb.getConnection(connectionDetails);
525-
let res = await conn.execute("select name, value from v$parameter where name like lower('%'||:x||'%')", ['COMPATIBLE']);
526-
if(res.rows.length > 0) {
527-
compatibleVersion = res.rows[0][1];
528-
}
529-
await conn.close();
530-
} catch (err) {
531-
should.not.exist(err);
532-
}
533-
}
534-
const isCreateIndexEnabled = sodaUtil.versionStringCompare(compatibleVersion, '12.2.0.0.0');
515+
/*
516+
* if isCreateIndexEligible >= 0: Can Create Index without error
517+
* if isCreateIndexEligible < 0: Create Index will throw error ORA-00406
518+
* if isCreateIndexEligible = undefined: Getting COMPATIBLE VERSION string failed, the following part is skipped
519+
*/
520+
const isCreateIndexEligible = testsUtil.versionStringCompare(await testsUtil.getDBCompatibleVersion(), '12.2.0.0.0');
535521
try {
536522
let indexSpec = {
537523
"name": "TEST_IDX",
538524
"search_on": "none",
539525
"dataguide": "on"
540526
};
541-
if (isCreateIndexEnabled >= 0) {
527+
if (isCreateIndexEligible >= 0) {
542528
await collection.createIndex(indexSpec);
543529
let outDocument = await collection.getDataGuide();
544530
should.exist(outDocument);
545-
} else if(isCreateIndexEnabled < 0){
531+
} else if(isCreateIndexEligible < 0){
546532
await testsUtil.assertThrowsAsync(async () => {await collection.createIndex(indexSpec);}, /ORA-00406:/);
547533
}
548534
} catch(err) {
549535
should.not.exist(err);
550536
}
551-
if (isCreateIndexEnabled >= 0) {
537+
538+
if (isCreateIndexEligible >= 0) {
552539
try {
553540
let result = await collection.dropIndex('TEST_IDX');
554541
should.strictEqual(result.dropped, true);
555542
await conn.commit();
556-
await collection.drop();
557-
await conn.close();
558543
} catch(err) {
559544
should.not.exist(err);
560545
}
561546
}
562547

548+
try {
549+
if (collection) await collection.drop();
550+
} catch (err) {
551+
should.not.exist(err);
552+
}
553+
try {
554+
if (conn) await conn.close();
555+
} catch (err) {
556+
should.not.exist(err);
557+
}
558+
563559
}); // 173.12
564560

565561
});

test/sodaUtil.js

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -79,26 +79,3 @@ sodaUtil.t_contents = [
7979
{ id: 1006, name: "Joe", office: "San Francisco" },
8080
{ id: 1007, name: "Gavin", office: "New York" }
8181
];
82-
83-
84-
// Function versionStringCompare returns:
85-
// * 1 if version1 is greater than version2
86-
// * -1 if version1 is smaller than version2
87-
// * 0 if version1 is equal to version2
88-
// * undefined if eigher version1 or version2 is not string
89-
sodaUtil.versionStringCompare = function(version1, version2) {
90-
if (typeof version1 === 'string' && typeof version2 === 'string') {
91-
let tokens1 = version1.split('.');
92-
let tokens2 = version2.split('.');
93-
let len = Math.min(tokens1.length, tokens2.length);
94-
for (let i = 0; i < len; i++) {
95-
const t1 = parseInt(tokens1[i]), t2 = parseInt(tokens2[i]);
96-
if (t1 > t2) return 1;
97-
if (t1 < t2) return -1;
98-
}
99-
if (tokens1.length < tokens2.length) return 1;
100-
if (tokens1.length > tokens2.length) return -1;
101-
return 0;
102-
}
103-
return undefined;
104-
};

test/testsUtil.js

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
const oracledb = require('oracledb');
3131
const dbconfig = require('./dbconfig.js');
3232
const assert = require('assert');
33+
const should = require('should');
3334

3435
let testsUtil = exports;
3536
module.exports = testsUtil;
@@ -65,3 +66,48 @@ testsUtil.generateRandomPassword = function(length=6) {
6566
}
6667
return result;
6768
};
69+
70+
testsUtil.getDBCompatibleVersion = async function() {
71+
let compatibleVersion;
72+
if (dbconfig.test.DBA_PRIVILEGE) {
73+
try {
74+
const connectionDetails = {
75+
user : dbconfig.test.DBA_user,
76+
password : dbconfig.test.DBA_password,
77+
connectString : dbconfig.connectString,
78+
privilege : oracledb.SYSDBA,
79+
};
80+
let conn = await oracledb.getConnection(connectionDetails);
81+
let res = await conn.execute("select name, value from v$parameter where name = 'compatible'");
82+
if(res.rows.length > 0) {
83+
compatibleVersion = res.rows[0][1];
84+
}
85+
await conn.close();
86+
} catch (err) {
87+
should.not.exist(err);
88+
}
89+
}
90+
return compatibleVersion;
91+
};
92+
93+
// Function versionStringCompare returns:
94+
// * 1 if version1 is greater than version2
95+
// * -1 if version1 is smaller than version2
96+
// * 0 if version1 is equal to version2
97+
// * undefined if eigher version1 or version2 is not string
98+
testsUtil.versionStringCompare = function(version1, version2) {
99+
if (typeof version1 === 'string' && typeof version2 === 'string') {
100+
let tokens1 = version1.split('.');
101+
let tokens2 = version2.split('.');
102+
let len = Math.min(tokens1.length, tokens2.length);
103+
for (let i = 0; i < len; i++) {
104+
const t1 = parseInt(tokens1[i]), t2 = parseInt(tokens2[i]);
105+
if (t1 > t2) return 1;
106+
if (t1 < t2) return -1;
107+
}
108+
if (tokens1.length < tokens2.length) return 1;
109+
if (tokens1.length > tokens2.length) return -1;
110+
return 0;
111+
}
112+
return undefined;
113+
};

0 commit comments

Comments
 (0)