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  }