raft cluster

wip: raft does not care about migrating

wip: optimize code

wip: raft election

wip

wip: fix raft leader missing log entries

wip

fix a dead lock

batch set slot route

wip: raft persist

wip

refactor cluster suite

remove relay

rename relay2

refactor: allow customizing client factory

test raft

refactor re-balance

avoid errors caused by inconsistent status on follower nodes during raft commits

test raft election
This commit is contained in:
finley
2023-01-02 21:27:06 +08:00
parent df672d4c92
commit bf7f628810
54 changed files with 3122 additions and 703 deletions

View File

@@ -9,13 +9,13 @@ import (
)
func TestExec(t *testing.T) {
testCluster2 := MakeTestCluster([]string{"127.0.0.1:6379"})
testCluster := testCluster[0]
conn := connection.NewFakeConn()
for i := 0; i < 1000; i++ {
key := RandString(4)
value := RandString(4)
testCluster2.Exec(conn, toArgs("SET", key, value))
ret := testCluster2.Exec(conn, toArgs("GET", key))
testCluster.Exec(conn, toArgs("SET", key, value))
ret := testCluster.Exec(conn, toArgs("GET", key))
asserts.AssertBulkReply(t, ret, value)
}
}
@@ -27,27 +27,28 @@ func TestAuth(t *testing.T) {
config.Properties.RequirePass = ""
}()
conn := connection.NewFakeConn()
ret := testNodeA.Exec(conn, toArgs("GET", "a"))
testCluster := testCluster[0]
ret := testCluster.Exec(conn, toArgs("GET", "a"))
asserts.AssertErrReply(t, ret, "NOAUTH Authentication required")
ret = testNodeA.Exec(conn, toArgs("AUTH", passwd))
ret = testCluster.Exec(conn, toArgs("AUTH", passwd))
asserts.AssertStatusReply(t, ret, "OK")
ret = testNodeA.Exec(conn, toArgs("GET", "a"))
ret = testCluster.Exec(conn, toArgs("GET", "a"))
asserts.AssertNotError(t, ret)
}
func TestRelay(t *testing.T) {
testCluster2 := MakeTestCluster([]string{"127.0.0.1:6379"})
testNodeA := testCluster[1]
key := RandString(4)
value := RandString(4)
conn := connection.NewFakeConn()
ret := testCluster2.relay("127.0.0.1:6379", conn, toArgs("SET", key, value))
ret := testNodeA.relay(addresses[1], conn, toArgs("SET", key, value))
asserts.AssertNotError(t, ret)
ret = testCluster2.relay("127.0.0.1:6379", conn, toArgs("GET", key))
ret = testNodeA.relay(addresses[1], conn, toArgs("GET", key))
asserts.AssertBulkReply(t, ret, value)
}
func TestBroadcast(t *testing.T) {
testCluster2 := MakeTestCluster([]string{"127.0.0.1:6379"})
testCluster2 := testCluster[0]
key := RandString(4)
value := RandString(4)
rets := testCluster2.broadcast(connection.NewFakeConn(), toArgs("SET", key, value))