@@ -436,3 +436,81 @@ func TestNetworkDBCRUDMediumCluster(t *testing.T) {
436436 log .Print ("Closing DB instances..." )
437437 closeNetworkDBInstances (dbs )
438438}
439+
440+ func TestNetworkDBNodeJoinLeaveIteration (t * testing.T ) {
441+ maxRetry := 5
442+ dbs := createNetworkDBInstances (t , 2 , "node" )
443+
444+ // Single node Join/Leave
445+ err := dbs [0 ].JoinNetwork ("network1" )
446+ assert .NoError (t , err )
447+
448+ if len (dbs [0 ].networkNodes ["network1" ]) != 1 {
449+ t .Fatalf ("The networkNodes list has to have be 1 instead of %d" , len (dbs [0 ].networkNodes ["network1" ]))
450+ }
451+
452+ err = dbs [0 ].LeaveNetwork ("network1" )
453+ assert .NoError (t , err )
454+
455+ if len (dbs [0 ].networkNodes ["network1" ]) != 0 {
456+ t .Fatalf ("The networkNodes list has to have be 0 instead of %d" , len (dbs [0 ].networkNodes ["network1" ]))
457+ }
458+
459+ // Multiple nodes Join/Leave
460+ err = dbs [0 ].JoinNetwork ("network1" )
461+ assert .NoError (t , err )
462+
463+ err = dbs [1 ].JoinNetwork ("network1" )
464+ assert .NoError (t , err )
465+
466+ // Wait for the propagation on db[0]
467+ for i := 0 ; i < maxRetry ; i ++ {
468+ if len (dbs [0 ].networkNodes ["network1" ]) == 2 {
469+ break
470+ }
471+ time .Sleep (1 * time .Second )
472+ }
473+ if len (dbs [0 ].networkNodes ["network1" ]) != 2 {
474+ t .Fatalf ("The networkNodes list has to have be 2 instead of %d - %v" , len (dbs [0 ].networkNodes ["network1" ]), dbs [0 ].networkNodes ["network1" ])
475+ }
476+
477+ // Wait for the propagation on db[1]
478+ for i := 0 ; i < maxRetry ; i ++ {
479+ if len (dbs [1 ].networkNodes ["network1" ]) == 2 {
480+ break
481+ }
482+ time .Sleep (1 * time .Second )
483+ }
484+ if len (dbs [1 ].networkNodes ["network1" ]) != 2 {
485+ t .Fatalf ("The networkNodes list has to have be 2 instead of %d - %v" , len (dbs [1 ].networkNodes ["network1" ]), dbs [1 ].networkNodes ["network1" ])
486+ }
487+
488+ // Try a quick leave/join
489+ err = dbs [0 ].LeaveNetwork ("network1" )
490+ assert .NoError (t , err )
491+ err = dbs [0 ].JoinNetwork ("network1" )
492+ assert .NoError (t , err )
493+
494+ for i := 0 ; i < maxRetry ; i ++ {
495+ if len (dbs [0 ].networkNodes ["network1" ]) == 2 {
496+ break
497+ }
498+ time .Sleep (1 * time .Second )
499+ }
500+ if len (dbs [0 ].networkNodes ["network1" ]) != 2 {
501+ t .Fatalf ("The networkNodes list has to have be 2 instead of %d - %v" , len (dbs [0 ].networkNodes ["network1" ]), dbs [0 ].networkNodes ["network1" ])
502+ }
503+
504+ for i := 0 ; i < maxRetry ; i ++ {
505+ if len (dbs [1 ].networkNodes ["network1" ]) == 2 {
506+ break
507+ }
508+ time .Sleep (1 * time .Second )
509+ }
510+ if len (dbs [1 ].networkNodes ["network1" ]) != 2 {
511+ t .Fatalf ("The networkNodes list has to have be 2 instead of %d - %v" , len (dbs [1 ].networkNodes ["network1" ]), dbs [1 ].networkNodes ["network1" ])
512+ }
513+
514+ dbs [0 ].Close ()
515+ dbs [1 ].Close ()
516+ }
0 commit comments