docker_cli_service_scale_test.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. //go:build !windows
  2. package main
  3. import (
  4. "fmt"
  5. "strings"
  6. "testing"
  7. "github.com/docker/docker/testutil"
  8. "gotest.tools/v3/assert"
  9. )
  10. func (s *DockerSwarmSuite) TestServiceScale(c *testing.T) {
  11. ctx := testutil.GetContext(c)
  12. d := s.AddDaemon(ctx, c, true, true)
  13. service1Name := "TestService1"
  14. service1Args := append([]string{"service", "create", "--detach", "--no-resolve-image", "--name", service1Name, "busybox"}, sleepCommandForDaemonPlatform()...)
  15. // global mode
  16. service2Name := "TestService2"
  17. service2Args := append([]string{"service", "create", "--detach", "--no-resolve-image", "--name", service2Name, "--mode=global", "busybox"}, sleepCommandForDaemonPlatform()...)
  18. // Create services
  19. _, err := d.Cmd(service1Args...)
  20. assert.NilError(c, err)
  21. _, err = d.Cmd(service2Args...)
  22. assert.NilError(c, err)
  23. _, err = d.Cmd("service", "scale", "TestService1=2")
  24. assert.NilError(c, err)
  25. out, err := d.Cmd("service", "scale", "TestService1=foobar")
  26. assert.ErrorContains(c, err, "")
  27. str := fmt.Sprintf("%s: invalid replicas value %s", service1Name, "foobar")
  28. if !strings.Contains(out, str) {
  29. c.Errorf("got: %s, expected has sub string: %s", out, str)
  30. }
  31. out, err = d.Cmd("service", "scale", "TestService1=-1")
  32. assert.ErrorContains(c, err, "")
  33. str = fmt.Sprintf("%s: invalid replicas value %s", service1Name, "-1")
  34. if !strings.Contains(out, str) {
  35. c.Errorf("got: %s, expected has sub string: %s", out, str)
  36. }
  37. // TestService2 is a global mode
  38. out, err = d.Cmd("service", "scale", "TestService2=2")
  39. assert.ErrorContains(c, err, "")
  40. str = fmt.Sprintf("%s: scale can only be used with replicated mode\n", service2Name)
  41. if out != str {
  42. c.Errorf("got: %s, expected: %s", out, str)
  43. }
  44. }