github.com/smithx10/nomad@v0.9.1-rc1/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 }