1package command
2
3import (
4	"strings"
5	"testing"
6	"time"
7
8	"github.com/mitchellh/cli"
9	"github.com/stretchr/testify/require"
10)
11
12func TestOperator_Autopilot_SetConfig_Implements(t *testing.T) {
13	t.Parallel()
14	var _ cli.Command = &OperatorRaftListCommand{}
15}
16
17func TestOperatorAutopilotSetConfigCommand(t *testing.T) {
18	t.Parallel()
19	require := require.New(t)
20	s, _, addr := testServer(t, false, nil)
21	defer s.Shutdown()
22
23	ui := new(cli.MockUi)
24	c := &OperatorAutopilotSetCommand{Meta: Meta{Ui: ui}}
25	args := []string{
26		"-address=" + addr,
27		"-cleanup-dead-servers=false",
28		"-max-trailing-logs=99",
29		"-last-contact-threshold=123ms",
30		"-server-stabilization-time=123ms",
31		"-enable-redundancy-zones=true",
32		"-disable-upgrade-migration=true",
33		"-enable-custom-upgrades=true",
34	}
35
36	code := c.Run(args)
37	require.EqualValues(0, code)
38	output := strings.TrimSpace(ui.OutputWriter.String())
39	require.Contains(output, "Configuration updated")
40
41	client, err := c.Client()
42	require.NoError(err)
43
44	conf, _, err := client.Operator().AutopilotGetConfiguration(nil)
45	require.NoError(err)
46
47	require.False(conf.CleanupDeadServers)
48	require.EqualValues(99, conf.MaxTrailingLogs)
49	require.EqualValues(123*time.Millisecond, conf.LastContactThreshold)
50	require.EqualValues(123*time.Millisecond, conf.ServerStabilizationTime)
51	require.True(conf.EnableRedundancyZones)
52	require.True(conf.DisableUpgradeMigration)
53	require.True(conf.EnableCustomUpgrades)
54}
55