github.com/rita33cool1/iot-system-gateway@v0.0.0-20200911033302-e65bde238cc5/docker-engine/integration-cli/docker_cli_service_update_test.go (about) 1 // +build !windows 2 3 package main 4 5 import ( 6 "encoding/json" 7 "fmt" 8 9 "github.com/docker/docker/api/types/swarm" 10 "github.com/docker/docker/integration-cli/checker" 11 "github.com/go-check/check" 12 ) 13 14 func (s *DockerSwarmSuite) TestServiceUpdateLabel(c *check.C) { 15 d := s.AddDaemon(c, true, true) 16 out, err := d.Cmd("service", "create", "--detach", "--no-resolve-image", "--name=test", "busybox", "top") 17 c.Assert(err, checker.IsNil, check.Commentf(out)) 18 service := d.GetService(c, "test") 19 c.Assert(service.Spec.Labels, checker.HasLen, 0) 20 21 // add label to empty set 22 out, err = d.Cmd("service", "update", "--detach", "test", "--label-add", "foo=bar") 23 c.Assert(err, checker.IsNil, check.Commentf(out)) 24 service = d.GetService(c, "test") 25 c.Assert(service.Spec.Labels, checker.HasLen, 1) 26 c.Assert(service.Spec.Labels["foo"], checker.Equals, "bar") 27 28 // add label to non-empty set 29 out, err = d.Cmd("service", "update", "--detach", "test", "--label-add", "foo2=bar") 30 c.Assert(err, checker.IsNil, check.Commentf(out)) 31 service = d.GetService(c, "test") 32 c.Assert(service.Spec.Labels, checker.HasLen, 2) 33 c.Assert(service.Spec.Labels["foo2"], checker.Equals, "bar") 34 35 out, err = d.Cmd("service", "update", "--detach", "test", "--label-rm", "foo2") 36 c.Assert(err, checker.IsNil, check.Commentf(out)) 37 service = d.GetService(c, "test") 38 c.Assert(service.Spec.Labels, checker.HasLen, 1) 39 c.Assert(service.Spec.Labels["foo2"], checker.Equals, "") 40 41 out, err = d.Cmd("service", "update", "--detach", "test", "--label-rm", "foo") 42 c.Assert(err, checker.IsNil, check.Commentf(out)) 43 service = d.GetService(c, "test") 44 c.Assert(service.Spec.Labels, checker.HasLen, 0) 45 c.Assert(service.Spec.Labels["foo"], checker.Equals, "") 46 47 // now make sure we can add again 48 out, err = d.Cmd("service", "update", "--detach", "test", "--label-add", "foo=bar") 49 c.Assert(err, checker.IsNil, check.Commentf(out)) 50 service = d.GetService(c, "test") 51 c.Assert(service.Spec.Labels, checker.HasLen, 1) 52 c.Assert(service.Spec.Labels["foo"], checker.Equals, "bar") 53 } 54 55 func (s *DockerSwarmSuite) TestServiceUpdateSecrets(c *check.C) { 56 d := s.AddDaemon(c, true, true) 57 testName := "test_secret" 58 id := d.CreateSecret(c, swarm.SecretSpec{ 59 Annotations: swarm.Annotations{ 60 Name: testName, 61 }, 62 Data: []byte("TESTINGDATA"), 63 }) 64 c.Assert(id, checker.Not(checker.Equals), "", check.Commentf("secrets: %s", id)) 65 testTarget := "testing" 66 serviceName := "test" 67 68 out, err := d.Cmd("service", "create", "--detach", "--no-resolve-image", "--name", serviceName, "busybox", "top") 69 c.Assert(err, checker.IsNil, check.Commentf(out)) 70 71 // add secret 72 out, err = d.Cmd("service", "update", "--detach", "test", "--secret-add", fmt.Sprintf("source=%s,target=%s", testName, testTarget)) 73 c.Assert(err, checker.IsNil, check.Commentf(out)) 74 75 out, err = d.Cmd("service", "inspect", "--format", "{{ json .Spec.TaskTemplate.ContainerSpec.Secrets }}", serviceName) 76 c.Assert(err, checker.IsNil) 77 78 var refs []swarm.SecretReference 79 c.Assert(json.Unmarshal([]byte(out), &refs), checker.IsNil) 80 c.Assert(refs, checker.HasLen, 1) 81 82 c.Assert(refs[0].SecretName, checker.Equals, testName) 83 c.Assert(refs[0].File, checker.Not(checker.IsNil)) 84 c.Assert(refs[0].File.Name, checker.Equals, testTarget) 85 86 // remove 87 out, err = d.Cmd("service", "update", "--detach", "test", "--secret-rm", testName) 88 c.Assert(err, checker.IsNil, check.Commentf(out)) 89 90 out, err = d.Cmd("service", "inspect", "--format", "{{ json .Spec.TaskTemplate.ContainerSpec.Secrets }}", serviceName) 91 c.Assert(err, checker.IsNil) 92 93 c.Assert(json.Unmarshal([]byte(out), &refs), checker.IsNil) 94 c.Assert(refs, checker.HasLen, 0) 95 } 96 97 func (s *DockerSwarmSuite) TestServiceUpdateConfigs(c *check.C) { 98 d := s.AddDaemon(c, true, true) 99 testName := "test_config" 100 id := d.CreateConfig(c, swarm.ConfigSpec{ 101 Annotations: swarm.Annotations{ 102 Name: testName, 103 }, 104 Data: []byte("TESTINGDATA"), 105 }) 106 c.Assert(id, checker.Not(checker.Equals), "", check.Commentf("configs: %s", id)) 107 testTarget := "/testing" 108 serviceName := "test" 109 110 out, err := d.Cmd("service", "create", "--detach", "--no-resolve-image", "--name", serviceName, "busybox", "top") 111 c.Assert(err, checker.IsNil, check.Commentf(out)) 112 113 // add config 114 out, err = d.Cmd("service", "update", "--detach", "test", "--config-add", fmt.Sprintf("source=%s,target=%s", testName, testTarget)) 115 c.Assert(err, checker.IsNil, check.Commentf(out)) 116 117 out, err = d.Cmd("service", "inspect", "--format", "{{ json .Spec.TaskTemplate.ContainerSpec.Configs }}", serviceName) 118 c.Assert(err, checker.IsNil) 119 120 var refs []swarm.ConfigReference 121 c.Assert(json.Unmarshal([]byte(out), &refs), checker.IsNil) 122 c.Assert(refs, checker.HasLen, 1) 123 124 c.Assert(refs[0].ConfigName, checker.Equals, testName) 125 c.Assert(refs[0].File, checker.Not(checker.IsNil)) 126 c.Assert(refs[0].File.Name, checker.Equals, testTarget) 127 128 // remove 129 out, err = d.Cmd("service", "update", "--detach", "test", "--config-rm", testName) 130 c.Assert(err, checker.IsNil, check.Commentf(out)) 131 132 out, err = d.Cmd("service", "inspect", "--format", "{{ json .Spec.TaskTemplate.ContainerSpec.Configs }}", serviceName) 133 c.Assert(err, checker.IsNil) 134 135 c.Assert(json.Unmarshal([]byte(out), &refs), checker.IsNil) 136 c.Assert(refs, checker.HasLen, 0) 137 }