@@ -5,15 +5,14 @@ const pg = helper.pg
5
5
// first make pool hold 2 clients
6
6
pg . defaults . poolSize = 2
7
7
8
- const pool = new pg . Pool ( )
9
-
10
8
const suite = new helper . Suite ( )
11
9
suite . test ( 'connecting to invalid port' , ( cb ) => {
12
10
const pool = new pg . Pool ( { port : 13801 } )
13
11
pool . connect ( ) . catch ( e => cb ( ) )
14
12
} )
15
13
16
14
suite . test ( 'errors emitted on pool' , ( cb ) => {
15
+ const pool = new pg . Pool ( )
17
16
// get first client
18
17
pool . connect ( assert . success ( function ( client , done ) {
19
18
client . id = 1
@@ -48,3 +47,45 @@ suite.test('errors emitted on pool', (cb) => {
48
47
} )
49
48
} ) )
50
49
} )
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