github.com/hernad/nomad@v1.6.112/command/operator_scheduler_get_config_test.go (about)

     1  // Copyright (c) HashiCorp, Inc.
     2  // SPDX-License-Identifier: MPL-2.0
     3  
     4  package command
     5  
     6  import (
     7  	"encoding/json"
     8  	"testing"
     9  
    10  	"github.com/hernad/nomad/api"
    11  	"github.com/hernad/nomad/ci"
    12  	"github.com/mitchellh/cli"
    13  	"github.com/stretchr/testify/require"
    14  )
    15  
    16  func TestOperatorSchedulerGetConfig_Run(t *testing.T) {
    17  	ci.Parallel(t)
    18  
    19  	srv, _, addr := testServer(t, false, nil)
    20  	defer srv.Shutdown()
    21  
    22  	ui := cli.NewMockUi()
    23  	c := &OperatorSchedulerGetConfig{Meta: Meta{Ui: ui}}
    24  
    25  	// Run the command, so we get the default output and test this.
    26  	require.EqualValues(t, 0, c.Run([]string{"-address=" + addr}))
    27  	s := ui.OutputWriter.String()
    28  	require.Contains(t, s, "Scheduler Algorithm           = binpack")
    29  	require.Contains(t, s, "Preemption SysBatch Scheduler = false")
    30  	ui.ErrorWriter.Reset()
    31  	ui.OutputWriter.Reset()
    32  
    33  	// Request JSON output and test.
    34  	require.EqualValues(t, 0, c.Run([]string{"-address=" + addr, "-json"}))
    35  	s = ui.OutputWriter.String()
    36  	var js api.SchedulerConfiguration
    37  	require.NoError(t, json.Unmarshal([]byte(s), &js))
    38  	ui.ErrorWriter.Reset()
    39  	ui.OutputWriter.Reset()
    40  
    41  	// Request a template output and test.
    42  	require.EqualValues(t, 0, c.Run([]string{"-address=" + addr, "-t='{{printf \"%s!!!\" .SchedulerConfig.SchedulerAlgorithm}}'"}))
    43  	require.Contains(t, ui.OutputWriter.String(), "binpack!!!")
    44  	ui.ErrorWriter.Reset()
    45  	ui.OutputWriter.Reset()
    46  
    47  	// Test an unsupported flag.
    48  	require.EqualValues(t, 1, c.Run([]string{"-address=" + addr, "-yaml"}))
    49  	require.Contains(t, ui.OutputWriter.String(), "Usage: nomad operator scheduler get-config")
    50  }