@zowe/db2-for-zowe-cli 6.1.17 → 6.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -10
- package/lib/Db2PluginLifeCycle.d.ts +11 -9
- package/lib/Db2PluginLifeCycle.js +18 -13
- package/lib/Db2PluginLifeCycle.js.map +1 -1
- package/node_modules/axios/CHANGELOG.md +62 -0
- package/node_modules/axios/README.md +233 -5
- package/node_modules/axios/dist/axios.js +387 -89
- package/node_modules/axios/dist/axios.min.js +3 -3
- package/node_modules/axios/dist/axios.min.js.map +1 -1
- package/node_modules/axios/dist/browser/axios.cjs +458 -98
- package/node_modules/axios/dist/esm/axios.js +458 -98
- package/node_modules/axios/dist/esm/axios.min.js +2 -2
- package/node_modules/axios/dist/esm/axios.min.js.map +1 -1
- package/node_modules/axios/dist/node/axios.cjs +568 -116
- package/node_modules/axios/index.d.cts +4 -0
- package/node_modules/axios/index.d.ts +4 -0
- package/node_modules/axios/lib/adapters/fetch.js +64 -11
- package/node_modules/axios/lib/adapters/http.js +134 -50
- package/node_modules/axios/lib/adapters/xhr.js +52 -3
- package/node_modules/axios/lib/core/Axios.js +19 -14
- package/node_modules/axios/lib/core/InterceptorManager.js +107 -8
- package/node_modules/axios/lib/core/buildFullPath.js +1 -13
- package/node_modules/axios/lib/core/dispatchRequest.js +8 -2
- package/node_modules/axios/lib/core/mergeConfig.js +1 -1
- package/node_modules/axios/lib/core/methodList.js +17 -0
- package/node_modules/axios/lib/defaults/index.js +2 -1
- package/node_modules/axios/lib/env/data.js +1 -1
- package/node_modules/axios/lib/helpers/Http2Sessions.js +2 -0
- package/node_modules/axios/lib/helpers/HttpStatusCode.js +11 -1
- package/node_modules/axios/lib/helpers/fromDataURI.js +5 -4
- package/node_modules/axios/lib/helpers/normalizeURLForProtocolCheck.js +24 -0
- package/node_modules/axios/lib/helpers/progressEventReducer.js +1 -1
- package/node_modules/axios/lib/helpers/resolveConfig.js +4 -2
- package/node_modules/axios/lib/helpers/shouldBypassProxy.js +182 -6
- package/node_modules/axios/lib/helpers/throttle.js +3 -2
- package/node_modules/axios/lib/helpers/toFormData.js +14 -21
- package/node_modules/axios/lib/utils.js +134 -13
- package/node_modules/axios/package.json +1 -1
- package/node_modules/ibm_db/APIDocumentation.md +2883 -2024
- package/node_modules/ibm_db/LICENSE +23 -23
- package/node_modules/ibm_db/README.md +735 -735
- package/node_modules/ibm_db/binding.gyp +99 -98
- package/node_modules/ibm_db/installer/driverInstall.js +984 -958
- package/node_modules/ibm_db/installer/ifx.sh +38 -38
- package/node_modules/ibm_db/installer/setenv.sh +23 -23
- package/node_modules/ibm_db/installer/testODBCConnection.bat +51 -51
- package/node_modules/ibm_db/installer/testODBCConnection.sh +61 -61
- package/node_modules/ibm_db/lib/climacros.js +431 -431
- package/node_modules/ibm_db/lib/odbc.js +4293 -3487
- package/node_modules/ibm_db/lib/simple-queue.js +41 -41
- package/node_modules/ibm_db/package.json +70 -70
- package/node_modules/ibm_db/src/odbc.cpp +1495 -1396
- package/node_modules/ibm_db/src/odbc.h +477 -473
- package/node_modules/ibm_db/src/odbc_connection.cpp +1762 -1612
- package/node_modules/ibm_db/src/odbc_connection.h +228 -215
- package/node_modules/ibm_db/src/odbc_result.cpp +1547 -1547
- package/node_modules/ibm_db/src/odbc_result.h +152 -152
- package/node_modules/ibm_db/src/odbc_statement.cpp +2047 -861
- package/node_modules/ibm_db/src/odbc_statement.h +257 -135
- package/node_modules/ibm_db/src/strptime.c +389 -389
- package/node_modules/ibm_db/src/strptime.h +46 -46
- package/node_modules/ibm_db/test/README +23 -23
- package/node_modules/ibm_db/test/bench-insert.js +62 -62
- package/node_modules/ibm_db/test/bench-insertBatch10.js +74 -74
- package/node_modules/ibm_db/test/bench-insertBatch100.js +75 -75
- package/node_modules/ibm_db/test/bench-insertBatch1000.js +75 -75
- package/node_modules/ibm_db/test/bench-insertBatch10000.js +75 -75
- package/node_modules/ibm_db/test/bench-prepare-bind-execute-closeSync.js +60 -60
- package/node_modules/ibm_db/test/bench-prepare-bind-executeNonQuery.js +53 -53
- package/node_modules/ibm_db/test/bench-prepare-bindSync-execute-closeSync.js +50 -50
- package/node_modules/ibm_db/test/bench-prepare-bindSync-executeNonQuery.js +48 -48
- package/node_modules/ibm_db/test/bench-prepare-execute-closeSync.js +51 -51
- package/node_modules/ibm_db/test/bench-prepare-executeNonQuery.js +47 -47
- package/node_modules/ibm_db/test/bench-prepare-not.js +43 -43
- package/node_modules/ibm_db/test/bench-query-fetch.js +59 -59
- package/node_modules/ibm_db/test/bench-query-fetchAll.js +49 -49
- package/node_modules/ibm_db/test/bench-query-fetchAllSync.js +43 -43
- package/node_modules/ibm_db/test/bench-query.js +40 -40
- package/node_modules/ibm_db/test/bench-querySync-fetchArray.js +28 -28
- package/node_modules/ibm_db/test/bench-querySync.js +29 -29
- package/node_modules/ibm_db/test/common.d.ts +10 -10
- package/node_modules/ibm_db/test/common.js +127 -127
- package/node_modules/ibm_db/test/config.json +7 -7
- package/node_modules/ibm_db/test/config.zos.json +4 -4
- package/node_modules/ibm_db/test/data/sample1.txt +9 -9
- package/node_modules/ibm_db/test/data/trc.fmt +30114 -30114
- package/node_modules/ibm_db/test/nodeEE-leak-huge-query.js +152 -152
- package/node_modules/ibm_db/test/nodeEE-leak-multiple-query-multiple-connections.js +148 -148
- package/node_modules/ibm_db/test/nodeEE-leak-multiple-query-pool-connections.js +154 -154
- package/node_modules/ibm_db/test/nodeEE-leak-multiple-query.js +133 -133
- package/node_modules/ibm_db/test/nodeEE-stress-async-waterfall-multiple-connections.js +174 -174
- package/node_modules/ibm_db/test/nodeEE-stress-async-waterfall.js +169 -169
- package/node_modules/ibm_db/test/nodeEE-stress-mixed-query-multiple-connections.js +159 -159
- package/node_modules/ibm_db/test/nodeEE-stress-mixed-query.js +148 -148
- package/node_modules/ibm_db/test/odbc-bench.c +123 -123
- package/node_modules/ibm_db/test/perfTest.js +53 -53
- package/node_modules/ibm_db/test/quick-example.sh +30 -30
- package/node_modules/ibm_db/test/quick-example.ts +80 -80
- package/node_modules/ibm_db/test/run-bench.js +96 -96
- package/node_modules/ibm_db/test/run-nodeEE.js +132 -132
- package/node_modules/ibm_db/test/run-tests.js +132 -138
- package/node_modules/ibm_db/test/sql-cli.js +28 -28
- package/node_modules/ibm_db/test/test-all-data-types.js +109 -109
- package/node_modules/ibm_db/test/test-array-insert.js +178 -178
- package/node_modules/ibm_db/test/test-async-await.js +105 -105
- package/node_modules/ibm_db/test/test-attributes.js +34 -34
- package/node_modules/ibm_db/test/test-bad-pool-connection-prepare-execute.js +57 -57
- package/node_modules/ibm_db/test/test-basic-test.js +138 -138
- package/node_modules/ibm_db/test/test-binary-array-insert.js +73 -73
- package/node_modules/ibm_db/test/test-blob-from-file.js +90 -90
- package/node_modules/ibm_db/test/test-blob-insert.js +144 -144
- package/node_modules/ibm_db/test/test-blob-stream-insert.js +321 -299
- package/node_modules/ibm_db/test/test-blob-to-file.js +370 -370
- package/node_modules/ibm_db/test/test-block-fetch.js +364 -364
- package/node_modules/ibm_db/test/test-blocking-issue210.js +123 -123
- package/node_modules/ibm_db/test/test-call-async.js +64 -64
- package/node_modules/ibm_db/test/test-call-stmt.js +53 -53
- package/node_modules/ibm_db/test/test-cancel.js +703 -0
- package/node_modules/ibm_db/test/test-chinese-char.js +59 -59
- package/node_modules/ibm_db/test/test-connection.js +306 -0
- package/node_modules/ibm_db/test/test-date.js +32 -32
- package/node_modules/ibm_db/test/test-dbclob.js +93 -93
- package/node_modules/ibm_db/test/test-decimals.js +135 -135
- package/node_modules/ibm_db/test/test-describe-metadata.js +148 -0
- package/node_modules/ibm_db/test/test-executeFile.js +167 -167
- package/node_modules/ibm_db/test/test-executeFileSync.js +85 -85
- package/node_modules/ibm_db/test/test-fetch-apis.js +146 -146
- package/node_modules/ibm_db/test/test-fetchN.js +130 -130
- package/node_modules/ibm_db/test/test-getinfo.js +197 -197
- package/node_modules/ibm_db/test/test-ibm-db-issue14.js +58 -58
- package/node_modules/ibm_db/test/test-ibm-db-issue17.js +54 -54
- package/node_modules/ibm_db/test/test-ibm-db-issue18.js +54 -54
- package/node_modules/ibm_db/test/test-issue-1059-fetchAll-undefined.js +67 -67
- package/node_modules/ibm_db/test/test-issue-1080-array-blob-insert.js +40 -0
- package/node_modules/ibm_db/test/test-issue-54.js +39 -39
- package/node_modules/ibm_db/test/test-issue-get-column-value-2.js +44 -44
- package/node_modules/ibm_db/test/test-issue211.js +80 -80
- package/node_modules/ibm_db/test/test-issue253.js +39 -39
- package/node_modules/ibm_db/test/test-max-pool-size.js +96 -96
- package/node_modules/ibm_db/test/test-memory-leaks-new-objects.js +32 -32
- package/node_modules/ibm_db/test/test-multi-open-query-close.js +75 -75
- package/node_modules/ibm_db/test/test-param-put-data.js +713 -0
- package/node_modules/ibm_db/test/test-pool-idle-connection.js +72 -72
- package/node_modules/ibm_db/test/test-pool-operations.js +325 -0
- package/node_modules/ibm_db/test/test-pool-stale-connections.js +111 -111
- package/node_modules/ibm_db/test/test-pool-uncommited.js +33 -33
- package/node_modules/ibm_db/test/test-prepare-execute.js +339 -0
- package/node_modules/ibm_db/test/test-prepareSync-multiple-execution.js +93 -93
- package/node_modules/ibm_db/test/test-primary-foreign-keys.js +246 -0
- package/node_modules/ibm_db/test/test-procedures.js +243 -0
- package/node_modules/ibm_db/test/test-promise-all-data-types.js +42 -42
- package/node_modules/ibm_db/test/test-query-operations.js +405 -0
- package/node_modules/ibm_db/test/test-quick-example.js +25 -25
- package/node_modules/ibm_db/test/test-row-array-insert.js +167 -167
- package/node_modules/ibm_db/test/test-sp-array.js +54 -54
- package/node_modules/ibm_db/test/test-sp-dbc-6000.js +88 -88
- package/node_modules/ibm_db/test/test-sp-memleak.js +136 -136
- package/node_modules/ibm_db/test/test-sp-resultset-execute.js +269 -269
- package/node_modules/ibm_db/test/test-sp-resultset.js +228 -228
- package/node_modules/ibm_db/test/test-transactions.js +261 -0
- package/node_modules/ibm_db/test/test-typescript.js +48 -48
- package/node_modules/ibm_db/test/test-xml-datatype.js +70 -70
- package/node_modules/ibm_db/test/testWebApp.js +56 -56
- package/node_modules/ibm_db/test/trace +51 -51
- package/node_modules/ibm_db/test/typescript-apis-test.js +978 -978
- package/node_modules/ibm_db/test/webapp.html +17 -17
- package/node_modules/ibm_db/test/webapp.js +79 -79
- package/node_modules/ibm_db/typescript/README.md +28 -28
- package/node_modules/ibm_db/typescript/dist/Database.d.ts +26 -0
- package/node_modules/ibm_db/typescript/dist/ODBCStatement.d.ts +93 -0
- package/package.json +10 -6
- package/node_modules/ibm_db/test/disabled/test-binding-statement-rebinding.js +0 -59
- package/node_modules/ibm_db/test/disabled/test-open-dont-close.js +0 -12
- package/node_modules/ibm_db/test/disabled/test-param-select-with-booleans-only.js +0 -21
- package/node_modules/ibm_db/test/disabled/test-param-select-with-decimals-only.js +0 -20
- package/node_modules/ibm_db/test/disabled/test-param-select-with-null.js +0 -21
- package/node_modules/ibm_db/test/disabled/test-param-select-with-nulls-mixed.js +0 -23
- package/node_modules/ibm_db/test/disabled/test-param-select-with-numbers-mixed.js +0 -22
- package/node_modules/ibm_db/test/disabled/test-param-select-with-numbers-only.js +0 -24
- package/node_modules/ibm_db/test/disabled/test-param-select-with-strings-only.js +0 -23
- package/node_modules/ibm_db/test/disabled/test-param-select-with-unicode.js +0 -15
- package/node_modules/ibm_db/test/disabled/test-prepare-bind-execute-closeSync.js +0 -62
- package/node_modules/ibm_db/test/disabled/test-prepare-bind-execute-error.js +0 -49
- package/node_modules/ibm_db/test/disabled/test-prepare-bind-execute-long-string.js +0 -63
- package/node_modules/ibm_db/test/disabled/test-prepare-bind-executeNonQuery.js +0 -63
- package/node_modules/ibm_db/test/disabled/test-prepare-bindSync-execute-closeSync.js +0 -46
- package/node_modules/ibm_db/test/disabled/test-prepare-bindSync-executeNonQuery.js +0 -50
- package/node_modules/ibm_db/test/disabled/test-prepare.js +0 -34
- package/node_modules/ibm_db/test/disabled/test-prepareSync.js +0 -29
- package/node_modules/ibm_db/test/disabled/test-query-select-fetchAll.js +0 -23
- package/node_modules/ibm_db/test/disabled/test-query-select-fetchAllSync.js +0 -23
- package/node_modules/ibm_db/test/disabled/test-query-select-unicode.js +0 -15
- package/node_modules/ibm_db/test/disabled/test-querySync-select-unicode.js +0 -20
- package/node_modules/ibm_db/test/test-affected-rows.js +0 -55
- package/node_modules/ibm_db/test/test-bad-connection-string.js +0 -30
- package/node_modules/ibm_db/test/test-binding-connection-timeOut.js +0 -31
- package/node_modules/ibm_db/test/test-binding-statement-executeSync.js +0 -84
- package/node_modules/ibm_db/test/test-binding-transaction-commit.js +0 -79
- package/node_modules/ibm_db/test/test-binding-transaction-commitSync.js +0 -53
- package/node_modules/ibm_db/test/test-closed.js +0 -14
- package/node_modules/ibm_db/test/test-connection-object.js +0 -16
- package/node_modules/ibm_db/test/test-describe-column.js +0 -92
- package/node_modules/ibm_db/test/test-describe-database.js +0 -18
- package/node_modules/ibm_db/test/test-describe-table.js +0 -31
- package/node_modules/ibm_db/test/test-domains-open.js +0 -19
- package/node_modules/ibm_db/test/test-global-open-close.js +0 -11
- package/node_modules/ibm_db/test/test-instantiate-one-and-end.js +0 -9
- package/node_modules/ibm_db/test/test-multi-open-close.js +0 -45
- package/node_modules/ibm_db/test/test-multi-openSync-closeSync.js +0 -52
- package/node_modules/ibm_db/test/test-open-close.js +0 -29
- package/node_modules/ibm_db/test/test-open-connectTimeout.js +0 -33
- package/node_modules/ibm_db/test/test-openSync.js +0 -31
- package/node_modules/ibm_db/test/test-pool-close.js +0 -120
- package/node_modules/ibm_db/test/test-pool-connect.js +0 -36
- package/node_modules/ibm_db/test/test-pool-rollbackTransaction.js +0 -35
- package/node_modules/ibm_db/test/test-prepareSync-bad-sql.js +0 -34
- package/node_modules/ibm_db/test/test-promise-open-close.js +0 -33
- package/node_modules/ibm_db/test/test-query-create-table-fetchSync.js +0 -23
- package/node_modules/ibm_db/test/test-query-create-table.js +0 -12
- package/node_modules/ibm_db/test/test-query-drop-table.js +0 -13
- package/node_modules/ibm_db/test/test-query-insert.js +0 -38
- package/node_modules/ibm_db/test/test-query-select-fetch.js +0 -21
- package/node_modules/ibm_db/test/test-query-select-fetchMode-array.js +0 -17
- package/node_modules/ibm_db/test/test-query-select.js +0 -64
- package/node_modules/ibm_db/test/test-queryResult.js +0 -35
- package/node_modules/ibm_db/test/test-queryStream.js +0 -43
- package/node_modules/ibm_db/test/test-querySync-select-with-exception.js +0 -25
- package/node_modules/ibm_db/test/test-querySync-select.js +0 -28
- package/node_modules/ibm_db/test/test-require-and-end.js +0 -8
- package/node_modules/ibm_db/test/test-statement-close.js +0 -118
- package/node_modules/ibm_db/test/test-transaction-commit-sync.js +0 -54
- package/node_modules/ibm_db/test/test-transaction-commit.js +0 -79
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
// test file to test idle connection is getting dropped or not.
|
|
2
|
-
|
|
3
|
-
var ibmdb = require("../")
|
|
4
|
-
, pool = new ibmdb.Pool()
|
|
5
|
-
, assert = require("assert")
|
|
6
|
-
, common = require("./common.js")
|
|
7
|
-
, cn = common.connectionString
|
|
8
|
-
, starttime
|
|
9
|
-
, endtime
|
|
10
|
-
;
|
|
11
|
-
|
|
12
|
-
console.log("Trying to open a new connection at => " + getDateTime());
|
|
13
|
-
pool.open(cn, function (err,conn) {
|
|
14
|
-
if (err) console.log(err);
|
|
15
|
-
assert.equal(err, null);
|
|
16
|
-
console.log("Got new connection at => " + getDateTime());
|
|
17
|
-
conn.query('select 1 from sysibm.sysdummy1', function (err, data) {
|
|
18
|
-
if (err) console.log(err);
|
|
19
|
-
else console.log(data);
|
|
20
|
-
|
|
21
|
-
conn.close(function () {
|
|
22
|
-
console.log("Connection surrenderred to pool at " + getDateTime());
|
|
23
|
-
console.log('Now wait for 70 seconds and then access connection.');
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
//wait for 2 min then access connection.
|
|
27
|
-
setTimeout(function () {
|
|
28
|
-
starttime = getDateTime();
|
|
29
|
-
console.log("70 seconds elapesed, try to get connection from pool at ==> "+ starttime);
|
|
30
|
-
pool.open(cn, function (err,conn) {
|
|
31
|
-
if (err) return console.log(err);
|
|
32
|
-
endtime = getDateTime();
|
|
33
|
-
console.log("Got connection from pool at ==> " + endtime);
|
|
34
|
-
conn.query('select 1 from sysibm.sysdummy1', function (err, data) {
|
|
35
|
-
if (err) console.log(err);
|
|
36
|
-
else console.log(data);
|
|
37
|
-
|
|
38
|
-
pool.close(function () {
|
|
39
|
-
console.log('pool closed.');
|
|
40
|
-
assert(starttime, endtime);
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
}, 70 * 1000); //setTimeout 2 minute.
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
function getDateTime() {
|
|
50
|
-
|
|
51
|
-
var date = new Date();
|
|
52
|
-
|
|
53
|
-
var hour = date.getHours();
|
|
54
|
-
hour = (hour < 10 ? "0" : "") + hour;
|
|
55
|
-
|
|
56
|
-
var min = date.getMinutes();
|
|
57
|
-
min = (min < 10 ? "0" : "") + min;
|
|
58
|
-
|
|
59
|
-
var sec = date.getSeconds();
|
|
60
|
-
sec = (sec < 10 ? "0" : "") + sec;
|
|
61
|
-
|
|
62
|
-
var year = date.getFullYear();
|
|
63
|
-
|
|
64
|
-
var month = date.getMonth() + 1;
|
|
65
|
-
month = (month < 10 ? "0" : "") + month;
|
|
66
|
-
|
|
67
|
-
var day = date.getDate();
|
|
68
|
-
day = (day < 10 ? "0" : "") + day;
|
|
69
|
-
|
|
70
|
-
return year + "." + month + "." + day + " " + hour + ":" + min + ":" + sec;
|
|
71
|
-
}
|
|
72
|
-
|
|
1
|
+
// test file to test idle connection is getting dropped or not.
|
|
2
|
+
|
|
3
|
+
var ibmdb = require("../")
|
|
4
|
+
, pool = new ibmdb.Pool()
|
|
5
|
+
, assert = require("assert")
|
|
6
|
+
, common = require("./common.js")
|
|
7
|
+
, cn = common.connectionString
|
|
8
|
+
, starttime
|
|
9
|
+
, endtime
|
|
10
|
+
;
|
|
11
|
+
|
|
12
|
+
console.log("Trying to open a new connection at => " + getDateTime());
|
|
13
|
+
pool.open(cn, function (err,conn) {
|
|
14
|
+
if (err) console.log(err);
|
|
15
|
+
assert.equal(err, null);
|
|
16
|
+
console.log("Got new connection at => " + getDateTime());
|
|
17
|
+
conn.query('select 1 from sysibm.sysdummy1', function (err, data) {
|
|
18
|
+
if (err) console.log(err);
|
|
19
|
+
else console.log(data);
|
|
20
|
+
|
|
21
|
+
conn.close(function () {
|
|
22
|
+
console.log("Connection surrenderred to pool at " + getDateTime());
|
|
23
|
+
console.log('Now wait for 70 seconds and then access connection.');
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
//wait for 2 min then access connection.
|
|
27
|
+
setTimeout(function () {
|
|
28
|
+
starttime = getDateTime();
|
|
29
|
+
console.log("70 seconds elapesed, try to get connection from pool at ==> "+ starttime);
|
|
30
|
+
pool.open(cn, function (err,conn) {
|
|
31
|
+
if (err) return console.log(err);
|
|
32
|
+
endtime = getDateTime();
|
|
33
|
+
console.log("Got connection from pool at ==> " + endtime);
|
|
34
|
+
conn.query('select 1 from sysibm.sysdummy1', function (err, data) {
|
|
35
|
+
if (err) console.log(err);
|
|
36
|
+
else console.log(data);
|
|
37
|
+
|
|
38
|
+
pool.close(function () {
|
|
39
|
+
console.log('pool closed.');
|
|
40
|
+
assert(starttime, endtime);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
}, 70 * 1000); //setTimeout 2 minute.
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
function getDateTime() {
|
|
50
|
+
|
|
51
|
+
var date = new Date();
|
|
52
|
+
|
|
53
|
+
var hour = date.getHours();
|
|
54
|
+
hour = (hour < 10 ? "0" : "") + hour;
|
|
55
|
+
|
|
56
|
+
var min = date.getMinutes();
|
|
57
|
+
min = (min < 10 ? "0" : "") + min;
|
|
58
|
+
|
|
59
|
+
var sec = date.getSeconds();
|
|
60
|
+
sec = (sec < 10 ? "0" : "") + sec;
|
|
61
|
+
|
|
62
|
+
var year = date.getFullYear();
|
|
63
|
+
|
|
64
|
+
var month = date.getMonth() + 1;
|
|
65
|
+
month = (month < 10 ? "0" : "") + month;
|
|
66
|
+
|
|
67
|
+
var day = date.getDate();
|
|
68
|
+
day = (day < 10 ? "0" : "") + day;
|
|
69
|
+
|
|
70
|
+
return year + "." + month + "." + day + " " + hour + ":" + min + ":" + sec;
|
|
71
|
+
}
|
|
72
|
+
|
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
// Consolidated pool operations test: pool open/close, multiple connections,
|
|
2
|
+
// pool.close(), pool with transactions, pool with rollback, pool sync APIs.
|
|
3
|
+
// Replaces: test-pool-connect, test-pool-close, test-pool-rollbackTransaction.
|
|
4
|
+
|
|
5
|
+
var common = require("./common")
|
|
6
|
+
, ibmdb = require("../")
|
|
7
|
+
, assert = require("assert")
|
|
8
|
+
, cn = common.connectionString
|
|
9
|
+
;
|
|
10
|
+
|
|
11
|
+
var passed = 0, failed = 0;
|
|
12
|
+
|
|
13
|
+
function ok(label) { passed++; console.log(" PASS: " + label); }
|
|
14
|
+
function fail(label, detail) { failed++; console.log(" FAIL: " + label + " " + (detail || "")); }
|
|
15
|
+
|
|
16
|
+
main();
|
|
17
|
+
|
|
18
|
+
async function main() {
|
|
19
|
+
await testPoolOpenClose();
|
|
20
|
+
await testPoolMultipleConnections();
|
|
21
|
+
await testPoolCloseAll();
|
|
22
|
+
await testPoolTransaction();
|
|
23
|
+
await testPoolRollback();
|
|
24
|
+
await testPoolSetMaxSize();
|
|
25
|
+
await testPoolInitAsync();
|
|
26
|
+
await testPoolMultipleClose();
|
|
27
|
+
await testPoolSyncAPIs();
|
|
28
|
+
|
|
29
|
+
console.log("\n===== Pool Operations Tests: %d passed, %d failed =====", passed, failed);
|
|
30
|
+
process.exit(failed ? 1 : 0);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Basic pool open and close single connection
|
|
34
|
+
async function testPoolOpenClose() {
|
|
35
|
+
console.log("\n[testPoolOpenClose]");
|
|
36
|
+
var pool = new ibmdb.Pool();
|
|
37
|
+
return new Promise(function(resolve) {
|
|
38
|
+
pool.open(cn, function(err, conn) {
|
|
39
|
+
if (err) {
|
|
40
|
+
fail("pool open", err.message);
|
|
41
|
+
pool.close(function() { resolve(); });
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
try {
|
|
45
|
+
assert.ok(conn);
|
|
46
|
+
assert.equal(conn.connected, true);
|
|
47
|
+
ok("pool.open returns valid connection");
|
|
48
|
+
} catch(e) { fail("pool open verify", e.message); }
|
|
49
|
+
|
|
50
|
+
conn.close(function(err) {
|
|
51
|
+
try {
|
|
52
|
+
assert.equal(err, null);
|
|
53
|
+
ok("pool conn.close succeeds (returns to pool)");
|
|
54
|
+
} catch(e) { fail("pool conn.close", e.message); }
|
|
55
|
+
|
|
56
|
+
pool.close(function() {
|
|
57
|
+
ok("pool.close after single connection");
|
|
58
|
+
resolve();
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Open multiple connections from pool
|
|
66
|
+
async function testPoolMultipleConnections() {
|
|
67
|
+
console.log("\n[testPoolMultipleConnections]");
|
|
68
|
+
var pool = new ibmdb.Pool();
|
|
69
|
+
var connectCount = 5;
|
|
70
|
+
|
|
71
|
+
return new Promise(function(resolve) {
|
|
72
|
+
var connections = [];
|
|
73
|
+
var opened = 0;
|
|
74
|
+
var done = 0;
|
|
75
|
+
|
|
76
|
+
for (var x = 0; x < connectCount; x++) {
|
|
77
|
+
(function(idx) {
|
|
78
|
+
pool.open(cn, function(err, conn) {
|
|
79
|
+
done++;
|
|
80
|
+
if (err) {
|
|
81
|
+
if (done === 1) fail("pool multi open #" + idx, err.message);
|
|
82
|
+
if (done === connectCount) { pool.close(function() { resolve(); }); }
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
connections.push(conn);
|
|
86
|
+
opened++;
|
|
87
|
+
if (opened === connectCount) {
|
|
88
|
+
try {
|
|
89
|
+
assert.equal(connections.length, connectCount);
|
|
90
|
+
ok("pool opened " + connectCount + " connections");
|
|
91
|
+
} catch(e) { fail("pool multi count", e.message); }
|
|
92
|
+
pool.close(function() {
|
|
93
|
+
ok("pool.close after multiple connections");
|
|
94
|
+
resolve();
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
})(x);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// pool.close closes all connections
|
|
104
|
+
async function testPoolCloseAll() {
|
|
105
|
+
console.log("\n[testPoolCloseAll]");
|
|
106
|
+
var pool = new ibmdb.Pool();
|
|
107
|
+
|
|
108
|
+
return new Promise(function(resolve) {
|
|
109
|
+
pool.open(cn, function(err, conn) {
|
|
110
|
+
if (err) { fail("pool close all - open", err.message); resolve(); return; }
|
|
111
|
+
|
|
112
|
+
var data = conn.querySync("select 1 as C1 from sysibm.sysdummy1");
|
|
113
|
+
assert.deepEqual(data, [{ C1: 1 }]);
|
|
114
|
+
|
|
115
|
+
conn.close(function() {
|
|
116
|
+
// Connection returned to pool, now close pool entirely
|
|
117
|
+
pool.close(function() {
|
|
118
|
+
ok("pool.close releases all pooled connections");
|
|
119
|
+
resolve();
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// Transaction within pooled connection
|
|
127
|
+
async function testPoolTransaction() {
|
|
128
|
+
console.log("\n[testPoolTransaction]");
|
|
129
|
+
var pool = new ibmdb.Pool();
|
|
130
|
+
|
|
131
|
+
return new Promise(function(resolve) {
|
|
132
|
+
pool.open(cn, function(err, conn) {
|
|
133
|
+
if (err) { fail("pool txn - open", err.message); resolve(); return; }
|
|
134
|
+
|
|
135
|
+
conn.querySync("drop table pooltxn").toString();
|
|
136
|
+
conn.querySync("create table pooltxn (c1 int, c2 varchar(20))");
|
|
137
|
+
|
|
138
|
+
conn.beginTransaction(function(err) {
|
|
139
|
+
if (err) { fail("pool beginTransaction", err.message); resolve(); return; }
|
|
140
|
+
|
|
141
|
+
conn.querySync("insert into pooltxn values (1, 'pooled')");
|
|
142
|
+
conn.commitTransaction(function(err) {
|
|
143
|
+
if (err) { fail("pool commitTransaction", err.message); resolve(); return; }
|
|
144
|
+
|
|
145
|
+
var data = conn.querySync("select * from pooltxn");
|
|
146
|
+
try {
|
|
147
|
+
assert.deepEqual(data, [{ C1: 1, C2: 'pooled' }]);
|
|
148
|
+
ok("pool: commit persists data");
|
|
149
|
+
} catch(e) { fail("pool txn commit verify", e.message); }
|
|
150
|
+
|
|
151
|
+
conn.querySync("drop table pooltxn");
|
|
152
|
+
conn.close(function() {
|
|
153
|
+
pool.close(function() { resolve(); });
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// Rollback within pooled connection
|
|
162
|
+
async function testPoolRollback() {
|
|
163
|
+
console.log("\n[testPoolRollback]");
|
|
164
|
+
var pool = new ibmdb.Pool();
|
|
165
|
+
|
|
166
|
+
return new Promise(function(resolve) {
|
|
167
|
+
pool.open(cn, function(err, conn) {
|
|
168
|
+
if (err) { fail("pool rollback - open", err.message); resolve(); return; }
|
|
169
|
+
|
|
170
|
+
conn.querySync("drop table poolrb").toString();
|
|
171
|
+
conn.querySync("create table poolrb (c1 int, c2 varchar(20))");
|
|
172
|
+
|
|
173
|
+
conn.beginTransaction(function(err) {
|
|
174
|
+
if (err) { fail("pool beginTransaction rb", err.message); resolve(); return; }
|
|
175
|
+
|
|
176
|
+
conn.querySync("insert into poolrb values (5, 'will_rollback')");
|
|
177
|
+
var data = conn.querySync("select * from poolrb");
|
|
178
|
+
assert.equal(data.length, 1); // visible within txn
|
|
179
|
+
|
|
180
|
+
conn.rollbackTransaction(function(err) {
|
|
181
|
+
if (err) { fail("pool rollbackTransaction", err.message); resolve(); return; }
|
|
182
|
+
|
|
183
|
+
data = conn.querySync("select * from poolrb");
|
|
184
|
+
try {
|
|
185
|
+
assert.deepEqual(data, []);
|
|
186
|
+
ok("pool: rollback removes uncommitted data");
|
|
187
|
+
} catch(e) { fail("pool txn rollback verify", e.message); }
|
|
188
|
+
|
|
189
|
+
conn.querySync("drop table poolrb");
|
|
190
|
+
conn.close(function() {
|
|
191
|
+
pool.close(function() { resolve(); });
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// setMaxPoolSize
|
|
200
|
+
async function testPoolSetMaxSize() {
|
|
201
|
+
console.log("\n[testPoolSetMaxSize]");
|
|
202
|
+
var pool = new ibmdb.Pool();
|
|
203
|
+
try {
|
|
204
|
+
pool.setMaxPoolSize(3);
|
|
205
|
+
ok("setMaxPoolSize does not throw");
|
|
206
|
+
} catch(e) { fail("setMaxPoolSize", e.message); }
|
|
207
|
+
|
|
208
|
+
return new Promise(function(resolve) {
|
|
209
|
+
pool.open(cn, function(err, conn) {
|
|
210
|
+
if (err) { fail("pool maxSize open", err.message); resolve(); return; }
|
|
211
|
+
conn.close(function() {
|
|
212
|
+
pool.close(function() { resolve(); });
|
|
213
|
+
});
|
|
214
|
+
});
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
// pool.initAsync
|
|
219
|
+
async function testPoolInitAsync() {
|
|
220
|
+
console.log("\n[testPoolInitAsync]");
|
|
221
|
+
var pool = new ibmdb.Pool();
|
|
222
|
+
pool.setMaxPoolSize(3);
|
|
223
|
+
try {
|
|
224
|
+
await pool.initAsync(1, cn);
|
|
225
|
+
ok("pool.initAsync initializes pool");
|
|
226
|
+
} catch(e) {
|
|
227
|
+
// initAsync may fail on some configurations
|
|
228
|
+
console.log(" SKIP: pool.initAsync - " + e.message);
|
|
229
|
+
passed++;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
return new Promise(function(resolve) {
|
|
233
|
+
pool.open(cn, function(err, conn) {
|
|
234
|
+
if (err) { fail("pool after init open", err.message); resolve(); return; }
|
|
235
|
+
var data = conn.querySync("select 1 as C1 from sysibm.sysdummy1");
|
|
236
|
+
try {
|
|
237
|
+
assert.deepEqual(data, [{ C1: 1 }]);
|
|
238
|
+
ok("query on pool connection after initAsync");
|
|
239
|
+
} catch(e) { fail("query after initAsync", e.message); }
|
|
240
|
+
conn.close(function() {
|
|
241
|
+
pool.close(function() { resolve(); });
|
|
242
|
+
});
|
|
243
|
+
});
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
// Pool: close returns conn to pool, conn still usable, realClose terminates
|
|
248
|
+
async function testPoolMultipleClose() {
|
|
249
|
+
console.log("\n[testPoolMultipleClose]");
|
|
250
|
+
var pool = new ibmdb.Pool();
|
|
251
|
+
|
|
252
|
+
return new Promise(function(resolve) {
|
|
253
|
+
pool.open(cn, function(err, conn) {
|
|
254
|
+
if (err) { fail("pool multi-close open", err.message); resolve(); return; }
|
|
255
|
+
|
|
256
|
+
conn.close(function(err) {
|
|
257
|
+
if (err) { fail("pool first close", err.message); resolve(); return; }
|
|
258
|
+
// After close, conn is returned to pool — should still be queryable
|
|
259
|
+
assert.equal(conn.connected, true, "pool conn stays connected after close");
|
|
260
|
+
try {
|
|
261
|
+
var data = conn.querySync("select 1 as C1 from sysibm.sysdummy1");
|
|
262
|
+
assert.deepEqual(data, [{ C1: 1 }]);
|
|
263
|
+
ok("pool: conn still queryable after close (returned to pool)");
|
|
264
|
+
} catch(e) { fail("pool query after close", e.message); }
|
|
265
|
+
|
|
266
|
+
conn.close(function(err) {
|
|
267
|
+
if (err) { fail("pool second close", err.message); resolve(); return; }
|
|
268
|
+
ok("pool: second close succeeds");
|
|
269
|
+
|
|
270
|
+
// Get connection back and realClose it
|
|
271
|
+
pool.open(cn, function(err, conn2) {
|
|
272
|
+
if (err) { fail("pool reopen", err.message); resolve(); return; }
|
|
273
|
+
conn2.realClose(function(err) {
|
|
274
|
+
if (err) { fail("realClose", err.message); resolve(); return; }
|
|
275
|
+
// After realClose, query should fail
|
|
276
|
+
try {
|
|
277
|
+
conn2.querySync("select 1 from sysibm.sysdummy1");
|
|
278
|
+
fail("query after realClose should throw");
|
|
279
|
+
} catch(e) {
|
|
280
|
+
ok("pool: realClose terminates connection");
|
|
281
|
+
}
|
|
282
|
+
pool.close(function() { resolve(); });
|
|
283
|
+
});
|
|
284
|
+
});
|
|
285
|
+
});
|
|
286
|
+
});
|
|
287
|
+
});
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
// Pool: openSync and closeSync
|
|
292
|
+
async function testPoolSyncAPIs() {
|
|
293
|
+
console.log("\n[testPoolSyncAPIs]");
|
|
294
|
+
var pool = new ibmdb.Pool();
|
|
295
|
+
try {
|
|
296
|
+
var conn = pool.openSync(cn);
|
|
297
|
+
assert.ok(conn);
|
|
298
|
+
var data = conn.querySync("select 1 as C1 from sysibm.sysdummy1");
|
|
299
|
+
assert.deepEqual(data, [{ C1: 1 }]);
|
|
300
|
+
ok("pool.openSync works");
|
|
301
|
+
|
|
302
|
+
// closeSync returns conn to pool — should still be queryable
|
|
303
|
+
conn.closeSync();
|
|
304
|
+
data = conn.querySync("select 2 as C2 from sysibm.sysdummy1");
|
|
305
|
+
assert.deepEqual(data, [{ C2: 2 }]);
|
|
306
|
+
ok("pool: conn queryable after closeSync (returned to pool)");
|
|
307
|
+
|
|
308
|
+
conn.closeSync();
|
|
309
|
+
// Get conn back and realCloseSync it
|
|
310
|
+
conn = pool.openSync(cn);
|
|
311
|
+
var rc = conn.realCloseSync();
|
|
312
|
+
assert.ok(rc === true || rc === undefined);
|
|
313
|
+
ok("pool: realCloseSync terminates connection");
|
|
314
|
+
|
|
315
|
+
try {
|
|
316
|
+
conn.querySync("select 3 from sysibm.sysdummy1");
|
|
317
|
+
fail("query after realCloseSync should throw");
|
|
318
|
+
} catch(e2) {
|
|
319
|
+
ok("pool: query after realCloseSync throws");
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
pool.closeSync();
|
|
323
|
+
ok("pool.closeSync works");
|
|
324
|
+
} catch(e) { fail("pool sync APIs", e.message); }
|
|
325
|
+
}
|