member_test.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package integration
  2. import (
  3. "io/ioutil"
  4. "os"
  5. "testing"
  6. )
  7. func TestPauseMember(t *testing.T) {
  8. defer afterTest(t)
  9. c := NewCluster(t, 5)
  10. c.Launch(t)
  11. defer c.Terminate(t)
  12. for i := 0; i < 5; i++ {
  13. c.Members[i].Pause()
  14. membs := append([]*member{}, c.Members[:i]...)
  15. membs = append(membs, c.Members[i+1:]...)
  16. c.waitLeader(t, membs)
  17. clusterMustProgress(t, membs)
  18. c.Members[i].Resume()
  19. }
  20. c.waitLeader(t, c.Members)
  21. clusterMustProgress(t, c.Members)
  22. }
  23. func TestRestartMember(t *testing.T) {
  24. defer afterTest(t)
  25. c := NewCluster(t, 3)
  26. c.Launch(t)
  27. defer c.Terminate(t)
  28. for i := 0; i < 3; i++ {
  29. c.Members[i].Stop(t)
  30. membs := append([]*member{}, c.Members[:i]...)
  31. membs = append(membs, c.Members[i+1:]...)
  32. c.waitLeader(t, membs)
  33. clusterMustProgress(t, membs)
  34. err := c.Members[i].Restart(t)
  35. if err != nil {
  36. t.Fatal(err)
  37. }
  38. }
  39. clusterMustProgress(t, c.Members)
  40. }
  41. func TestLaunchDuplicateMemberShouldFail(t *testing.T) {
  42. size := 3
  43. c := NewCluster(t, size)
  44. m := c.Members[0].Clone(t)
  45. var err error
  46. m.DataDir, err = ioutil.TempDir(os.TempDir(), "etcd")
  47. if err != nil {
  48. t.Fatal(err)
  49. }
  50. c.Launch(t)
  51. defer c.Terminate(t)
  52. if err := m.Launch(); err == nil {
  53. t.Errorf("unexpect successful launch")
  54. }
  55. }