@@ -23,11 +23,12 @@ describe('Pool', function() {
2323 it ( 'allocates if pool is empty' , function ( ) {
2424 // Given
2525 var counter = 0 ;
26+ var key = "bolt://localhost:7687" ;
2627 var pool = new Pool ( function ( release ) { return new Resource ( counter ++ , release ) } ) ;
2728
2829 // When
29- var r0 = pool . acquire ( ) ;
30- var r1 = pool . acquire ( ) ;
30+ var r0 = pool . acquire ( key ) ;
31+ var r1 = pool . acquire ( key ) ;
3132
3233 // Then
3334 expect ( r0 . id ) . toBe ( 0 ) ;
@@ -37,22 +38,45 @@ describe('Pool', function() {
3738 it ( 'pools if resources are returned' , function ( ) {
3839 // Given a pool that allocates
3940 var counter = 0 ;
41+ var key = "bolt://localhost:7687" ;
4042 var pool = new Pool ( function ( release ) { return new Resource ( counter ++ , release ) } ) ;
4143
4244 // When
43- var r0 = pool . acquire ( ) ;
44- r0 . close ( ) ;
45- var r1 = pool . acquire ( ) ;
45+ var r0 = pool . acquire ( key ) ;
46+ r0 . close ( key ) ;
47+ var r1 = pool . acquire ( key ) ;
4648
4749 // Then
4850 expect ( r0 . id ) . toBe ( 0 ) ;
4951 expect ( r1 . id ) . toBe ( 0 ) ;
5052 } ) ;
5153
54+ it ( 'handles multiple keys' , function ( ) {
55+ // Given a pool that allocates
56+ var counter = 0 ;
57+ var key1 = "bolt://localhost:7687" ;
58+ var key2 = "bolt://localhost:7688" ;
59+ var pool = new Pool ( function ( release ) { return new Resource ( counter ++ , release ) } ) ;
60+
61+ // When
62+ var r0 = pool . acquire ( key1 ) ;
63+ var r1 = pool . acquire ( key2 ) ;
64+ r0 . close ( key1 ) ;
65+ var r2 = pool . acquire ( key1 ) ;
66+ var r3 = pool . acquire ( key2 ) ;
67+
68+ // Then
69+ expect ( r0 . id ) . toBe ( 0 ) ;
70+ expect ( r1 . id ) . toBe ( 1 ) ;
71+ expect ( r2 . id ) . toBe ( 0 ) ;
72+ expect ( r3 . id ) . toBe ( 2 ) ;
73+ } ) ;
74+
5275 it ( 'frees if pool reaches max size' , function ( ) {
5376 // Given a pool that tracks destroyed resources
5477 var counter = 0 ,
5578 destroyed = [ ] ;
79+ var key = "bolt://localhost:7687" ;
5680 var pool = new Pool (
5781 function ( release ) { return new Resource ( counter ++ , release ) } ,
5882 function ( resource ) { destroyed . push ( resource ) ; } ,
@@ -61,12 +85,12 @@ describe('Pool', function() {
6185 ) ;
6286
6387 // When
64- var r0 = pool . acquire ( ) ;
65- var r1 = pool . acquire ( ) ;
66- var r2 = pool . acquire ( ) ;
67- r0 . close ( ) ;
68- r1 . close ( ) ;
69- r2 . close ( ) ;
88+ var r0 = pool . acquire ( key ) ;
89+ var r1 = pool . acquire ( key ) ;
90+ var r2 = pool . acquire ( key ) ;
91+ r0 . close ( key ) ;
92+ r1 . close ( key ) ;
93+ r2 . close ( key ) ;
7094
7195 // Then
7296 expect ( destroyed . length ) . toBe ( 1 ) ;
@@ -77,6 +101,7 @@ describe('Pool', function() {
77101 // Given a pool that allocates
78102 var counter = 0 ,
79103 destroyed = [ ] ;
104+ var key = "bolt://localhost:7687" ;
80105 var pool = new Pool (
81106 function ( release ) { return new Resource ( counter ++ , release ) } ,
82107 function ( resource ) { destroyed . push ( resource ) ; } ,
@@ -85,10 +110,10 @@ describe('Pool', function() {
85110 ) ;
86111
87112 // When
88- var r0 = pool . acquire ( ) ;
89- var r1 = pool . acquire ( ) ;
90- r0 . close ( ) ;
91- r1 . close ( ) ;
113+ var r0 = pool . acquire ( key ) ;
114+ var r1 = pool . acquire ( key ) ;
115+ r0 . close ( key ) ;
116+ r1 . close ( key ) ;
92117
93118 // Then
94119 expect ( destroyed . length ) . toBe ( 2 ) ;
@@ -97,8 +122,8 @@ describe('Pool', function() {
97122 } ) ;
98123} ) ;
99124
100- function Resource ( id , release ) {
125+ function Resource ( id , release ) {
101126 var self = this ;
102127 this . id = id ;
103- this . close = function ( ) { release ( self ) ; } ;
128+ this . close = function ( key ) { release ( key , self ) ; } ;
104129}
0 commit comments