@@ -187,6 +187,54 @@ describe('Pool', () => {
187187 } ) ;
188188 } ) ;
189189
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+
190238 it ( 'destroys resource when key was purged' , ( done ) => {
191239 let counter = 0 ;
192240 const address = ServerAddress . fromUrl ( 'bolt://localhost:7687' ) ;
0 commit comments