@@ -81,6 +81,37 @@ describe('routing driver ', function() {
8181 } ) ;
8282 } ) ;
8383
84+ it ( 'should discover new servers using subscribe' , function ( done ) {
85+ if ( ! boltkit . BoltKitSupport ) {
86+ done ( ) ;
87+ return ;
88+ }
89+ // Given
90+ var kit = new boltkit . BoltKit ( ) ;
91+ var server = kit . start ( './test/resources/boltkit/discover_new_servers.script' , 9001 ) ;
92+
93+ kit . run ( function ( ) {
94+ var driver = neo4j . driver ( "bolt+routing://127.0.0.1:9001" , neo4j . auth . basic ( "neo4j" , "neo4j" ) ) ;
95+ // When
96+ var session = driver . session ( ) ;
97+ session . run ( "MATCH (n) RETURN n.name" ) . subscribe ( {
98+ onCompleted : function ( ) {
99+
100+ // Then
101+ expect ( driver . _clusterView . routers . toArray ( ) ) . toEqual ( [ "127.0.0.1:9004" , "127.0.0.1:9002" , "127.0.0.1:9003" ] ) ;
102+ expect ( driver . _clusterView . readers . toArray ( ) ) . toEqual ( [ "127.0.0.1:9005" , "127.0.0.1:9003" ] ) ;
103+ expect ( driver . _clusterView . writers . toArray ( ) ) . toEqual ( [ "127.0.0.1:9001" ] ) ;
104+
105+ driver . close ( ) ;
106+ server . exit ( function ( code ) {
107+ expect ( code ) . toEqual ( 0 ) ;
108+ done ( ) ;
109+ } ) ;
110+ }
111+ } ) ;
112+ } ) ;
113+ } ) ;
114+
84115 it ( 'should handle empty response from server' , function ( done ) {
85116 if ( ! boltkit . BoltKitSupport ) {
86117 done ( ) ;
@@ -95,7 +126,7 @@ describe('routing driver ', function() {
95126 // When
96127 var session = driver . session ( neo4j . READ ) ;
97128 session . run ( "MATCH (n) RETURN n.name" ) . catch ( function ( err ) {
98- expect ( err . code ) . toEqual ( neo4j . SERVICE_UNAVAILABLE ) ;
129+ expect ( err . code ) . toEqual ( neo4j . error . SERVICE_UNAVAILABLE ) ;
99130 driver . close ( ) ;
100131 server . exit ( function ( code ) {
101132 expect ( code ) . toEqual ( 0 ) ;
@@ -118,7 +149,7 @@ describe('routing driver ', function() {
118149 kit . run ( function ( ) {
119150 var driver = neo4j . driver ( "bolt+routing://127.0.0.1:9001" , neo4j . auth . basic ( "neo4j" , "neo4j" ) ) ;
120151 // When
121- var session = driver . session ( neo4j . READ ) ;
152+ var session = driver . session ( neo4j . session . READ ) ;
122153 session . run ( "MATCH (n) RETURN n.name" ) . then ( function ( res ) {
123154
124155 session . close ( ) ;
@@ -155,14 +186,14 @@ describe('routing driver ', function() {
155186 kit . run ( function ( ) {
156187 var driver = neo4j . driver ( "bolt+routing://127.0.0.1:9001" , neo4j . auth . basic ( "neo4j" , "neo4j" ) ) ;
157188 // When
158- var session = driver . session ( neo4j . READ ) ;
189+ var session = driver . session ( neo4j . session . READ ) ;
159190 session . run ( "MATCH (n) RETURN n.name" ) . then ( function ( res ) {
160191 // Then
161192 expect ( res . records [ 0 ] . get ( 'n.name' ) ) . toEqual ( 'Bob' ) ;
162193 expect ( res . records [ 1 ] . get ( 'n.name' ) ) . toEqual ( 'Alice' ) ;
163194 expect ( res . records [ 2 ] . get ( 'n.name' ) ) . toEqual ( 'Tina' ) ;
164195 session . close ( ) ;
165- session = driver . session ( neo4j . READ ) ;
196+ session = driver . session ( neo4j . session . READ ) ;
166197 session . run ( "MATCH (n) RETURN n.name" ) . then ( function ( res ) {
167198 // Then
168199 expect ( res . records [ 0 ] . get ( 'n.name' ) ) . toEqual ( 'Bob' ) ;
@@ -199,9 +230,9 @@ describe('routing driver ', function() {
199230 kit . run ( function ( ) {
200231 var driver = neo4j . driver ( "bolt+routing://127.0.0.1:9001" , neo4j . auth . basic ( "neo4j" , "neo4j" ) ) ;
201232 // When
202- var session = driver . session ( neo4j . READ ) ;
233+ var session = driver . session ( neo4j . session . READ ) ;
203234 session . run ( "MATCH (n) RETURN n.name" ) . catch ( function ( err ) {
204- expect ( err . code ) . toEqual ( neo4j . SESSION_EXPIRED ) ;
235+ expect ( err . code ) . toEqual ( neo4j . error . SESSION_EXPIRED ) ;
205236 driver . close ( ) ;
206237 seedServer . exit ( function ( code1 ) {
207238 readServer . exit ( function ( code2 ) {
@@ -227,7 +258,7 @@ describe('routing driver ', function() {
227258 kit . run ( function ( ) {
228259 var driver = neo4j . driver ( "bolt+routing://127.0.0.1:9001" , neo4j . auth . basic ( "neo4j" , "neo4j" ) ) ;
229260 // When
230- var session = driver . session ( neo4j . WRITE ) ;
261+ var session = driver . session ( neo4j . session . WRITE ) ;
231262 session . run ( "CREATE (n {name:'Bob'})" ) . then ( function ( ) {
232263
233264 // Then
@@ -257,9 +288,9 @@ describe('routing driver ', function() {
257288 kit . run ( function ( ) {
258289 var driver = neo4j . driver ( "bolt+routing://127.0.0.1:9001" , neo4j . auth . basic ( "neo4j" , "neo4j" ) ) ;
259290 // When
260- var session = driver . session ( neo4j . WRITE ) ;
291+ var session = driver . session ( neo4j . session . WRITE ) ;
261292 session . run ( "CREATE (n {name:'Bob'})" ) . then ( function ( ) {
262- session = driver . session ( neo4j . WRITE ) ;
293+ session = driver . session ( neo4j . session . WRITE ) ;
263294 session . run ( "CREATE (n {name:'Bob'})" ) . then ( function ( ) {
264295 // Then
265296 driver . close ( ) ;
@@ -291,9 +322,9 @@ describe('routing driver ', function() {
291322 kit . run ( function ( ) {
292323 var driver = neo4j . driver ( "bolt+routing://127.0.0.1:9001" , neo4j . auth . basic ( "neo4j" , "neo4j" ) ) ;
293324 // When
294- var session = driver . session ( neo4j . WRITE ) ;
325+ var session = driver . session ( neo4j . session . WRITE ) ;
295326 session . run ( "MATCH (n) RETURN n.name" ) . catch ( function ( err ) {
296- expect ( err . code ) . toEqual ( neo4j . SESSION_EXPIRED ) ;
327+ expect ( err . code ) . toEqual ( neo4j . error . SESSION_EXPIRED ) ;
297328 driver . close ( ) ;
298329 seedServer . exit ( function ( code1 ) {
299330 readServer . exit ( function ( code2 ) {
@@ -319,7 +350,7 @@ describe('routing driver ', function() {
319350 kit . run ( function ( ) {
320351 var driver = neo4j . driver ( "bolt+routing://127.0.0.1:9001" , neo4j . auth . basic ( "neo4j" , "neo4j" ) ) ;
321352 // When
322- var session = driver . session ( neo4j . READ ) ;
353+ var session = driver . session ( neo4j . session . READ ) ;
323354 session . run ( "MATCH (n) RETURN n.name" ) . then ( function ( ) {
324355
325356 // Then
@@ -351,7 +382,7 @@ describe('routing driver ', function() {
351382 kit . run ( function ( ) {
352383 var driver = neo4j . driver ( "bolt+routing://127.0.0.1:9001" , neo4j . auth . basic ( "neo4j" , "neo4j" ) ) ;
353384 // When
354- var session = driver . session ( neo4j . READ ) ;
385+ var session = driver . session ( neo4j . session . READ ) ;
355386 session . run ( "MATCH (n) RETURN n.name" ) . catch ( function ( ) {
356387 session . close ( ) ;
357388 // Then
@@ -384,7 +415,7 @@ describe('routing driver ', function() {
384415 kit . run ( function ( ) {
385416 var driver = neo4j . driver ( "bolt+routing://127.0.0.1:9001" , neo4j . auth . basic ( "neo4j" , "neo4j" ) ) ;
386417 // When
387- var session = driver . session ( neo4j . READ ) ;
418+ var session = driver . session ( neo4j . session . READ ) ;
388419 session . run ( "MATCH (n) RETURN n.name" ) . catch ( function ( err ) {
389420 session . close ( ) ;
390421 // Then
@@ -415,9 +446,9 @@ describe('routing driver ', function() {
415446 kit . run ( function ( ) {
416447 var driver = neo4j . driver ( "bolt+routing://127.0.0.1:9001" , neo4j . auth . basic ( "neo4j" , "neo4j" ) ) ;
417448 // When
418- var session = driver . session ( neo4j . READ ) ;
449+ var session = driver . session ( neo4j . session . READ ) ;
419450 session . run ( "MATCH (n) RETURN n.name" ) . catch ( function ( err ) {
420- session = driver . session ( neo4j . READ ) ;
451+ session = driver . session ( neo4j . session . READ ) ;
421452 session . run ( "MATCH (n) RETURN n.name" ) . then ( function ( res ) {
422453 driver . close ( ) ;
423454 seedServer . exit ( function ( code1 ) {
@@ -438,15 +469,15 @@ describe('routing driver ', function() {
438469 return ;
439470 }
440471 // Given
441- var kit = new boltkit . BoltKit ( true ) ;
472+ var kit = new boltkit . BoltKit ( ) ;
442473 var server = kit . start ( './test/resources/boltkit/non_discovery.script' , 9001 ) ;
443474
444475 kit . run ( function ( ) {
445476 var driver = neo4j . driver ( "bolt+routing://127.0.0.1:9001" , neo4j . auth . basic ( "neo4j" , "neo4j" ) ) ;
446477 // When
447478 var session = driver . session ( ) ;
448479 session . run ( "MATCH (n) RETURN n.name" ) . catch ( function ( err ) {
449- expect ( err . code ) . toEqual ( neo4j . SERVICE_UNAVAILABLE ) ;
480+ expect ( err . code ) . toEqual ( neo4j . error . SERVICE_UNAVAILABLE ) ;
450481 session . close ( ) ;
451482 driver . close ( ) ;
452483 server . exit ( function ( code ) {
@@ -463,7 +494,7 @@ describe('routing driver ', function() {
463494 return ;
464495 }
465496 // Given
466- var kit = new boltkit . BoltKit ( true ) ;
497+ var kit = new boltkit . BoltKit ( ) ;
467498 var seedServer = kit . start ( './test/resources/boltkit/acquire_endpoints.script' , 9001 ) ;
468499 var readServer = kit . start ( './test/resources/boltkit/not_able_to_write.script' , 9007 ) ;
469500
@@ -474,7 +505,7 @@ describe('routing driver ', function() {
474505 session . run ( "CREATE ()" ) . catch ( function ( err ) {
475506 //the server at 9007 should have been removed
476507 expect ( driver . _clusterView . writers . toArray ( ) ) . toEqual ( [ '127.0.0.1:9008' ] ) ;
477- expect ( err . code ) . toEqual ( neo4j . SESSION_EXPIRED ) ;
508+ expect ( err . code ) . toEqual ( neo4j . error . SESSION_EXPIRED ) ;
478509 session . close ( ) ;
479510 driver . close ( ) ;
480511 seedServer . exit ( function ( code1 ) {
@@ -494,7 +525,7 @@ describe('routing driver ', function() {
494525 return ;
495526 }
496527 // Given
497- var kit = new boltkit . BoltKit ( true ) ;
528+ var kit = new boltkit . BoltKit ( ) ;
498529 var seedServer = kit . start ( './test/resources/boltkit/acquire_endpoints.script' , 9001 ) ;
499530 var readServer = kit . start ( './test/resources/boltkit/not_able_to_write_in_transaction.script' , 9007 ) ;
500531
@@ -508,7 +539,7 @@ describe('routing driver ', function() {
508539 tx . commit ( ) . catch ( function ( err ) {
509540 //the server at 9007 should have been removed
510541 expect ( driver . _clusterView . writers . toArray ( ) ) . toEqual ( [ '127.0.0.1:9008' ] ) ;
511- expect ( err . code ) . toEqual ( neo4j . SESSION_EXPIRED ) ;
542+ expect ( err . code ) . toEqual ( neo4j . error . SESSION_EXPIRED ) ;
512543 session . close ( ) ;
513544 driver . close ( ) ;
514545 seedServer . exit ( function ( code1 ) {
0 commit comments