node_test.go 969 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package raft
  2. import (
  3. "testing"
  4. )
  5. const (
  6. defaultHeartbeat = 1
  7. defaultElection = 5
  8. )
  9. func TestTickMsgHub(t *testing.T) {
  10. n := New(3, 0, defaultHeartbeat, defaultElection)
  11. for i := 0; i < defaultElection+1; i++ {
  12. n.Tick()
  13. }
  14. called := false
  15. for _, m := range n.Msgs() {
  16. if m.Type == msgVote {
  17. called = true
  18. }
  19. }
  20. if !called {
  21. t.Errorf("called = %v, want true", called)
  22. }
  23. }
  24. func TestTickMsgBeat(t *testing.T) {
  25. k := 3
  26. n := New(k, 0, defaultHeartbeat, defaultElection)
  27. n.Step(Message{Type: msgHup}) // become leader please
  28. for _, m := range n.Msgs() {
  29. if m.Type == msgVote {
  30. n.Step(Message{From: 1, Type: msgVoteResp, Index: 1, Term: 1})
  31. }
  32. }
  33. for i := 0; i < defaultHeartbeat+1; i++ {
  34. n.Tick()
  35. }
  36. called := 0
  37. for _, m := range n.Msgs() {
  38. if m.Type == msgApp {
  39. called++
  40. }
  41. }
  42. // becomeLeader -> k-1 append
  43. // msgBeat -> k-1 append
  44. w := (k - 1) * 2
  45. if called != w {
  46. t.Errorf("called = %v, want %v", called, w)
  47. }
  48. }