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.
54 lines
1.7 KiB
54 lines
1.7 KiB
const Pool = require('../') |
|
|
|
const expect = require('expect.js') |
|
const net = require('net') |
|
|
|
describe('releasing clients', () => { |
|
it('removes a client which cannot be queried', async () => { |
|
// make a pool w/ only 1 client |
|
const pool = new Pool({ max: 1 }) |
|
expect(pool.totalCount).to.eql(0) |
|
const client = await pool.connect() |
|
expect(pool.totalCount).to.eql(1) |
|
expect(pool.idleCount).to.eql(0) |
|
// reach into the client and sever its connection |
|
client.connection.end() |
|
|
|
// wait for the client to error out |
|
const err = await new Promise((resolve) => client.once('error', resolve)) |
|
expect(err).to.be.ok() |
|
expect(pool.totalCount).to.eql(1) |
|
expect(pool.idleCount).to.eql(0) |
|
|
|
// try to return it to the pool - this removes it because its broken |
|
client.release() |
|
expect(pool.totalCount).to.eql(0) |
|
expect(pool.idleCount).to.eql(0) |
|
|
|
// make sure pool still works |
|
const { rows } = await pool.query('SELECT NOW()') |
|
expect(rows).to.have.length(1) |
|
await pool.end() |
|
}) |
|
|
|
it('removes a client which is ending', async () => { |
|
// make a pool w/ only 1 client |
|
const pool = new Pool({ max: 1 }) |
|
expect(pool.totalCount).to.eql(0) |
|
const client = await pool.connect() |
|
expect(pool.totalCount).to.eql(1) |
|
expect(pool.idleCount).to.eql(0) |
|
// end the client gracefully (but you shouldn't do this with pooled clients) |
|
client.end() |
|
|
|
// try to return it to the pool |
|
client.release() |
|
expect(pool.totalCount).to.eql(0) |
|
expect(pool.idleCount).to.eql(0) |
|
|
|
// make sure pool still works |
|
const { rows } = await pool.query('SELECT NOW()') |
|
expect(rows).to.have.length(1) |
|
await pool.end() |
|
}) |
|
})
|
|
|