Skip to content

Commit 93fe0c7

Browse files
committed
Add tests for query callbacks after connection-level errors
1 parent 9da3a85 commit 93fe0c7

File tree

1 file changed

+43
-2
lines changed

1 file changed

+43
-2
lines changed

test/integration/connection-pool/error-tests.js

+43-2
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,14 @@ const pg = helper.pg
55
// first make pool hold 2 clients
66
pg.defaults.poolSize = 2
77

8-
const pool = new pg.Pool()
9-
108
const suite = new helper.Suite()
119
suite.test('connecting to invalid port', (cb) => {
1210
const pool = new pg.Pool({ port: 13801 })
1311
pool.connect().catch(e => cb())
1412
})
1513

1614
suite.test('errors emitted on pool', (cb) => {
15+
const pool = new pg.Pool()
1716
// get first client
1817
pool.connect(assert.success(function (client, done) {
1918
client.id = 1
@@ -48,3 +47,45 @@ suite.test('errors emitted on pool', (cb) => {
4847
})
4948
}))
5049
})
50+
51+
suite.test('connection-level errors cause queued queries to fail', (cb) => {
52+
const pool = new pg.Pool()
53+
pool.connect(assert.success((client, done) => {
54+
client.query('SELECT pg_terminate_backend(pg_backend_pid())', assert.calls((err) => {
55+
assert.equal(err.code, '57P01')
56+
}))
57+
58+
pool.once('error', assert.calls((err, brokenClient) => {
59+
assert.equal(client, brokenClient)
60+
}))
61+
62+
client.query('SELECT 1', assert.calls((err) => {
63+
assert.equal(err.code, 'EPIPE')
64+
65+
done()
66+
pool.end()
67+
cb()
68+
}))
69+
}))
70+
})
71+
72+
suite.test('connection-level errors cause future queries to fail', (cb) => {
73+
const pool = new pg.Pool()
74+
pool.connect(assert.success((client, done) => {
75+
client.query('SELECT pg_terminate_backend(pg_backend_pid())', assert.calls((err) => {
76+
assert.equal(err.code, '57P01')
77+
}))
78+
79+
pool.once('error', assert.calls((err, brokenClient) => {
80+
assert.equal(client, brokenClient)
81+
82+
client.query('SELECT 1', assert.calls((err) => {
83+
assert.equal(err.message, 'Client has encountered a connection error and is not queryable')
84+
85+
done()
86+
pool.end()
87+
cb()
88+
}))
89+
}))
90+
}))
91+
})

0 commit comments

Comments
 (0)