All messages now go over the network
This commit is contained in:
@@ -10,7 +10,7 @@ module TestServer =
|
||||
|
||||
[<Test>]
|
||||
let ``Startup sequence, first fumbling steps`` () =
|
||||
let cluster = InMemoryCluster.make<int> true 5
|
||||
let cluster, network = InMemoryCluster.make<int> 5
|
||||
|
||||
let logger, logs = TestLogger.make ()
|
||||
|
||||
@@ -22,8 +22,9 @@ module TestServer =
|
||||
ReplyChannel = fun message -> logger (sprintf "Received message for term %i" message.VoterTerm)
|
||||
CandidateLastLogEntry = 0<LogIndex>, 0<Term>
|
||||
}
|
||||
|> Message.RequestVote
|
||||
|> cluster.SendMessage 0<ServerId>
|
||||
|> Instruction.RequestVote
|
||||
|> Message.Instruction
|
||||
|> cluster.SendMessageDirectly 0<ServerId>
|
||||
|
||||
logs () |> shouldEqual [ "Received message for term 0" ]
|
||||
|
||||
@@ -35,8 +36,9 @@ module TestServer =
|
||||
ReplyChannel = fun message -> logger (sprintf "Received message for term %i" message.VoterTerm)
|
||||
CandidateLastLogEntry = 0<LogIndex>, 0<Term>
|
||||
}
|
||||
|> Message.RequestVote
|
||||
|> cluster.SendMessage 0<ServerId>
|
||||
|> Instruction.RequestVote
|
||||
|> Message.Instruction
|
||||
|> cluster.SendMessageDirectly 0<ServerId>
|
||||
|
||||
logs ()
|
||||
|> shouldEqual [ "Received message for term 0" ; "Received message for term 0" ]
|
||||
@@ -51,21 +53,33 @@ module TestServer =
|
||||
ReplyChannel = fun _ -> Interlocked.Increment calls |> ignore
|
||||
CandidateLastLogEntry = 0<LogIndex>, 0<Term>
|
||||
}
|
||||
|> Message.RequestVote
|
||||
|> cluster.SendMessage 0<ServerId>
|
||||
|> Instruction.RequestVote
|
||||
|> Message.Instruction
|
||||
|> cluster.SendMessageDirectly 0<ServerId>
|
||||
|
||||
calls.Value |> shouldEqual 0
|
||||
|
||||
[<Test>]
|
||||
let ``Startup sequence in prod`` () =
|
||||
let cluster = InMemoryCluster.make<int> false 5
|
||||
let cluster, network = InMemoryCluster.make<int> 5
|
||||
|
||||
cluster.Servers.[0].TriggerTimeout ()
|
||||
cluster.Servers.[0].Sync ()
|
||||
|
||||
// We sent a message to every other server; process them.
|
||||
for i in 1..4 do
|
||||
cluster.Servers.[i].Sync ()
|
||||
network.InboundMessages.[i].Count |> shouldEqual 1
|
||||
let message = network.InboundMessages.[i].[0]
|
||||
network.InboundMessages.[i].Clear ()
|
||||
cluster.SendMessageDirectly (i * 1<ServerId>) message
|
||||
|
||||
network.InboundMessages.[0].Count |> shouldEqual i
|
||||
|
||||
for i in 1..4 do
|
||||
cluster.SendMessageDirectly 0<ServerId> network.InboundMessages.[0].[i - 1]
|
||||
// (the messages we've already processed)
|
||||
network.InboundMessages.[0].Count |> shouldEqual 4
|
||||
network.InboundMessages.[0].Clear ()
|
||||
|
||||
cluster.Servers.[0].State |> shouldEqual ServerStatus.Leader
|
||||
|
||||
|
Reference in New Issue
Block a user