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  }