member_test.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. // Copyright 2015 CoreOS, Inc.
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. package integration
  15. import (
  16. "io/ioutil"
  17. "os"
  18. "testing"
  19. )
  20. func TestPauseMember(t *testing.T) {
  21. defer afterTest(t)
  22. c := NewCluster(t, 5)
  23. c.Launch(t)
  24. defer c.Terminate(t)
  25. for i := 0; i < 5; i++ {
  26. c.Members[i].Pause()
  27. membs := append([]*member{}, c.Members[:i]...)
  28. membs = append(membs, c.Members[i+1:]...)
  29. c.waitLeader(t, membs)
  30. clusterMustProgress(t, membs)
  31. c.Members[i].Resume()
  32. }
  33. c.waitLeader(t, c.Members)
  34. clusterMustProgress(t, c.Members)
  35. }
  36. func TestRestartMember(t *testing.T) {
  37. defer afterTest(t)
  38. c := NewCluster(t, 3)
  39. c.Launch(t)
  40. defer c.Terminate(t)
  41. for i := 0; i < 3; i++ {
  42. c.Members[i].Stop(t)
  43. membs := append([]*member{}, c.Members[:i]...)
  44. membs = append(membs, c.Members[i+1:]...)
  45. c.waitLeader(t, membs)
  46. clusterMustProgress(t, membs)
  47. err := c.Members[i].Restart(t)
  48. if err != nil {
  49. t.Fatal(err)
  50. }
  51. }
  52. clusterMustProgress(t, c.Members)
  53. }
  54. func TestLaunchDuplicateMemberShouldFail(t *testing.T) {
  55. size := 3
  56. c := NewCluster(t, size)
  57. m := c.Members[0].Clone(t)
  58. var err error
  59. m.DataDir, err = ioutil.TempDir(os.TempDir(), "etcd")
  60. if err != nil {
  61. t.Fatal(err)
  62. }
  63. c.Launch(t)
  64. defer c.Terminate(t)
  65. if err := m.Launch(); err == nil {
  66. t.Errorf("unexpect successful launch")
  67. }
  68. }