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

     1  // Copyright (c) HashiCorp, Inc.
     2  // SPDX-License-Identifier: MPL-2.0
     3  
     4  package command
     5  
     6  import (
     7  	"bytes"
     8  	"encoding/json"
     9  	"fmt"
    10  	"os/exec"
    11  	"strings"
    12  	"testing"
    13  
    14  	"github.com/hernad/nomad/api"
    15  	"github.com/hernad/nomad/ci"
    16  	"github.com/hernad/nomad/client/testutil"
    17  	"github.com/stretchr/testify/assert"
    18  )
    19  
    20  func TestIntegration_Command_NomadInit(t *testing.T) {
    21  	ci.Parallel(t)
    22  	tmpDir := t.TempDir()
    23  
    24  	{
    25  		cmd := exec.Command("nomad", "job", "init")
    26  		cmd.Dir = tmpDir
    27  		if err := cmd.Run(); err != nil {
    28  			t.Fatalf("error running init: %v", err)
    29  		}
    30  	}
    31  
    32  	{
    33  		cmd := exec.Command("nomad", "job", "validate", "example.nomad.hcl")
    34  		cmd.Dir = tmpDir
    35  		cmd.Env = []string{`NOMAD_ADDR=http://127.0.0.1:0`}
    36  		if err := cmd.Run(); err != nil {
    37  			t.Fatalf("error validating example.nomad.hcl: %v", err)
    38  		}
    39  	}
    40  }
    41  
    42  func TestIntegration_Command_RoundTripJob(t *testing.T) {
    43  	ci.Parallel(t)
    44  	testutil.DockerCompatible(t)
    45  
    46  	assert := assert.New(t)
    47  	tmpDir := t.TempDir()
    48  
    49  	// Start in dev mode so we get a node registration
    50  	srv, client, url := testServer(t, true, nil)
    51  	defer srv.Shutdown()
    52  
    53  	{
    54  		cmd := exec.Command("nomad", "job", "init", "-short")
    55  		cmd.Dir = tmpDir
    56  		assert.Nil(cmd.Run())
    57  	}
    58  
    59  	{
    60  		cmd := exec.Command("nomad", "job", "run", "example.nomad.hcl")
    61  		cmd.Dir = tmpDir
    62  		cmd.Env = []string{fmt.Sprintf("NOMAD_ADDR=%s", url)}
    63  		err := cmd.Run()
    64  		if err != nil && !strings.Contains(err.Error(), "exit status 2") {
    65  			t.Fatalf("error running example.nomad.hcl: %v", err)
    66  		}
    67  	}
    68  
    69  	{
    70  		cmd := exec.Command("nomad", "job", "inspect", "example")
    71  		cmd.Dir = tmpDir
    72  		cmd.Env = []string{fmt.Sprintf("NOMAD_ADDR=%s", url)}
    73  		out, err := cmd.Output()
    74  		assert.Nil(err)
    75  
    76  		var req api.JobRegisterRequest
    77  		dec := json.NewDecoder(bytes.NewReader(out))
    78  		assert.Nil(dec.Decode(&req))
    79  
    80  		var resp api.JobRegisterResponse
    81  		_, err = client.Raw().Write("/v1/jobs", req, &resp, nil)
    82  		assert.Nil(err)
    83  		assert.NotZero(resp.EvalID)
    84  	}
    85  
    86  	{
    87  		cmd := exec.Command("nomad", "job", "stop", "example")
    88  		cmd.Dir = tmpDir
    89  		cmd.Env = []string{fmt.Sprintf("NOMAD_ADDR=%s", url)}
    90  		_, err := cmd.Output()
    91  		assert.Nil(err)
    92  	}
    93  }