1 | 'use strict'
|
2 | const co = require('co')
|
3 | const expect = require('expect.js')
|
4 |
|
5 | const describe = require('mocha').describe
|
6 | const it = require('mocha').it
|
7 | const path = require('path')
|
8 |
|
9 | const Pool = require('../')
|
10 |
|
11 | describe('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 | })
|