github.com/Ilhicas/nomad@v1.0.4-0.20210304152020-e86851182bc3/command/scaling_policy_list_test.go (about)

     1  package command
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/mitchellh/cli"
     7  	"github.com/stretchr/testify/require"
     8  
     9  	"github.com/hashicorp/nomad/api"
    10  	"github.com/hashicorp/nomad/helper"
    11  )
    12  
    13  func TestScalingPolicyListCommand_Run(t *testing.T) {
    14  	require := require.New(t)
    15  	t.Parallel()
    16  	srv, client, url := testServer(t, false, nil)
    17  	defer srv.Shutdown()
    18  
    19  	ui := cli.NewMockUi()
    20  	cmd := &ScalingPolicyListCommand{Meta: Meta{Ui: ui}}
    21  
    22  	// Perform an initial list, which should return zero results.
    23  	code := cmd.Run([]string{"-address=" + url})
    24  	require.Equal(0, code)
    25  	out := ui.OutputWriter.String()
    26  	require.Contains(out, "No policies found")
    27  
    28  	// Generate two test jobs.
    29  	jobs := []*api.Job{testJob("scaling_policy_list_1"), testJob("scaling_policy_list_2")}
    30  
    31  	// Generate an example scaling policy.
    32  	scalingPolicy := api.ScalingPolicy{
    33  		Type:    api.ScalingPolicyTypeHorizontal,
    34  		Enabled: helper.BoolToPtr(true),
    35  		Min:     helper.Int64ToPtr(1),
    36  		Max:     helper.Int64ToPtr(1),
    37  	}
    38  
    39  	// Iterate the jobs, add the scaling policy and register.
    40  	for _, job := range jobs {
    41  		job.TaskGroups[0].Scaling = &scalingPolicy
    42  		_, _, err := client.Jobs().Register(job, nil)
    43  		require.NoError(err)
    44  	}
    45  
    46  	// Perform a new list which should yield results..
    47  	code = cmd.Run([]string{"-address=" + url})
    48  	require.Equal(0, code)
    49  	out = ui.OutputWriter.String()
    50  	require.Contains(out, "ID")
    51  	require.Contains(out, "Enabled")
    52  	require.Contains(out, "Type")
    53  	require.Contains(out, "Target")
    54  	require.Contains(out, "scaling_policy_list_1")
    55  	require.Contains(out, "scaling_policy_list_2")
    56  }