19
19
20
20
var neo4j = require ( "../../lib/v1" ) ;
21
21
var boltkit = require ( './boltkit' ) ;
22
- describe ( 'routing driver ' , function ( ) {
22
+ describe ( 'routing driver ' , function ( ) {
23
+ var originalTimeout ;
24
+
25
+ beforeAll ( function ( ) {
26
+ originalTimeout = jasmine . DEFAULT_TIMEOUT_INTERVAL ;
27
+ jasmine . DEFAULT_TIMEOUT_INTERVAL = 10000 ;
28
+ } ) ;
29
+
30
+ afterAll ( function ( ) {
31
+ jasmine . DEFAULT_TIMEOUT_INTERVAL = originalTimeout ;
32
+ } ) ;
23
33
24
34
it ( 'should discover server' , function ( done ) {
25
35
if ( ! boltkit . BoltKitSupport ) {
@@ -34,21 +44,21 @@ describe('routing driver ', function() {
34
44
var driver = neo4j . driver ( "bolt+routing://127.0.0.1:9001" , neo4j . auth . basic ( "neo4j" , "neo4j" ) ) ;
35
45
// When
36
46
var session = driver . session ( ) ;
37
- session . run ( "MATCH (n) RETURN n.name" ) . then ( function ( ) {
47
+ session . run ( "MATCH (n) RETURN n.name" ) . then ( function ( ) {
38
48
39
- session . close ( ) ;
40
- // Then
41
- expect ( driver . _pool . has ( '127.0.0.1:9001' ) ) . toBeTruthy ( ) ;
42
- expect ( driver . _clusterView . routers . toArray ( ) ) . toEqual ( [ "127.0.0.1:9001" , "127.0.0.1:9002" , "127.0.0.1:9003" ] ) ;
43
- expect ( driver . _clusterView . readers . toArray ( ) ) . toEqual ( [ "127.0.0.1:9002" , "127.0.0.1:9003" ] ) ;
44
- expect ( driver . _clusterView . writers . toArray ( ) ) . toEqual ( [ "127.0.0.1:9001" ] ) ;
49
+ session . close ( ) ;
50
+ // Then
51
+ expect ( driver . _pool . has ( '127.0.0.1:9001' ) ) . toBeTruthy ( ) ;
52
+ expect ( driver . _clusterView . routers . toArray ( ) ) . toEqual ( [ "127.0.0.1:9001" , "127.0.0.1:9002" , "127.0.0.1:9003" ] ) ;
53
+ expect ( driver . _clusterView . readers . toArray ( ) ) . toEqual ( [ "127.0.0.1:9002" , "127.0.0.1:9003" ] ) ;
54
+ expect ( driver . _clusterView . writers . toArray ( ) ) . toEqual ( [ "127.0.0.1:9001" ] ) ;
45
55
46
- driver . close ( ) ;
47
- server . exit ( function ( code ) {
48
- expect ( code ) . toEqual ( 0 ) ;
49
- done ( ) ;
50
- } ) ;
56
+ driver . close ( ) ;
57
+ server . exit ( function ( code ) {
58
+ expect ( code ) . toEqual ( 0 ) ;
59
+ done ( ) ;
51
60
} ) ;
61
+ } ) ;
52
62
} ) ;
53
63
} ) ;
54
64
@@ -65,11 +75,11 @@ describe('routing driver ', function() {
65
75
var driver = neo4j . driver ( "bolt+routing://127.0.0.1:9001" , neo4j . auth . basic ( "neo4j" , "neo4j" ) ) ;
66
76
// When
67
77
var session = driver . session ( ) ;
68
- session . run ( "MATCH (n) RETURN n.name" ) . then ( function ( ) {
78
+ session . run ( "MATCH (n) RETURN n.name" ) . then ( function ( ) {
69
79
70
80
// Then
71
- expect ( driver . _clusterView . routers . toArray ( ) ) . toEqual ( [ "127.0.0.1:9004" , "127.0.0.1:9002" , "127.0.0.1:9003" ] ) ;
72
- expect ( driver . _clusterView . readers . toArray ( ) ) . toEqual ( [ "127.0.0.1:9005" , "127.0.0.1:9003" ] ) ;
81
+ expect ( driver . _clusterView . routers . toArray ( ) ) . toEqual ( [ "127.0.0.1:9004" , "127.0.0.1:9002" , "127.0.0.1:9003" ] ) ;
82
+ expect ( driver . _clusterView . readers . toArray ( ) ) . toEqual ( [ "127.0.0.1:9005" , "127.0.0.1:9003" ] ) ;
73
83
expect ( driver . _clusterView . writers . toArray ( ) ) . toEqual ( [ "127.0.0.1:9001" ] ) ;
74
84
75
85
driver . close ( ) ;
@@ -135,7 +145,9 @@ describe('routing driver ', function() {
135
145
expect ( code ) . toEqual ( 0 ) ;
136
146
done ( ) ;
137
147
} ) ;
138
- } ) . catch ( function ( err ) { console . log ( err ) } ) ;
148
+ } ) . catch ( function ( err ) {
149
+ console . log ( err )
150
+ } ) ;
139
151
} ) ;
140
152
} ) ;
141
153
@@ -153,7 +165,7 @@ describe('routing driver ', function() {
153
165
var driver = neo4j . driver ( "bolt+routing://127.0.0.1:9001" , neo4j . auth . basic ( "neo4j" , "neo4j" ) ) ;
154
166
// When
155
167
var session = driver . session ( neo4j . session . READ ) ;
156
- session . run ( "MATCH (n) RETURN n.name" ) . then ( function ( res ) {
168
+ session . run ( "MATCH (n) RETURN n.name" ) . then ( function ( res ) {
157
169
158
170
session . close ( ) ;
159
171
@@ -175,6 +187,56 @@ describe('routing driver ', function() {
175
187
} ) ;
176
188
} ) ;
177
189
190
+ fit ( 'should pick first available route-server' , function ( done ) {
191
+ if ( ! boltkit . BoltKitSupport ) {
192
+ done ( ) ;
193
+ return ;
194
+ }
195
+ // Given
196
+ var kit = new boltkit . BoltKit ( ) ;
197
+ var seedServer = kit . start ( './test/resources/boltkit/short_ttl.script' , 9000 ) ;
198
+ var nextRouter = kit . start ( './test/resources/boltkit/acquire_endpoints.script' , 9003 ) ;
199
+ var readServer1 = kit . start ( './test/resources/boltkit/read_server.script' , 9004 ) ;
200
+ var readServer2 = kit . start ( './test/resources/boltkit/read_server.script' , 9005 ) ;
201
+
202
+ kit . run ( function ( ) {
203
+ var driver = neo4j . driver ( "bolt+routing://127.0.0.1:9000" , neo4j . auth . basic ( "neo4j" , "neo4j" ) ) ;
204
+ //driver.onError = console.log;
205
+ // When
206
+ var session = driver . session ( neo4j . session . READ ) ;
207
+ session . run ( "MATCH (n) RETURN n.name" ) . then ( function ( res ) {
208
+ // Then
209
+ expect ( res . records [ 0 ] . get ( 'n.name' ) ) . toEqual ( 'Bob' ) ;
210
+ expect ( res . records [ 1 ] . get ( 'n.name' ) ) . toEqual ( 'Alice' ) ;
211
+ expect ( res . records [ 2 ] . get ( 'n.name' ) ) . toEqual ( 'Tina' ) ;
212
+ session . close ( ) ;
213
+
214
+ session = driver . session ( neo4j . session . READ ) ;
215
+ session . run ( "MATCH (n) RETURN n.name" ) . then ( function ( res ) {
216
+ // Then
217
+ expect ( res . records [ 0 ] . get ( 'n.name' ) ) . toEqual ( 'Bob' ) ;
218
+ expect ( res . records [ 1 ] . get ( 'n.name' ) ) . toEqual ( 'Alice' ) ;
219
+ expect ( res . records [ 2 ] . get ( 'n.name' ) ) . toEqual ( 'Tina' ) ;
220
+ session . close ( ) ;
221
+ driver . close ( ) ;
222
+ seedServer . exit ( function ( code1 ) {
223
+ nextRouter . exit ( function ( code2 ) {
224
+ readServer1 . exit ( function ( code3 ) {
225
+ readServer2 . exit ( function ( code4 ) {
226
+ expect ( code1 ) . toEqual ( 0 ) ;
227
+ expect ( code2 ) . toEqual ( 0 ) ;
228
+ expect ( code3 ) . toEqual ( 0 ) ;
229
+ expect ( code4 ) . toEqual ( 0 ) ;
230
+ done ( ) ;
231
+ } ) ;
232
+ } ) ;
233
+ } ) ;
234
+ } ) ;
235
+ } ) ;
236
+ } ) ;
237
+ } ) ;
238
+ } ) ;
239
+
178
240
it ( 'should round-robin among read servers' , function ( done ) {
179
241
if ( ! boltkit . BoltKitSupport ) {
180
242
done ( ) ;
@@ -262,7 +324,7 @@ describe('routing driver ', function() {
262
324
var driver = neo4j . driver ( "bolt+routing://127.0.0.1:9001" , neo4j . auth . basic ( "neo4j" , "neo4j" ) ) ;
263
325
// When
264
326
var session = driver . session ( neo4j . session . WRITE ) ;
265
- session . run ( "CREATE (n {name:'Bob'})" ) . then ( function ( ) {
327
+ session . run ( "CREATE (n {name:'Bob'})" ) . then ( function ( ) {
266
328
267
329
// Then
268
330
driver . close ( ) ;
@@ -354,7 +416,7 @@ describe('routing driver ', function() {
354
416
var driver = neo4j . driver ( "bolt+routing://127.0.0.1:9001" , neo4j . auth . basic ( "neo4j" , "neo4j" ) ) ;
355
417
// When
356
418
var session = driver . session ( neo4j . session . READ ) ;
357
- session . run ( "MATCH (n) RETURN n.name" ) . then ( function ( ) {
419
+ session . run ( "MATCH (n) RETURN n.name" ) . then ( function ( ) {
358
420
359
421
// Then
360
422
expect ( driver . _clusterView . routers . toArray ( ) ) . toEqual ( [ '127.0.0.1:9001' , '127.0.0.1:9002' , '127.0.0.1:9003' ] ) ;
@@ -386,7 +448,7 @@ describe('routing driver ', function() {
386
448
var driver = neo4j . driver ( "bolt+routing://127.0.0.1:9001" , neo4j . auth . basic ( "neo4j" , "neo4j" ) ) ;
387
449
// When
388
450
var session = driver . session ( neo4j . session . READ ) ;
389
- session . run ( "MATCH (n) RETURN n.name" ) . catch ( function ( ) {
451
+ session . run ( "MATCH (n) RETURN n.name" ) . catch ( function ( ) {
390
452
session . close ( ) ;
391
453
// Then
392
454
expect ( driver . _pool . has ( '127.0.0.1:9001' ) ) . toBeTruthy ( ) ;
@@ -419,7 +481,7 @@ describe('routing driver ', function() {
419
481
var driver = neo4j . driver ( "bolt+routing://127.0.0.1:9001" , neo4j . auth . basic ( "neo4j" , "neo4j" ) ) ;
420
482
// When
421
483
var session = driver . session ( neo4j . session . READ ) ;
422
- session . run ( "MATCH (n) RETURN n.name" ) . catch ( function ( err ) {
484
+ session . run ( "MATCH (n) RETURN n.name" ) . catch ( function ( err ) {
423
485
session . close ( ) ;
424
486
// Then
425
487
expect ( driver . _pool . has ( '127.0.0.1:9001' ) ) . toBeTruthy ( ) ;
@@ -429,9 +491,9 @@ describe('routing driver ', function() {
429
491
expect ( driver . _clusterView . writers . toArray ( ) ) . toEqual ( [ '127.0.0.1:9007' , '127.0.0.1:9008' ] ) ;
430
492
driver . close ( ) ;
431
493
seedServer . exit ( function ( code ) {
432
- expect ( code ) . toEqual ( 0 ) ;
433
- done ( ) ;
434
- } ) ;
494
+ expect ( code ) . toEqual ( 0 ) ;
495
+ done ( ) ;
496
+ } ) ;
435
497
} ) ;
436
498
} ) ;
437
499
} ) ;
@@ -483,7 +545,7 @@ describe('routing driver ', function() {
483
545
expect ( err . code ) . toEqual ( neo4j . error . SERVICE_UNAVAILABLE ) ;
484
546
session . close ( ) ;
485
547
driver . close ( ) ;
486
- server . exit ( function ( code ) {
548
+ server . exit ( function ( code ) {
487
549
expect ( code ) . toEqual ( 0 ) ;
488
550
done ( ) ;
489
551
} ) ;
@@ -507,7 +569,7 @@ describe('routing driver ', function() {
507
569
var session = driver . session ( ) ;
508
570
session . run ( "CREATE ()" ) . catch ( function ( err ) {
509
571
//the server at 9007 should have been removed
510
- expect ( driver . _clusterView . writers . toArray ( ) ) . toEqual ( [ '127.0.0.1:9008' ] ) ;
572
+ expect ( driver . _clusterView . writers . toArray ( ) ) . toEqual ( [ '127.0.0.1:9008' ] ) ;
511
573
expect ( err . code ) . toEqual ( neo4j . error . SESSION_EXPIRED ) ;
512
574
session . close ( ) ;
513
575
driver . close ( ) ;
@@ -541,7 +603,7 @@ describe('routing driver ', function() {
541
603
542
604
tx . commit ( ) . catch ( function ( err ) {
543
605
//the server at 9007 should have been removed
544
- expect ( driver . _clusterView . writers . toArray ( ) ) . toEqual ( [ '127.0.0.1:9008' ] ) ;
606
+ expect ( driver . _clusterView . writers . toArray ( ) ) . toEqual ( [ '127.0.0.1:9008' ] ) ;
545
607
expect ( err . code ) . toEqual ( neo4j . error . SESSION_EXPIRED ) ;
546
608
session . close ( ) ;
547
609
driver . close ( ) ;
0 commit comments