github.com/hspak/nomad@v0.7.2-0.20180309000617-bc4ae22a39a5/api/operator_autopilot_test.go (about) 1 package api 2 3 import ( 4 "testing" 5 6 "fmt" 7 8 "github.com/hashicorp/consul/testutil/retry" 9 "github.com/hashicorp/nomad/testutil" 10 "github.com/stretchr/testify/require" 11 ) 12 13 func TestAPI_OperatorAutopilotGetSetConfiguration(t *testing.T) { 14 t.Parallel() 15 require := require.New(t) 16 c, s := makeClient(t, nil, nil) 17 defer s.Stop() 18 19 operator := c.Operator() 20 var config *AutopilotConfiguration 21 retry.Run(t, func(r *retry.R) { 22 var err error 23 config, _, err = operator.AutopilotGetConfiguration(nil) 24 r.Check(err) 25 }) 26 require.True(config.CleanupDeadServers) 27 28 // Change a config setting 29 newConf := &AutopilotConfiguration{CleanupDeadServers: false} 30 _, err := operator.AutopilotSetConfiguration(newConf, nil) 31 require.Nil(err) 32 33 config, _, err = operator.AutopilotGetConfiguration(nil) 34 require.Nil(err) 35 require.False(config.CleanupDeadServers) 36 } 37 38 func TestAPI_OperatorAutopilotCASConfiguration(t *testing.T) { 39 t.Parallel() 40 require := require.New(t) 41 c, s := makeClient(t, nil, nil) 42 defer s.Stop() 43 44 operator := c.Operator() 45 var config *AutopilotConfiguration 46 retry.Run(t, func(r *retry.R) { 47 var err error 48 config, _, err = operator.AutopilotGetConfiguration(nil) 49 r.Check(err) 50 }) 51 require.True(config.CleanupDeadServers) 52 53 // Pass an invalid ModifyIndex 54 { 55 newConf := &AutopilotConfiguration{ 56 CleanupDeadServers: false, 57 ModifyIndex: config.ModifyIndex - 1, 58 } 59 resp, _, err := operator.AutopilotCASConfiguration(newConf, nil) 60 require.Nil(err) 61 require.False(resp) 62 } 63 64 // Pass a valid ModifyIndex 65 { 66 newConf := &AutopilotConfiguration{ 67 CleanupDeadServers: false, 68 ModifyIndex: config.ModifyIndex, 69 } 70 resp, _, err := operator.AutopilotCASConfiguration(newConf, nil) 71 require.Nil(err) 72 require.True(resp) 73 } 74 } 75 76 func TestAPI_OperatorAutopilotServerHealth(t *testing.T) { 77 t.Parallel() 78 c, s := makeClient(t, nil, func(c *testutil.TestServerConfig) { 79 c.AdvertiseAddrs.RPC = "127.0.0.1" 80 c.Server.RaftProtocol = 3 81 }) 82 defer s.Stop() 83 84 operator := c.Operator() 85 retry.Run(t, func(r *retry.R) { 86 out, _, err := operator.AutopilotServerHealth(nil) 87 if err != nil { 88 r.Fatalf("err: %v", err) 89 } 90 91 if len(out.Servers) != 1 || 92 !out.Servers[0].Healthy || 93 out.Servers[0].Name != fmt.Sprintf("%s.global", s.Config.NodeName) { 94 r.Fatalf("bad: %v", out) 95 } 96 }) 97 }