Skip to content

Commit 2c6a932

Browse files
committed
fix tests for postgres >= v9.2.0
1 parent 22a9f76 commit 2c6a932

File tree

4 files changed

+53
-29
lines changed

4 files changed

+53
-29
lines changed

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@
2222
"buffer-writer": "1.0.0"
2323
},
2424
"devDependencies": {
25-
"jshint": "1.1.0"
25+
"jshint": "1.1.0",
26+
"semver": "~1.1.4"
2627
},
2728
"scripts": {
2829
"test": "make test-all connectionString=pg://postgres@localhost:5432/postgres",

test/integration/client/query-error-handling-tests.js

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,26 @@ test('error during query execution', function() {
55
var client = new Client(helper.args);
66
client.connect(assert.success(function() {
77
var sleepQuery = 'select pg_sleep(5)';
8-
client.query(sleepQuery, assert.calls(function(err, result) {
9-
assert(err);
10-
client.end();
11-
}));
12-
var client2 = new Client(helper.args);
13-
client2.connect(assert.success(function() {
14-
var killIdleQuery = "SELECT procpid, (SELECT pg_terminate_backend(procpid)) AS killed FROM pg_stat_activity WHERE current_query = $1";
15-
client2.query(killIdleQuery, [sleepQuery], assert.calls(function(err, res) {
16-
assert.ifError(err);
17-
assert.equal(res.rowCount, 1);
18-
client2.end();
19-
assert.emits(client2, 'end');
8+
var pidColName = 'procpid'
9+
var queryColName = 'current_query';
10+
helper.versionGTE(client, '9.2.0', assert.success(function(isGreater) {
11+
if(isGreater) {
12+
pidColName = 'pid';
13+
queryColName = 'query';
14+
}
15+
client.query(sleepQuery, assert.calls(function(err, result) {
16+
assert(err);
17+
client.end();
18+
}));
19+
var client2 = new Client(helper.args);
20+
client2.connect(assert.success(function() {
21+
var killIdleQuery = "SELECT " + pidColName + ", (SELECT pg_terminate_backend(" + pidColName + ")) AS killed FROM pg_stat_activity WHERE " + queryColName + " = $1";
22+
client2.query(killIdleQuery, [sleepQuery], assert.calls(function(err, res) {
23+
assert.ifError(err);
24+
assert.equal(res.rowCount, 1);
25+
client2.end();
26+
assert.emits(client2, 'end');
27+
}));
2028
}));
2129
}));
2230
}));

test/integration/connection-pool/error-tests.js

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,31 @@ pg = pg;
55
//first make pool hold 2 clients
66
pg.defaults.poolSize = 2;
77

8-
var killIdleQuery = 'SELECT procpid, (SELECT pg_terminate_backend(procpid)) AS killed FROM pg_stat_activity WHERE current_query LIKE \'<IDLE>\'';
98

109
//get first client
1110
pg.connect(helper.config, assert.success(function(client, done) {
1211
client.id = 1;
13-
pg.connect(helper.config, assert.success(function(client2, done2) {
14-
client2.id = 2;
15-
done2();
16-
//subscribe to the pg error event
17-
assert.emits(pg, 'error', function(error, brokenClient) {
18-
assert.ok(error);
19-
assert.ok(brokenClient);
20-
assert.equal(client.id, brokenClient.id);
21-
});
22-
//kill the connection from client
23-
client2.query(killIdleQuery, assert.success(function(res) {
24-
//check to make sure client connection actually was killed
25-
assert.lengthIs(res.rows, 1);
26-
pg.end();
12+
pg.connect(helper.config, assert.success(function(client2, done2) {
13+
client2.id = 2;
14+
var pidColName = 'procpid'
15+
helper.versionGTE(client2, '9.2.0', assert.success(function(isGreater) {
16+
if(isGreater) {
17+
pidColName = 'pid';
18+
}
19+
var killIdleQuery = 'SELECT ' + pidColName + ', (SELECT pg_terminate_backend(' + pidColName + ')) AS killed FROM pg_stat_activity WHERE state = $1';
20+
done2();
21+
//subscribe to the pg error event
22+
assert.emits(pg, 'error', function(error, brokenClient) {
23+
assert.ok(error);
24+
assert.ok(brokenClient);
25+
assert.equal(client.id, brokenClient.id);
26+
});
27+
//kill the connection from client
28+
client2.query(killIdleQuery, ['idle'], assert.success(function(res) {
29+
//check to make sure client connection actually was killed
30+
assert.lengthIs(res.rows, 1);
31+
pg.end();
32+
}));
33+
}));
2734
}));
28-
}));
2935
}));

test/integration/test-helper.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,15 @@ helper.client = function() {
1313
return client;
1414
};
1515

16+
var semver = require('semver');
17+
helper.versionGTE = function(client, versionString, callback) {
18+
client.query('SELECT version()', assert.calls(function(err, result) {
19+
if(err) return callback(err);
20+
var version = result.rows[0].version.split(' ')[1];
21+
return callback(null, semver.gte(version, versionString));
22+
}));
23+
};
24+
1625
//export parent helper stuffs
1726
module.exports = helper;
1827

0 commit comments

Comments
 (0)