update_test.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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 TestUpdatePlacement(t *testing.T) {
  30. flags := newUpdateCommand(nil).Flags()
  31. flags.Set("constraint", "node=toadd")
  32. flags.Set("remove-constraint", "node!=toremove")
  33. placement := &swarm.Placement{
  34. Constraints: []string{"node!=toremove", "container=tokeep"},
  35. }
  36. updatePlacement(flags, placement)
  37. assert.Equal(t, len(placement.Constraints), 2)
  38. assert.Equal(t, placement.Constraints[0], "container=tokeep")
  39. assert.Equal(t, placement.Constraints[1], "node=toadd")
  40. }
  41. func TestUpdateEnvironment(t *testing.T) {
  42. flags := newUpdateCommand(nil).Flags()
  43. flags.Set("env", "toadd=newenv")
  44. flags.Set("remove-env", "toremove")
  45. envs := []string{"toremove=theenvtoremove", "tokeep=value"}
  46. updateEnvironment(flags, &envs)
  47. assert.Equal(t, len(envs), 2)
  48. assert.Equal(t, envs[0], "tokeep=value")
  49. assert.Equal(t, envs[1], "toadd=newenv")
  50. }
  51. func TestUpdateMounts(t *testing.T) {
  52. flags := newUpdateCommand(nil).Flags()
  53. flags.Set("mount", "type=volume,target=/toadd")
  54. flags.Set("remove-mount", "/toremove")
  55. mounts := []swarm.Mount{
  56. {Target: "/toremove", Type: swarm.MountType("BIND")},
  57. {Target: "/tokeep", Type: swarm.MountType("BIND")},
  58. }
  59. updateMounts(flags, &mounts)
  60. assert.Equal(t, len(mounts), 2)
  61. assert.Equal(t, mounts[0].Target, "/tokeep")
  62. assert.Equal(t, mounts[1].Target, "/toadd")
  63. }
  64. func TestUpdateNetworks(t *testing.T) {
  65. flags := newUpdateCommand(nil).Flags()
  66. flags.Set("network", "toadd")
  67. flags.Set("remove-network", "toremove")
  68. attachments := []swarm.NetworkAttachmentConfig{
  69. {Target: "toremove", Aliases: []string{"foo"}},
  70. {Target: "tokeep"},
  71. }
  72. updateNetworks(flags, &attachments)
  73. assert.Equal(t, len(attachments), 2)
  74. assert.Equal(t, attachments[0].Target, "tokeep")
  75. assert.Equal(t, attachments[1].Target, "toadd")
  76. }
  77. func TestUpdatePorts(t *testing.T) {
  78. flags := newUpdateCommand(nil).Flags()
  79. flags.Set("publish", "1000:1000")
  80. flags.Set("remove-publish", "333/udp")
  81. portConfigs := []swarm.PortConfig{
  82. {TargetPort: 333, Protocol: swarm.PortConfigProtocol("udp")},
  83. {TargetPort: 555},
  84. }
  85. updatePorts(flags, &portConfigs)
  86. assert.Equal(t, len(portConfigs), 2)
  87. assert.Equal(t, portConfigs[0].TargetPort, uint32(555))
  88. assert.Equal(t, portConfigs[1].TargetPort, uint32(1000))
  89. }