node-postgres/packages/pg/test/integration/client/statement_timeout-tests.js
2020-04-10 11:31:03 -05:00

85 lines
2.1 KiB
JavaScript

'use strict'
var helper = require('./test-helper')
var Client = helper.Client
var suite = new helper.Suite()
var conInfo = helper.config
function getConInfo(override) {
return Object.assign({}, conInfo, override)
}
function getStatementTimeout(conf, cb) {
var client = new Client(conf)
client.connect(
assert.success(function () {
client.query(
'SHOW statement_timeout',
assert.success(function (res) {
var statementTimeout = res.rows[0].statement_timeout
cb(statementTimeout)
client.end()
})
)
})
)
}
if (!helper.args.native) {
// statement_timeout is not supported with the native client
suite.test('No default statement_timeout ', function (done) {
getConInfo()
getStatementTimeout({}, function (res) {
assert.strictEqual(res, '0') // 0 = no timeout
done()
})
})
suite.test('statement_timeout integer is used', function (done) {
var conf = getConInfo({
statement_timeout: 3000,
})
getStatementTimeout(conf, function (res) {
assert.strictEqual(res, '3s')
done()
})
})
suite.test('statement_timeout float is used', function (done) {
var conf = getConInfo({
statement_timeout: 3000.7,
})
getStatementTimeout(conf, function (res) {
assert.strictEqual(res, '3s')
done()
})
})
suite.test('statement_timeout string is used', function (done) {
var conf = getConInfo({
statement_timeout: '3000',
})
getStatementTimeout(conf, function (res) {
assert.strictEqual(res, '3s')
done()
})
})
suite.test('statement_timeout actually cancels long running queries', function (done) {
var conf = getConInfo({
statement_timeout: '10', // 10ms to keep tests running fast
})
var client = new Client(conf)
client.connect(
assert.success(function () {
client.query('SELECT pg_sleep( 1 )', function (error) {
client.end()
assert.strictEqual(error.code, '57014') // query_cancelled
done()
})
})
)
})
}