diff --git a/tests/follower_test.go b/tests/follower_test.go new file mode 100644 index 00000000..e7f565b8 --- /dev/null +++ b/tests/follower_test.go @@ -0,0 +1,64 @@ +package tests + +import "time" + +func subTestFollower(g *testGroup) { + g.regSubTest("follow", follower_follow_test) +} + +func follower_follow_test(mc *mockServer) error { + mc2, err := mockOpenServer(MockServerOptions{ + Silent: true, Metrics: false, + }) + if err != nil { + return err + } + defer mc2.Close() + err = mc.DoBatch( + Do("SET", "mykey", "truck1", "POINT", 10, 10).OK(), + Do("SET", "mykey", "truck2", "POINT", 10, 10).OK(), + Do("SET", "mykey", "truck3", "POINT", 10, 10).OK(), + Do("SET", "mykey", "truck4", "POINT", 10, 10).OK(), + Do("SET", "mykey", "truck5", "POINT", 10, 10).OK(), + Do("SET", "mykey", "truck6", "POINT", 10, 10).OK(), + ) + if err != nil { + return err + } + err = mc2.DoBatch( + Do("SET", "mykey2", "truck1", "POINT", 10, 10).OK(), + Do("SET", "mykey2", "truck2", "POINT", 10, 10).OK(), + Do("GET", "mykey2", "truck1").Str(`{"type":"Point","coordinates":[10,10]}`), + Do("GET", "mykey2", "truck2").Str(`{"type":"Point","coordinates":[10,10]}`), + + Do("FOLLOW", "localhost", mc.port).OK(), + Do("GET", "mykey2", "truck1").Err("catching up to leader"), + Sleep(time.Second), + Do("GET", "mykey2", "truck1").Err(``), + Do("GET", "mykey2", "truck2").Err(``), + ) + if err != nil { + return err + } + + // err = mc.DoBatch( + // Do("SET", "mykey", "truck7", "POINT", 10, 10).OK(), + // Do("SET", "mykey", "truck8", "POINT", 10, 10).OK(), + // Do("SET", "mykey", "truck9", "POINT", 10, 10).OK(), + // ) + // if err != nil { + // return err + // } + + // err = mc2.DoBatch( + // Sleep(time.Second/2), + // Do("GET", "mykey1", "truck7").Str(`{"type":"Point","coordinates":[10,10]}`), + // Do("GET", "mykey1", "truck8").Str(`{"type":"Point","coordinates":[10,10]}`), + // Do("GET", "mykey1", "truck9").Str(`{"type":"Point","coordinates":[10,10]}`), + // ) + // if err != nil { + // return err + // } + + return nil +} diff --git a/tests/tests_test.go b/tests/tests_test.go index 7c2abcd0..0546236b 100644 --- a/tests/tests_test.go +++ b/tests/tests_test.go @@ -55,6 +55,7 @@ func TestIntegration(t *testing.T) { regTestGroup("timeouts", subTestTimeout) regTestGroup("metrics", subTestMetrics) regTestGroup("aof", subTestAOF) + regTestGroup("follower", subTestFollower) runTestGroups(t) }