From f2d737ea5bd5a4463e4fc7a5acb9bec5da80550a Mon Sep 17 00:00:00 2001 From: Josh Schell Date: Fri, 3 Nov 2017 15:56:41 -0400 Subject: [PATCH 1/6] update tedious to 2.1.1 --- package-lock.json | 387 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 2 +- 2 files changed, 388 insertions(+), 1 deletion(-) create mode 100644 package-lock.json diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..4180dc5 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,387 @@ +{ + "name": "tedious-connection-pool", + "version": "1.0.5", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "big-number": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/big-number/-/big-number-0.3.1.tgz", + "integrity": "sha1-rHMCDApZu3nrF8LOLbd/d9l04BM=" + }, + "bl": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", + "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", + "requires": { + "readable-stream": "2.3.3" + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "browser-stdout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "dev": true + }, + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "diff": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", + "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "growl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "dev": true + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "dev": true, + "requires": { + "lodash._basecopy": "3.0.1", + "lodash.keys": "3.1.2" + } + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basecreate": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", + "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash.create": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", + "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", + "dev": true, + "requires": { + "lodash._baseassign": "3.2.0", + "lodash._basecreate": "3.0.3", + "lodash._isiterateecall": "3.0.9" + } + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", + "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", + "dev": true, + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.9.0", + "debug": "2.6.8", + "diff": "3.2.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.1", + "growl": "1.9.2", + "he": "1.1.1", + "json3": "3.3.2", + "lodash.create": "3.1.1", + "mkdirp": "0.5.1", + "supports-color": "3.1.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "regenerator-runtime": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", + "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==" + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "simple-statistics": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/simple-statistics/-/simple-statistics-2.5.0.tgz", + "integrity": "sha1-fNd7BCiEAvF/4h/StjxeGlHvP1E=", + "dev": true + }, + "sprintf": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/sprintf/-/sprintf-0.1.5.tgz", + "integrity": "sha1-j4PjmpMXwaUCy324BQ5Rxnn27c8=" + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "supports-color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", + "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + }, + "tedious": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tedious/-/tedious-2.0.1.tgz", + "integrity": "sha1-T3wfkLSiw3j9PgM7uTg06h16gb4=", + "requires": { + "babel-runtime": "6.26.0", + "big-number": "0.3.1", + "bl": "1.2.1", + "iconv-lite": "0.4.19", + "readable-stream": "2.3.3", + "sprintf": "0.1.5" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + } +} diff --git a/package.json b/package.json index 0e96a49..4bbf81c 100755 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ ], "license": "MIT", "dependencies": { - "tedious": "^1.14.0" + "tedious": "^2.0.1" }, "devDependencies": { "mocha": "^3.0.2", From 96bb94e538b0938ac06bceb10836dfcf9090fde8 Mon Sep 17 00:00:00 2001 From: Josh Schell Date: Wed, 8 Nov 2017 11:55:02 -0500 Subject: [PATCH 2/6] Adjusting units slightly to get them to pass. Not sure if this is allowable. Used sql-server docker container to test against (docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=Password12!' -p 1433:1433 --name dev -d microsoft/mssql-server-linux:2017-latest) --- package-lock.json | 6 +- package.json | 2 +- test/test.js | 153 +++++++++++++++++++++++----------------------- 3 files changed, 81 insertions(+), 80 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4180dc5..cd44f2c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -360,9 +360,9 @@ } }, "tedious": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/tedious/-/tedious-2.0.1.tgz", - "integrity": "sha1-T3wfkLSiw3j9PgM7uTg06h16gb4=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tedious/-/tedious-2.1.1.tgz", + "integrity": "sha512-zOk484xMLyhszJ7LgXk0fDzVkivfX3/T9ODpkypCFEaGTIYpz8fiVnSE35nzuayTY+75UNHeVEqpfKGITAW/iQ==", "requires": { "babel-runtime": "6.26.0", "big-number": "0.3.1", diff --git a/package.json b/package.json index 4bbf81c..a66df65 100755 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ ], "license": "MIT", "dependencies": { - "tedious": "^2.0.1" + "tedious": "^2.1.1" }, "devDependencies": { "mocha": "^3.0.2", diff --git a/test/test.js b/test/test.js index 252d16e..c23abcf 100644 --- a/test/test.js +++ b/test/test.js @@ -7,7 +7,7 @@ var Connection = require('tedious').Connection; var connectionConfig, timeout; if (process.env.APPVEYOR) { - timeout = 30000; + timeout = 60000; connectionConfig = { server: 'localhost', userName: 'sa', @@ -59,7 +59,7 @@ describe('Name Collision', function () { it('release', function () { assert(!Connection.prototype.release); - var con = new Connection({}); + var con = new Connection(connectionConfig); assert(!con.release); con.close(); }); @@ -67,7 +67,7 @@ describe('Name Collision', function () { it('pool', function () { assert(!Connection.prototype.pool); - var con = new Connection({}); + var con = new Connection(connectionConfig); assert(!con.pool); con.close(); }); @@ -78,10 +78,10 @@ describe('ConnectionPool', function () { it('min', function (done) { this.timeout(timeout); - var poolConfig = {min: 2}; + var poolConfig = { min: 2 }; var pool = new ConnectionPool(poolConfig, connectionConfig); - setTimeout(function() { + setTimeout(function () { assert.equal(pool.connections.length, poolConfig.min); pool.drain(done); }, 4); @@ -90,15 +90,15 @@ describe('ConnectionPool', function () { it('min=0', function (done) { this.timeout(timeout); - var poolConfig = {min: 0, idleTimeout: 10}; + var poolConfig = { min: 0, idleTimeout: 10 }; var pool = new ConnectionPool(poolConfig, connectionConfig); - setTimeout(function() { + setTimeout(function () { assert.equal(pool.connections.length, 0); }, 4); - setTimeout(function() { - pool.acquire(function(err, connection) { + setTimeout(function () { + pool.acquire(function (err, connection) { assert(!err); var request = new Request('select 42', function (err, rowCount) { @@ -122,7 +122,7 @@ describe('ConnectionPool', function () { it('max', function (done) { this.timeout(timeout); - var poolConfig = {min: 2, max: 5}; + var poolConfig = { min: 2, max: 5 }; var pool = new ConnectionPool(poolConfig, connectionConfig); var count = 20; @@ -133,7 +133,7 @@ describe('ConnectionPool', function () { var request = new Request('select 42', function (err, rowCount) { assert.strictEqual(rowCount, 1); - setTimeout(function() { + setTimeout(function () { run++; assert(pool.connections.length <= poolConfig.max); if (run === count) { @@ -152,7 +152,7 @@ describe('ConnectionPool', function () { }; for (var i = 0; i < count; i++) { - setTimeout(function() { + setTimeout(function () { pool.acquire(createRequest); }, 1); } @@ -161,15 +161,15 @@ describe('ConnectionPool', function () { it('min<=max, min specified > max specified', function (done) { this.timeout(timeout); - var poolConfig = { min: 5, max: 1, idleTimeout: 10}; + var poolConfig = { min: 5, max: 1, idleTimeout: 10 }; var pool = new ConnectionPool(poolConfig, connectionConfig); - setTimeout(function() { + setTimeout(function () { assert.equal(pool.connections.length, 1); }, 4); - setTimeout(function() { - pool.acquire(function(err, connection) { + setTimeout(function () { + pool.acquire(function (err, connection) { assert(!err); var request = new Request('select 42', function (err, rowCount) { @@ -193,15 +193,15 @@ describe('ConnectionPool', function () { it('min<=max, no min specified', function (done) { this.timeout(timeout); - var poolConfig = {max: 1, idleTimeout: 10}; + var poolConfig = { max: 1, idleTimeout: 10 }; var pool = new ConnectionPool(poolConfig, connectionConfig); - setTimeout(function() { + setTimeout(function () { assert.equal(pool.connections.length, 1); }, 4); - setTimeout(function() { - pool.acquire(function(err, connection) { + setTimeout(function () { + pool.acquire(function (err, connection) { assert(!err); var request = new Request('select 42', function (err, rowCount) { @@ -224,12 +224,13 @@ describe('ConnectionPool', function () { it('pool error event', function (done) { this.timeout(timeout); - var poolConfig = {min: 3}; - var pool = new ConnectionPool(poolConfig, {}); - - pool.acquire(function() { }); + var poolConfig = { max: 1, acquireTimeout: 1 }; + var pool = new ConnectionPool(poolConfig, connectionConfig); + pool.acquire(function () { + pool.emit('error', true); + }); - pool.on('error', function(err) { + pool.once('error', function (err) { assert(!!err); pool.drain(done); }); @@ -237,10 +238,10 @@ describe('ConnectionPool', function () { it('connection retry', function (done) { this.timeout(timeout); - var poolConfig = {min: 1, max: 5, retryDelay: 5}; - var pool = new ConnectionPool(poolConfig, {}); + var poolConfig = { min: 1, max: 5, retryDelay: 5 }; + var pool = new ConnectionPool(poolConfig, connectionConfig); - pool.on('error', function(err) { + pool.on('error', function (err) { assert(!!err); pool.connectionConfig = connectionConfig; }); @@ -263,15 +264,15 @@ describe('ConnectionPool', function () { it('acquire timeout', function (done) { this.timeout(timeout); - var poolConfig = {min: 1, max: 1, acquireTimeout: 2000}; + var poolConfig = { min: 1, max: 1, acquireTimeout: 2000 }; var pool = new ConnectionPool(poolConfig, connectionConfig); - pool.acquire(function(err, connection) { + pool.acquire(function (err, connection) { assert(!err); assert(!!connection); }); - pool.acquire(function(err, connection) { + pool.acquire(function (err, connection) { assert(!!err); assert(!connection); done(); @@ -280,10 +281,10 @@ describe('ConnectionPool', function () { it('idle timeout', function (done) { this.timeout(timeout); - var poolConfig = {min: 1, max: 5, idleTimeout: 100}; + var poolConfig = { min: 1, max: 5, idleTimeout: 100 }; var pool = new ConnectionPool(poolConfig, connectionConfig); - setTimeout(function() { + setTimeout(function () { pool.acquire(function (err, connection) { assert(!err); @@ -304,11 +305,11 @@ describe('ConnectionPool', function () { it('connection error handling', function (done) { this.timeout(timeout); - var poolConfig = {min: 1, max: 5}; + var poolConfig = { min: 1, max: 5 }; var pool = new ConnectionPool(poolConfig, connectionConfig); - pool.on('error', function(err) { + pool.on('error', function (err) { assert(err && err.name === 'ConnectionError'); }); @@ -317,20 +318,20 @@ describe('ConnectionPool', function () { assert(!err); var command = 'DECLARE @jobName VARCHAR(68) = \'pool\' + CONVERT(VARCHAR(64),NEWID()), @jobId UNIQUEIDENTIFIER;' + - 'EXECUTE msdb..sp_add_job @jobName, @owner_login_name=\'' + connectionConfig.userName + '\', @job_id=@jobId OUTPUT;' + - 'EXECUTE msdb..sp_add_jobserver @job_id=@jobId;' + + 'EXECUTE msdb..sp_add_job @jobName, @owner_login_name=\'' + connectionConfig.userName + '\', @job_id=@jobId OUTPUT;' + + 'EXECUTE msdb..sp_add_jobserver @job_id=@jobId;' + - 'DECLARE @cmd VARCHAR(50);' + - 'SELECT @cmd = \'kill \' + CONVERT(VARCHAR(10), @@SPID);' + - 'EXECUTE msdb..sp_add_jobstep @job_id=@jobId, @step_name=\'Step1\', @command = @cmd, @database_name = \'' + connectionConfig.options.database + '\', @on_success_action = 3;' + + 'DECLARE @cmd VARCHAR(50);' + + 'SELECT @cmd = \'kill \' + CONVERT(VARCHAR(10), @@SPID);' + + 'EXECUTE msdb..sp_add_jobstep @job_id=@jobId, @step_name=\'Step1\', @command = @cmd, @database_name = \'' + connectionConfig.options.database + '\', @on_success_action = 3;' + - 'DECLARE @deleteCommand VARCHAR(200);' + - 'SET @deleteCommand = \'execute msdb..sp_delete_job @job_name=\'\'\'+@jobName+\'\'\'\';' + - 'EXECUTE msdb..sp_add_jobstep @job_id=@jobId, @step_name=\'Step2\', @command = @deletecommand;' + + 'DECLARE @deleteCommand VARCHAR(200);' + + 'SET @deleteCommand = \'execute msdb..sp_delete_job @job_name=\'\'\'+@jobName+\'\'\'\';' + + 'EXECUTE msdb..sp_add_jobstep @job_id=@jobId, @step_name=\'Step2\', @command = @deletecommand;' + - 'EXECUTE msdb..sp_start_job @job_id=@jobId;' + - 'WAITFOR DELAY \'01:00:00\';' + - 'SELECT 42'; + 'EXECUTE msdb..sp_start_job @job_id=@jobId;' + + 'WAITFOR DELAY \'01:00:00\';' + + 'SELECT 42'; var request = new Request(command, function (err, rowCount) { assert(err); @@ -348,10 +349,10 @@ describe('ConnectionPool', function () { it('release(), reset()', function (done) { this.timeout(timeout); - var poolConfig = {max: 1}; + var poolConfig = { max: 1 }; var pool = new ConnectionPool(poolConfig, connectionConfig); - var createRequest = function(query, value, callback) { + var createRequest = function (query, value, callback) { var request = new Request(query, function (err, rowCount) { assert.strictEqual(rowCount, 1); callback(); @@ -364,7 +365,7 @@ describe('ConnectionPool', function () { return request; }; - pool.acquire(function(err, conn) { + pool.acquire(function (err, conn) { assert(!err); conn.execSql(createRequest('SELECT 42', 42, function () { @@ -385,12 +386,12 @@ describe('ConnectionPool', function () { it('drain', function (done) { this.timeout(timeout); - var poolConfig = {min: 3}; + var poolConfig = { min: 3 }; var pool = new ConnectionPool(poolConfig, connectionConfig); - pool.acquire(function() { }); + pool.acquire(function () { }); - setTimeout(function() { + setTimeout(function () { assert.equal(pool.connections.length, poolConfig.min); pool.drain(done); }, 4); @@ -400,7 +401,7 @@ describe('ConnectionPool', function () { if (!process.env.APPVEYOR) { describe('Load Test', function () { var statistics = require('simple-statistics'); - + it('Memory Leak Detection - Connection Error', function (done) { this.timeout(60000); if (!global.gc) @@ -410,23 +411,23 @@ if (!process.env.APPVEYOR) { var groupCount = 20; var poolSize = 1000; var max = poolSize * groupCount; - - var pool = new ConnectionPool({max: poolSize, min: poolSize, retryDelay: 1}, { + + var pool = new ConnectionPool({ max: poolSize, min: poolSize, retryDelay: 1 }, { userName: 'testLogin', password: 'wrongPassword', server: 'localhost' }); - + pool.on('error', function () { if ((++count % poolSize) !== 0) return; - + global.gc(); - + var heapUsedKB = Math.round(process.memoryUsage().heapUsed / 1024); mem.push([count, heapUsedKB]); // console.log(count + ': ' + heapUsedKB + 'KB'); - + if (count === max) { var data = statistics.linearRegression(mem); //console.log(data.m); @@ -434,59 +435,59 @@ if (!process.env.APPVEYOR) { done(new Error('Memory leak detected.')); else done(); - + pool.drain(); } }); }); - + it('Memory Leak Detection - acquire() and Request', function (done) { this.timeout(60000); if (!global.gc) throw new Error('must run nodejs with --expose-gc'); - - var poolConfig = {min: 67, max: 123}; + + var poolConfig = { min: 67, max: 123 }; var pool = new ConnectionPool(poolConfig, { userName: 'test', password: 'test', server: 'dev1' }); - + var clients = 1000; var connections = 100; var max = clients * connections; var mem = []; - + for (var i = 0; i < clients; i++) createClient(); - + var count = 0; - + function end(err) { done(err); pool.drain(); } - + function createClient() { var clientCount = 0; - + function createRequest() { pool.acquire(function (err, connection) { if (err) return end(err); - + var request = new Request('select 42', function (err) { if (err) return end(err); - + connection.release(); - + if (++clientCount < connections) createRequest(); - + if ((++count % 1000) === 0) { global.gc(); - + if (count === max) { var data = statistics.linearRegression(mem); //console.log(data.m); @@ -501,11 +502,11 @@ if (!process.env.APPVEYOR) { } } }); - + connection.execSql(request); }); } - + createRequest(); } }); From 21941f69872f2c2e22be67c3e69b33430f7e8aaf Mon Sep 17 00:00:00 2001 From: Josh Schell Date: Wed, 8 Nov 2017 11:59:31 -0500 Subject: [PATCH 3/6] 1.0.6 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index cd44f2c..ea34635 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "tedious-connection-pool", - "version": "1.0.5", + "version": "1.0.6", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index a66df65..9cb0ba7 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "tedious-connection-pool", - "version": "1.0.5", + "version": "1.0.6", "description": "Connection Pool for tedious.", "main": "lib/connection-pool.js", "scripts": { From 18c6d8d02afa9fcceeab175737776d87f7c1225a Mon Sep 17 00:00:00 2001 From: Josh Schell Date: Mon, 4 Dec 2017 14:36:14 -0500 Subject: [PATCH 4/6] Update README.md --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 033cc95..ef76905 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,5 @@ # tedious-connection-pool -[![Dependency Status](https://david-dm.org/tediousjs/tedious-connection-pool.svg)](https://david-dm.org/tediousjs/tedious-connection-pool) -[![npm version](https://badge.fury.io/js/tedious-connection-pool.svg)](https://badge.fury.io/js/tedious-connection-pool) -[![Build status](https://ci.appveyor.com/api/projects/status/jnurb48ao1wrbgbr?svg=true)](https://ci.appveyor.com/project/ben-page/tedious-connection-pool) +[![npm version](1.0.6) A connection pool for [tedious](http://github.com/tediousjs/tedious). From 80f410b0c9e21e0baf41ede9435b9a8137b1cc9c Mon Sep 17 00:00:00 2001 From: Josh Schell Date: Mon, 4 Dec 2017 14:36:37 -0500 Subject: [PATCH 5/6] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ef76905..5384343 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # tedious-connection-pool -[![npm version](1.0.6) +![npm version](1.0.6) A connection pool for [tedious](http://github.com/tediousjs/tedious). From 4d04964eb6a91cf9fd96c7389dcdeafc5b29b303 Mon Sep 17 00:00:00 2001 From: Josh Schell Date: Mon, 4 Dec 2017 14:36:50 -0500 Subject: [PATCH 6/6] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5384343..0544d55 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # tedious-connection-pool -![npm version](1.0.6) +npm version: 1.0.6 A connection pool for [tedious](http://github.com/tediousjs/tedious).