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  }