|
@@ -436,3 +436,81 @@ func TestNetworkDBCRUDMediumCluster(t *testing.T) {
|
|
|
log.Print("Closing DB instances...")
|
|
|
closeNetworkDBInstances(dbs)
|
|
|
}
|
|
|
+
|
|
|
+func TestNetworkDBNodeJoinLeaveIteration(t *testing.T) {
|
|
|
+ maxRetry := 5
|
|
|
+ dbs := createNetworkDBInstances(t, 2, "node")
|
|
|
+
|
|
|
+ // Single node Join/Leave
|
|
|
+ err := dbs[0].JoinNetwork("network1")
|
|
|
+ assert.NoError(t, err)
|
|
|
+
|
|
|
+ if len(dbs[0].networkNodes["network1"]) != 1 {
|
|
|
+ t.Fatalf("The networkNodes list has to have be 1 instead of %d", len(dbs[0].networkNodes["network1"]))
|
|
|
+ }
|
|
|
+
|
|
|
+ err = dbs[0].LeaveNetwork("network1")
|
|
|
+ assert.NoError(t, err)
|
|
|
+
|
|
|
+ if len(dbs[0].networkNodes["network1"]) != 0 {
|
|
|
+ t.Fatalf("The networkNodes list has to have be 0 instead of %d", len(dbs[0].networkNodes["network1"]))
|
|
|
+ }
|
|
|
+
|
|
|
+ // Multiple nodes Join/Leave
|
|
|
+ err = dbs[0].JoinNetwork("network1")
|
|
|
+ assert.NoError(t, err)
|
|
|
+
|
|
|
+ err = dbs[1].JoinNetwork("network1")
|
|
|
+ assert.NoError(t, err)
|
|
|
+
|
|
|
+ // Wait for the propagation on db[0]
|
|
|
+ for i := 0; i < maxRetry; i++ {
|
|
|
+ if len(dbs[0].networkNodes["network1"]) == 2 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ time.Sleep(1 * time.Second)
|
|
|
+ }
|
|
|
+ if len(dbs[0].networkNodes["network1"]) != 2 {
|
|
|
+ t.Fatalf("The networkNodes list has to have be 2 instead of %d - %v", len(dbs[0].networkNodes["network1"]), dbs[0].networkNodes["network1"])
|
|
|
+ }
|
|
|
+
|
|
|
+ // Wait for the propagation on db[1]
|
|
|
+ for i := 0; i < maxRetry; i++ {
|
|
|
+ if len(dbs[1].networkNodes["network1"]) == 2 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ time.Sleep(1 * time.Second)
|
|
|
+ }
|
|
|
+ if len(dbs[1].networkNodes["network1"]) != 2 {
|
|
|
+ t.Fatalf("The networkNodes list has to have be 2 instead of %d - %v", len(dbs[1].networkNodes["network1"]), dbs[1].networkNodes["network1"])
|
|
|
+ }
|
|
|
+
|
|
|
+ // Try a quick leave/join
|
|
|
+ err = dbs[0].LeaveNetwork("network1")
|
|
|
+ assert.NoError(t, err)
|
|
|
+ err = dbs[0].JoinNetwork("network1")
|
|
|
+ assert.NoError(t, err)
|
|
|
+
|
|
|
+ for i := 0; i < maxRetry; i++ {
|
|
|
+ if len(dbs[0].networkNodes["network1"]) == 2 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ time.Sleep(1 * time.Second)
|
|
|
+ }
|
|
|
+ if len(dbs[0].networkNodes["network1"]) != 2 {
|
|
|
+ t.Fatalf("The networkNodes list has to have be 2 instead of %d - %v", len(dbs[0].networkNodes["network1"]), dbs[0].networkNodes["network1"])
|
|
|
+ }
|
|
|
+
|
|
|
+ for i := 0; i < maxRetry; i++ {
|
|
|
+ if len(dbs[1].networkNodes["network1"]) == 2 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ time.Sleep(1 * time.Second)
|
|
|
+ }
|
|
|
+ if len(dbs[1].networkNodes["network1"]) != 2 {
|
|
|
+ t.Fatalf("The networkNodes list has to have be 2 instead of %d - %v", len(dbs[1].networkNodes["network1"]), dbs[1].networkNodes["network1"])
|
|
|
+ }
|
|
|
+
|
|
|
+ dbs[0].Close()
|
|
|
+ dbs[1].Close()
|
|
|
+}
|