update_test.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package service
  2. import (
  3. "testing"
  4. "github.com/docker/docker/pkg/testutil/assert"
  5. "github.com/docker/engine-api/types/swarm"
  6. )
  7. func TestUpdateServiceArgs(t *testing.T) {
  8. flags := newUpdateCommand(nil).Flags()
  9. flags.Set("args", "the \"new args\"")
  10. spec := &swarm.ServiceSpec{}
  11. cspec := &spec.TaskTemplate.ContainerSpec
  12. cspec.Args = []string{"old", "args"}
  13. updateService(flags, spec)
  14. assert.EqualStringSlice(t, cspec.Args, []string{"the", "new args"})
  15. }
  16. func TestUpdateLabels(t *testing.T) {
  17. flags := newUpdateCommand(nil).Flags()
  18. flags.Set("label", "toadd=newlabel")
  19. flags.Set("remove-label", "toremove")
  20. labels := map[string]string{
  21. "toremove": "thelabeltoremove",
  22. "tokeep": "value",
  23. }
  24. updateLabels(flags, &labels)
  25. assert.Equal(t, len(labels), 2)
  26. assert.Equal(t, labels["tokeep"], "value")
  27. assert.Equal(t, labels["toadd"], "newlabel")
  28. }
  29. func TestUpdateEnvironment(t *testing.T) {
  30. flags := newUpdateCommand(nil).Flags()
  31. flags.Set("env", "toadd=newenv")
  32. flags.Set("remove-env", "toremove")
  33. envs := []string{
  34. "toremove=theenvtoremove",
  35. "tokeep=value",
  36. }
  37. updateEnvironment(flags, &envs)
  38. assert.Equal(t, len(envs), 2)
  39. assert.Equal(t, envs[0], "tokeep=value")
  40. assert.Equal(t, envs[1], "toadd=newenv")
  41. }
  42. func TestUpdateMounts(t *testing.T) {
  43. flags := newUpdateCommand(nil).Flags()
  44. flags.Set("mount", "type=volume,target=/toadd")
  45. flags.Set("remove-mount", "/toremove")
  46. mounts := []swarm.Mount{
  47. {Target: "/toremove", Type: swarm.MountType("BIND")},
  48. {Target: "/tokeep", Type: swarm.MountType("BIND")},
  49. }
  50. updateMounts(flags, &mounts)
  51. assert.Equal(t, len(mounts), 2)
  52. assert.Equal(t, mounts[0].Target, "/tokeep")
  53. assert.Equal(t, mounts[1].Target, "/toadd")
  54. }
  55. func TestUpdateNetworks(t *testing.T) {
  56. flags := newUpdateCommand(nil).Flags()
  57. flags.Set("network", "toadd")
  58. flags.Set("remove-network", "toremove")
  59. attachments := []swarm.NetworkAttachmentConfig{
  60. {Target: "toremove", Aliases: []string{"foo"}},
  61. {Target: "tokeep"},
  62. }
  63. updateNetworks(flags, &attachments)
  64. assert.Equal(t, len(attachments), 2)
  65. assert.Equal(t, attachments[0].Target, "tokeep")
  66. assert.Equal(t, attachments[1].Target, "toadd")
  67. }
  68. func TestUpdatePorts(t *testing.T) {
  69. flags := newUpdateCommand(nil).Flags()
  70. flags.Set("publish", "1000:1000")
  71. flags.Set("remove-publish", "333/udp")
  72. portConfigs := []swarm.PortConfig{
  73. {TargetPort: 333, Protocol: swarm.PortConfigProtocol("udp")},
  74. {TargetPort: 555},
  75. }
  76. updatePorts(flags, &portConfigs)
  77. assert.Equal(t, len(portConfigs), 2)
  78. assert.Equal(t, portConfigs[0].TargetPort, uint32(555))
  79. assert.Equal(t, portConfigs[1].TargetPort, uint32(1000))
  80. }