github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/command/operator_snapshot_save_test.go (about) 1 package command 2 3 import ( 4 "os" 5 "path/filepath" 6 "testing" 7 8 "github.com/hashicorp/nomad/ci" 9 "github.com/hashicorp/nomad/command/agent" 10 "github.com/hashicorp/nomad/helper/snapshot" 11 "github.com/mitchellh/cli" 12 "github.com/stretchr/testify/require" 13 ) 14 15 func TestOperatorSnapshotSave_Works(t *testing.T) { 16 ci.Parallel(t) 17 18 tmpDir := t.TempDir() 19 20 srv, _, url := testServer(t, false, func(c *agent.Config) { 21 c.DevMode = false 22 c.DataDir = filepath.Join(tmpDir, "server") 23 24 c.AdvertiseAddrs.HTTP = "127.0.0.1" 25 c.AdvertiseAddrs.RPC = "127.0.0.1" 26 c.AdvertiseAddrs.Serf = "127.0.0.1" 27 }) 28 29 defer srv.Shutdown() 30 31 ui := cli.NewMockUi() 32 cmd := &OperatorSnapshotSaveCommand{Meta: Meta{Ui: ui}} 33 34 dest := filepath.Join(tmpDir, "backup.snap") 35 code := cmd.Run([]string{ 36 "--address=" + url, 37 dest, 38 }) 39 require.Zero(t, code) 40 require.Contains(t, ui.OutputWriter.String(), "State file written to "+dest) 41 42 f, err := os.Open(dest) 43 require.NoError(t, err) 44 45 meta, err := snapshot.Verify(f) 46 require.NoError(t, err) 47 require.NotZero(t, meta.Index) 48 } 49 50 func TestOperatorSnapshotSave_Fails(t *testing.T) { 51 ci.Parallel(t) 52 53 ui := cli.NewMockUi() 54 cmd := &OperatorSnapshotSaveCommand{Meta: Meta{Ui: ui}} 55 56 // Fails on misuse 57 code := cmd.Run([]string{"some", "bad", "args"}) 58 require.Equal(t, 1, code) 59 require.Contains(t, ui.ErrorWriter.String(), commandErrorText(cmd)) 60 ui.ErrorWriter.Reset() 61 62 // Fails when specified file does not exist 63 code = cmd.Run([]string{"/unicorns/leprechauns"}) 64 require.Equal(t, 1, code) 65 require.Contains(t, ui.ErrorWriter.String(), "no such file") 66 }