github.com/flavio/docker@v0.1.3-0.20170117145210-f63d1a6eec47/integration-cli/docker_cli_stack_test.go (about) 1 package main 2 3 import ( 4 "io/ioutil" 5 "os" 6 7 "github.com/docker/docker/integration-cli/checker" 8 "github.com/go-check/check" 9 ) 10 11 func (s *DockerSwarmSuite) TestStackRemove(c *check.C) { 12 testRequires(c, ExperimentalDaemon) 13 d := s.AddDaemon(c, true, true) 14 15 stackArgs := append([]string{"stack", "remove", "UNKNOWN_STACK"}) 16 17 out, err := d.Cmd(stackArgs...) 18 c.Assert(err, checker.IsNil) 19 c.Assert(out, check.Equals, "Nothing found in stack: UNKNOWN_STACK\n") 20 } 21 22 func (s *DockerSwarmSuite) TestStackTasks(c *check.C) { 23 testRequires(c, ExperimentalDaemon) 24 d := s.AddDaemon(c, true, true) 25 26 stackArgs := append([]string{"stack", "ps", "UNKNOWN_STACK"}) 27 28 out, err := d.Cmd(stackArgs...) 29 c.Assert(err, checker.IsNil) 30 c.Assert(out, check.Equals, "Nothing found in stack: UNKNOWN_STACK\n") 31 } 32 33 func (s *DockerSwarmSuite) TestStackServices(c *check.C) { 34 testRequires(c, ExperimentalDaemon) 35 d := s.AddDaemon(c, true, true) 36 37 stackArgs := append([]string{"stack", "services", "UNKNOWN_STACK"}) 38 39 out, err := d.Cmd(stackArgs...) 40 c.Assert(err, checker.IsNil) 41 c.Assert(out, check.Equals, "Nothing found in stack: UNKNOWN_STACK\n") 42 } 43 44 func (s *DockerSwarmSuite) TestStackDeployComposeFile(c *check.C) { 45 testRequires(c, ExperimentalDaemon) 46 d := s.AddDaemon(c, true, true) 47 48 testStackName := "testdeploy" 49 stackArgs := []string{ 50 "stack", "deploy", 51 "--compose-file", "fixtures/deploy/default.yaml", 52 testStackName, 53 } 54 out, err := d.Cmd(stackArgs...) 55 c.Assert(err, checker.IsNil, check.Commentf(out)) 56 57 out, err = d.Cmd([]string{"stack", "ls"}...) 58 c.Assert(err, checker.IsNil) 59 c.Assert(out, check.Equals, "NAME SERVICES\n"+"testdeploy 2\n") 60 61 out, err = d.Cmd([]string{"stack", "rm", testStackName}...) 62 c.Assert(err, checker.IsNil) 63 out, err = d.Cmd([]string{"stack", "ls"}...) 64 c.Assert(err, checker.IsNil) 65 c.Assert(out, check.Equals, "NAME SERVICES\n") 66 } 67 68 // testDAB is the DAB JSON used for testing. 69 // TODO: Use template/text and substitute "Image" with the result of 70 // `docker inspect --format '{{index .RepoDigests 0}}' busybox:latest` 71 const testDAB = `{ 72 "Version": "0.1", 73 "Services": { 74 "srv1": { 75 "Image": "busybox@sha256:e4f93f6ed15a0cdd342f5aae387886fba0ab98af0a102da6276eaf24d6e6ade0", 76 "Command": ["top"] 77 }, 78 "srv2": { 79 "Image": "busybox@sha256:e4f93f6ed15a0cdd342f5aae387886fba0ab98af0a102da6276eaf24d6e6ade0", 80 "Command": ["tail"], 81 "Args": ["-f", "/dev/null"] 82 } 83 } 84 }` 85 86 func (s *DockerSwarmSuite) TestStackDeployWithDAB(c *check.C) { 87 testRequires(c, ExperimentalDaemon) 88 // setup 89 testStackName := "test" 90 testDABFileName := testStackName + ".dab" 91 defer os.RemoveAll(testDABFileName) 92 err := ioutil.WriteFile(testDABFileName, []byte(testDAB), 0444) 93 c.Assert(err, checker.IsNil) 94 d := s.AddDaemon(c, true, true) 95 // deploy 96 stackArgs := []string{ 97 "stack", "deploy", 98 "--bundle-file", testDABFileName, 99 testStackName, 100 } 101 out, err := d.Cmd(stackArgs...) 102 c.Assert(err, checker.IsNil) 103 c.Assert(out, checker.Contains, "Loading bundle from test.dab\n") 104 c.Assert(out, checker.Contains, "Creating service test_srv1\n") 105 c.Assert(out, checker.Contains, "Creating service test_srv2\n") 106 // ls 107 stackArgs = []string{"stack", "ls"} 108 out, err = d.Cmd(stackArgs...) 109 c.Assert(err, checker.IsNil) 110 c.Assert(out, check.Equals, "NAME SERVICES\n"+"test 2\n") 111 // rm 112 stackArgs = []string{"stack", "rm", testStackName} 113 out, err = d.Cmd(stackArgs...) 114 c.Assert(err, checker.IsNil) 115 c.Assert(out, checker.Contains, "Removing service test_srv1\n") 116 c.Assert(out, checker.Contains, "Removing service test_srv2\n") 117 // ls (empty) 118 stackArgs = []string{"stack", "ls"} 119 out, err = d.Cmd(stackArgs...) 120 c.Assert(err, checker.IsNil) 121 c.Assert(out, check.Equals, "NAME SERVICES\n") 122 }