@@ -23,11 +23,12 @@ describe('Pool', function() {
23
23
it ( 'allocates if pool is empty' , function ( ) {
24
24
// Given
25
25
var counter = 0 ;
26
+ var key = "bolt://localhost:7687" ;
26
27
var pool = new Pool ( function ( release ) { return new Resource ( counter ++ , release ) } ) ;
27
28
28
29
// When
29
- var r0 = pool . acquire ( ) ;
30
- var r1 = pool . acquire ( ) ;
30
+ var r0 = pool . acquire ( key ) ;
31
+ var r1 = pool . acquire ( key ) ;
31
32
32
33
// Then
33
34
expect ( r0 . id ) . toBe ( 0 ) ;
@@ -37,22 +38,45 @@ describe('Pool', function() {
37
38
it ( 'pools if resources are returned' , function ( ) {
38
39
// Given a pool that allocates
39
40
var counter = 0 ;
41
+ var key = "bolt://localhost:7687" ;
40
42
var pool = new Pool ( function ( release ) { return new Resource ( counter ++ , release ) } ) ;
41
43
42
44
// 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 ) ;
46
48
47
49
// Then
48
50
expect ( r0 . id ) . toBe ( 0 ) ;
49
51
expect ( r1 . id ) . toBe ( 0 ) ;
50
52
} ) ;
51
53
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
+
52
75
it ( 'frees if pool reaches max size' , function ( ) {
53
76
// Given a pool that tracks destroyed resources
54
77
var counter = 0 ,
55
78
destroyed = [ ] ;
79
+ var key = "bolt://localhost:7687" ;
56
80
var pool = new Pool (
57
81
function ( release ) { return new Resource ( counter ++ , release ) } ,
58
82
function ( resource ) { destroyed . push ( resource ) ; } ,
@@ -61,12 +85,12 @@ describe('Pool', function() {
61
85
) ;
62
86
63
87
// 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 ) ;
70
94
71
95
// Then
72
96
expect ( destroyed . length ) . toBe ( 1 ) ;
@@ -77,6 +101,7 @@ describe('Pool', function() {
77
101
// Given a pool that allocates
78
102
var counter = 0 ,
79
103
destroyed = [ ] ;
104
+ var key = "bolt://localhost:7687" ;
80
105
var pool = new Pool (
81
106
function ( release ) { return new Resource ( counter ++ , release ) } ,
82
107
function ( resource ) { destroyed . push ( resource ) ; } ,
@@ -85,10 +110,10 @@ describe('Pool', function() {
85
110
) ;
86
111
87
112
// 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 ) ;
92
117
93
118
// Then
94
119
expect ( destroyed . length ) . toBe ( 2 ) ;
@@ -97,8 +122,8 @@ describe('Pool', function() {
97
122
} ) ;
98
123
} ) ;
99
124
100
- function Resource ( id , release ) {
125
+ function Resource ( id , release ) {
101
126
var self = this ;
102
127
this . id = id ;
103
- this . close = function ( ) { release ( self ) ; } ;
128
+ this . close = function ( key ) { release ( key , self ) ; } ;
104
129
}
0 commit comments