'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() }) }) ) }) }