You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.6 KiB
48 lines
1.6 KiB
'use strict' |
|
const co = require('co') |
|
const expect = require('expect.js') |
|
|
|
const describe = require('mocha').describe |
|
const it = require('mocha').it |
|
const path = require('path') |
|
|
|
const Pool = require('../') |
|
|
|
describe('lifetime timeout', () => { |
|
it('connection lifetime should expire and remove the client', (done) => { |
|
const pool = new Pool({ maxLifetimeSeconds: 1 }) |
|
pool.query('SELECT NOW()') |
|
pool.on('remove', () => { |
|
console.log('expired while idle - on-remove event') |
|
expect(pool.expiredCount).to.equal(0) |
|
expect(pool.totalCount).to.equal(0) |
|
done() |
|
}) |
|
}) |
|
it('connection lifetime should expire and remove the client after the client is done working', (done) => { |
|
const pool = new Pool({ maxLifetimeSeconds: 1 }) |
|
pool.query('SELECT pg_sleep(1.4)') |
|
pool.on('remove', () => { |
|
console.log('expired while busy - on-remove event') |
|
expect(pool.expiredCount).to.equal(0) |
|
expect(pool.totalCount).to.equal(0) |
|
done() |
|
}) |
|
}) |
|
it( |
|
'can remove expired clients and recreate them', |
|
co.wrap(function* () { |
|
const pool = new Pool({ maxLifetimeSeconds: 1 }) |
|
let query = pool.query('SELECT pg_sleep(1.4)') |
|
expect(pool.expiredCount).to.equal(0) |
|
expect(pool.totalCount).to.equal(1) |
|
yield query |
|
yield new Promise((resolve) => setTimeout(resolve, 100)) |
|
expect(pool.expiredCount).to.equal(0) |
|
expect(pool.totalCount).to.equal(0) |
|
yield pool.query('SELECT NOW()') |
|
expect(pool.expiredCount).to.equal(0) |
|
expect(pool.totalCount).to.equal(1) |
|
}) |
|
) |
|
})
|
|
|