docker_cli_service_scale_test.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // +build !windows
  2. package main
  3. import (
  4. "fmt"
  5. "strings"
  6. "github.com/docker/docker/pkg/integration/checker"
  7. "github.com/go-check/check"
  8. )
  9. func (s *DockerSwarmSuite) TestServiceScale(c *check.C) {
  10. d := s.AddDaemon(c, true, true)
  11. service1Name := "TestService1"
  12. service1Args := append([]string{"service", "create", "--name", service1Name, defaultSleepImage}, sleepCommandForDaemonPlatform()...)
  13. // global mode
  14. service2Name := "TestService2"
  15. service2Args := append([]string{"service", "create", "--name", service2Name, "--mode=global", defaultSleepImage}, sleepCommandForDaemonPlatform()...)
  16. // Create services
  17. out, err := d.Cmd(service1Args...)
  18. c.Assert(err, checker.IsNil)
  19. out, err = d.Cmd(service2Args...)
  20. c.Assert(err, checker.IsNil)
  21. out, err = d.Cmd("service", "scale", "TestService1=2")
  22. c.Assert(err, checker.IsNil)
  23. out, err = d.Cmd("service", "scale", "TestService1=foobar")
  24. c.Assert(err, checker.NotNil)
  25. str := fmt.Sprintf("%s: invalid replicas value %s", service1Name, "foobar")
  26. if !strings.Contains(out, str) {
  27. c.Errorf("got: %s, expected has sub string: %s", out, str)
  28. }
  29. out, err = d.Cmd("service", "scale", "TestService1=-1")
  30. c.Assert(err, checker.NotNil)
  31. str = fmt.Sprintf("%s: invalid replicas value %s", service1Name, "-1")
  32. if !strings.Contains(out, str) {
  33. c.Errorf("got: %s, expected has sub string: %s", out, str)
  34. }
  35. // TestService2 is a global mode
  36. out, err = d.Cmd("service", "scale", "TestService2=2")
  37. c.Assert(err, checker.NotNil)
  38. str = fmt.Sprintf("%s: scale can only be used with replicated mode\n", service2Name)
  39. if out != str {
  40. c.Errorf("got: %s, expected: %s", out, str)
  41. }
  42. }