UNPKG

1.59 kBJavaScriptView Raw
1'use strict'
2const co = require('co')
3const expect = require('expect.js')
4
5const describe = require('mocha').describe
6const it = require('mocha').it
7const path = require('path')
8
9const Pool = require('../')
10
11describe('lifetime timeout', () => {
12 it('connection lifetime should expire and remove the client', (done) => {
13 const pool = new Pool({ maxLifetimeSeconds: 1 })
14 pool.query('SELECT NOW()')
15 pool.on('remove', () => {
16 console.log('expired while idle - on-remove event')
17 expect(pool.expiredCount).to.equal(0)
18 expect(pool.totalCount).to.equal(0)
19 done()
20 })
21 })
22 it('connection lifetime should expire and remove the client after the client is done working', (done) => {
23 const pool = new Pool({ maxLifetimeSeconds: 1 })
24 pool.query('SELECT pg_sleep(1.4)')
25 pool.on('remove', () => {
26 console.log('expired while busy - on-remove event')
27 expect(pool.expiredCount).to.equal(0)
28 expect(pool.totalCount).to.equal(0)
29 done()
30 })
31 })
32 it(
33 'can remove expired clients and recreate them',
34 co.wrap(function* () {
35 const pool = new Pool({ maxLifetimeSeconds: 1 })
36 let query = pool.query('SELECT pg_sleep(1.4)')
37 expect(pool.expiredCount).to.equal(0)
38 expect(pool.totalCount).to.equal(1)
39 yield query
40 yield new Promise((resolve) => setTimeout(resolve, 100))
41 expect(pool.expiredCount).to.equal(0)
42 expect(pool.totalCount).to.equal(0)
43 yield pool.query('SELECT NOW()')
44 expect(pool.expiredCount).to.equal(0)
45 expect(pool.totalCount).to.equal(1)
46 })
47 )
48})