github.com/anuvu/nomad@v0.8.7-atom1/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.Server.RaftProtocol = 3 80 }) 81 defer s.Stop() 82 83 operator := c.Operator() 84 testutil.WaitForResult(func() (bool, error) { 85 out, _, err := operator.AutopilotServerHealth(nil) 86 if err != nil { 87 return false, err 88 } 89 90 if len(out.Servers) != 1 || 91 !out.Servers[0].Healthy || 92 out.Servers[0].Name != fmt.Sprintf("%s.global", s.Config.NodeName) { 93 return false, fmt.Errorf("%v", out) 94 } 95 96 return true, nil 97 }, func(err error) { 98 t.Fatalf("err: %v", err) 99 }) 100 }