@@ -187,6 +187,54 @@ describe('Pool', () => {
187
187
} ) ;
188
188
} ) ;
189
189
190
+ it ( 'clears out resource counters even after purge' , ( done ) => {
191
+ // Given a pool that allocates
192
+ let counter = 0 ;
193
+ const address1 = ServerAddress . fromUrl ( 'bolt://localhost:7687' ) ;
194
+ const address2 = ServerAddress . fromUrl ( 'bolt://localhost:7688' ) ;
195
+ const pool = new Pool ( ( server , release ) => Promise . resolve ( new Resource ( server , counter ++ , release ) ) ,
196
+ res => {
197
+ res . destroyed = true ;
198
+ return true ;
199
+ }
200
+ ) ;
201
+
202
+ // When
203
+ const p00 = pool . acquire ( address1 ) ;
204
+ const p01 = pool . acquire ( address1 ) ;
205
+ const p10 = pool . acquire ( address2 ) ;
206
+ const p11 = pool . acquire ( address2 ) ;
207
+ const p12 = pool . acquire ( address2 ) ;
208
+ const pall = Promise . all ( [ p00 , p01 , p10 , p11 , p12 ] ) . then ( values => {
209
+ expect ( pool . activeResourceCount ( address1 ) ) . toEqual ( 2 ) ;
210
+ expect ( pool . activeResourceCount ( address2 ) ) . toEqual ( 3 ) ;
211
+
212
+ expect ( pool . has ( address1 ) ) . toBeTruthy ( ) ;
213
+ expect ( pool . has ( address2 ) ) . toBeTruthy ( ) ;
214
+
215
+ values [ 0 ] . close ( ) ;
216
+
217
+ expect ( pool . activeResourceCount ( address1 ) ) . toEqual ( 1 ) ;
218
+
219
+ pool . purge ( address1 ) ;
220
+
221
+ expect ( pool . activeResourceCount ( address1 ) ) . toEqual ( 1 ) ;
222
+
223
+ values [ 1 ] . close ( ) ;
224
+
225
+ expect ( pool . activeResourceCount ( address1 ) ) . toEqual ( 0 ) ;
226
+ expect ( pool . activeResourceCount ( address2 ) ) . toEqual ( 3 ) ;
227
+
228
+ expect ( values [ 0 ] . destroyed ) . toBeTruthy ( ) ;
229
+ expect ( values [ 1 ] . destroyed ) . toBeTruthy ( ) ;
230
+
231
+ expect ( pool . has ( address1 ) ) . toBeFalsy ( ) ;
232
+ expect ( pool . has ( address2 ) ) . toBeTruthy ( ) ;
233
+
234
+ done ( ) ;
235
+ } ) ;
236
+ } ) ;
237
+
190
238
it ( 'destroys resource when key was purged' , ( done ) => {
191
239
let counter = 0 ;
192
240
const address = ServerAddress . fromUrl ( 'bolt://localhost:7687' ) ;
0 commit comments