github.com/iqoqo/nomad@v0.11.3-0.20200911112621-d7021c74d101/internal/testing/apitests/operator_autopilot_test.go (about) 1 package apitests 2 3 import ( 4 "testing" 5 6 "fmt" 7 8 "github.com/hashicorp/consul/sdk/testutil/retry" 9 "github.com/hashicorp/nomad/api" 10 "github.com/hashicorp/nomad/testutil" 11 "github.com/stretchr/testify/require" 12 ) 13 14 func TestAPI_OperatorAutopilotGetSetConfiguration(t *testing.T) { 15 t.Parallel() 16 require := require.New(t) 17 c, s := makeClient(t, nil, nil) 18 defer s.Stop() 19 20 operator := c.Operator() 21 var config *api.AutopilotConfiguration 22 retry.Run(t, func(r *retry.R) { 23 var err error 24 config, _, err = operator.AutopilotGetConfiguration(nil) 25 r.Check(err) 26 }) 27 require.True(config.CleanupDeadServers) 28 29 // Change a config setting 30 newConf := &api.AutopilotConfiguration{CleanupDeadServers: false} 31 _, err := operator.AutopilotSetConfiguration(newConf, nil) 32 require.Nil(err) 33 34 config, _, err = operator.AutopilotGetConfiguration(nil) 35 require.Nil(err) 36 require.False(config.CleanupDeadServers) 37 } 38 39 func TestAPI_OperatorAutopilotCASConfiguration(t *testing.T) { 40 t.Parallel() 41 require := require.New(t) 42 c, s := makeClient(t, nil, nil) 43 defer s.Stop() 44 45 operator := c.Operator() 46 var config *api.AutopilotConfiguration 47 retry.Run(t, func(r *retry.R) { 48 var err error 49 config, _, err = operator.AutopilotGetConfiguration(nil) 50 r.Check(err) 51 }) 52 require.True(config.CleanupDeadServers) 53 54 // Pass an invalid ModifyIndex 55 { 56 newConf := &api.AutopilotConfiguration{ 57 CleanupDeadServers: false, 58 ModifyIndex: config.ModifyIndex - 1, 59 } 60 resp, _, err := operator.AutopilotCASConfiguration(newConf, nil) 61 require.Nil(err) 62 require.False(resp) 63 } 64 65 // Pass a valid ModifyIndex 66 { 67 newConf := &api.AutopilotConfiguration{ 68 CleanupDeadServers: false, 69 ModifyIndex: config.ModifyIndex, 70 } 71 resp, _, err := operator.AutopilotCASConfiguration(newConf, nil) 72 require.Nil(err) 73 require.True(resp) 74 } 75 } 76 77 func TestAPI_OperatorAutopilotServerHealth(t *testing.T) { 78 t.Parallel() 79 c, s := makeClient(t, nil, func(c *testutil.TestServerConfig) { 80 c.Server.RaftProtocol = 3 81 }) 82 defer s.Stop() 83 84 operator := c.Operator() 85 testutil.WaitForResult(func() (bool, error) { 86 out, _, err := operator.AutopilotServerHealth(nil) 87 if err != nil { 88 return false, 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 return false, fmt.Errorf("%v", out) 95 } 96 97 return true, nil 98 }, func(err error) { 99 t.Fatalf("err: %v", err) 100 }) 101 }