github.com/aminovpavel/nomad@v0.11.8/command/integration_test.go (about)

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