mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Windows CI: Integrity check for busybox top
Signed-off-by: John Howard <jhoward@microsoft.com>
This commit is contained in:
parent
467c8b1a6a
commit
6a931c3590
4 changed files with 46 additions and 10 deletions
|
@ -39,7 +39,7 @@ func (s *DockerSuite) TestEventsApiBackwardsCompatible(c *check.C) {
|
|||
since := daemonTime(c).Unix()
|
||||
ts := strconv.FormatInt(since, 10)
|
||||
|
||||
out, _ := dockerCmd(c, "run", "--name=foo", "-d", "busybox", "top")
|
||||
out, _ := runSleepingContainer(c, "--name=foo", "-d")
|
||||
containerID := strings.TrimSpace(out)
|
||||
c.Assert(waitRun(containerID), checker.IsNil)
|
||||
|
||||
|
|
|
@ -439,7 +439,7 @@ func (s *DockerSuite) TestEventsCopy(c *check.C) {
|
|||
func (s *DockerSuite) TestEventsResize(c *check.C) {
|
||||
since := daemonTime(c).Unix()
|
||||
|
||||
out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
|
||||
out, _ := runSleepingContainer(c, "-d")
|
||||
cID := strings.TrimSpace(out)
|
||||
c.Assert(waitRun(cID), checker.IsNil)
|
||||
|
||||
|
|
|
@ -273,7 +273,7 @@ func (s *DockerSuite) TestInspectNoSizeFlagContainer(c *check.C) {
|
|||
//Both the container and image are named busybox. docker inspect will fetch container
|
||||
//JSON SizeRw and SizeRootFs field. If there is no flag --size/-s, there are no size fields.
|
||||
|
||||
dockerCmd(c, "run", "--name=busybox", "-d", "busybox", "top")
|
||||
runSleepingContainer(c, "--name=busybox", "-d")
|
||||
|
||||
formatStr := "--format='{{.SizeRw}},{{.SizeRootFs}}'"
|
||||
out, _ := dockerCmd(c, "inspect", "--type=container", formatStr, "busybox")
|
||||
|
@ -281,7 +281,7 @@ func (s *DockerSuite) TestInspectNoSizeFlagContainer(c *check.C) {
|
|||
}
|
||||
|
||||
func (s *DockerSuite) TestInspectSizeFlagContainer(c *check.C) {
|
||||
dockerCmd(c, "run", "--name=busybox", "-d", "busybox", "top")
|
||||
runSleepingContainer(c, "--name=busybox", "-d")
|
||||
|
||||
formatStr := "--format='{{.SizeRw}},{{.SizeRootFs}}'"
|
||||
out, _ := dockerCmd(c, "inspect", "-s", "--type=container", formatStr, "busybox")
|
||||
|
@ -292,7 +292,7 @@ func (s *DockerSuite) TestInspectSizeFlagContainer(c *check.C) {
|
|||
}
|
||||
|
||||
func (s *DockerSuite) TestInspectSizeFlagImage(c *check.C) {
|
||||
dockerCmd(c, "run", "--name=busybox", "-d", "busybox", "top")
|
||||
runSleepingContainer(c, "-d")
|
||||
|
||||
formatStr := "--format='{{.SizeRw}},{{.SizeRootFs}}'"
|
||||
out, _, err := dockerCmdWithError("inspect", "-s", "--type=image", formatStr, "busybox")
|
||||
|
@ -303,10 +303,10 @@ func (s *DockerSuite) TestInspectSizeFlagImage(c *check.C) {
|
|||
c.Assert(out, checker.Contains, "Template parsing error")
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestInspectTempateError(c *check.C) {
|
||||
func (s *DockerSuite) TestInspectTemplateError(c *check.C) {
|
||||
// Template parsing error for both the container and image.
|
||||
|
||||
dockerCmd(c, "run", "--name=container1", "-d", "busybox", "top")
|
||||
runSleepingContainer(c, "--name=container1", "-d")
|
||||
|
||||
out, _, err := dockerCmdWithError("inspect", "--type=container", "--format='Format container: {{.ThisDoesNotExist}}'", "container1")
|
||||
c.Assert(err, check.Not(check.IsNil))
|
||||
|
@ -318,7 +318,7 @@ func (s *DockerSuite) TestInspectTempateError(c *check.C) {
|
|||
}
|
||||
|
||||
func (s *DockerSuite) TestInspectJSONFields(c *check.C) {
|
||||
dockerCmd(c, "run", "--name=busybox", "-d", "busybox", "top")
|
||||
runSleepingContainer(c, "--name=busybox", "-d")
|
||||
out, _, err := dockerCmdWithError("inspect", "--type=container", "--format='{{.HostConfig.Dns}}'", "busybox")
|
||||
|
||||
c.Assert(err, check.IsNil)
|
||||
|
@ -337,8 +337,8 @@ func (s *DockerSuite) TestInspectByPrefix(c *check.C) {
|
|||
}
|
||||
|
||||
func (s *DockerSuite) TestInspectStopWhenNotFound(c *check.C) {
|
||||
dockerCmd(c, "run", "--name=busybox", "-d", "busybox", "top")
|
||||
dockerCmd(c, "run", "--name=not-shown", "-d", "busybox", "top")
|
||||
runSleepingContainer(c, "--name=busybox", "-d")
|
||||
runSleepingContainer(c, "--name=not-shown", "-d")
|
||||
out, _, err := dockerCmdWithError("inspect", "--type=container", "--format='{{.Name}}'", "busybox", "missing", "not-shown")
|
||||
|
||||
c.Assert(err, checker.Not(check.IsNil))
|
||||
|
|
|
@ -872,32 +872,68 @@ func pullImageIfNotExist(image string) error {
|
|||
}
|
||||
|
||||
func dockerCmdWithError(args ...string) (string, int, error) {
|
||||
if err := validateArgs(args...); err != nil {
|
||||
return "", 0, err
|
||||
}
|
||||
return integration.DockerCmdWithError(dockerBinary, args...)
|
||||
}
|
||||
|
||||
func dockerCmdWithStdoutStderr(c *check.C, args ...string) (string, string, int) {
|
||||
if err := validateArgs(args...); err != nil {
|
||||
c.Fatalf(err.Error())
|
||||
}
|
||||
return integration.DockerCmdWithStdoutStderr(dockerBinary, c, args...)
|
||||
}
|
||||
|
||||
func dockerCmd(c *check.C, args ...string) (string, int) {
|
||||
if err := validateArgs(args...); err != nil {
|
||||
c.Fatalf(err.Error())
|
||||
}
|
||||
return integration.DockerCmd(dockerBinary, c, args...)
|
||||
}
|
||||
|
||||
// execute a docker command with a timeout
|
||||
func dockerCmdWithTimeout(timeout time.Duration, args ...string) (string, int, error) {
|
||||
if err := validateArgs(args...); err != nil {
|
||||
return "", 0, err
|
||||
}
|
||||
return integration.DockerCmdWithTimeout(dockerBinary, timeout, args...)
|
||||
}
|
||||
|
||||
// execute a docker command in a directory
|
||||
func dockerCmdInDir(c *check.C, path string, args ...string) (string, int, error) {
|
||||
if err := validateArgs(args...); err != nil {
|
||||
c.Fatalf(err.Error())
|
||||
}
|
||||
return integration.DockerCmdInDir(dockerBinary, path, args...)
|
||||
}
|
||||
|
||||
// execute a docker command in a directory with a timeout
|
||||
func dockerCmdInDirWithTimeout(timeout time.Duration, path string, args ...string) (string, int, error) {
|
||||
if err := validateArgs(args...); err != nil {
|
||||
return "", 0, err
|
||||
}
|
||||
return integration.DockerCmdInDirWithTimeout(dockerBinary, timeout, path, args...)
|
||||
}
|
||||
|
||||
// validateArgs is a checker to ensure tests are not running commands which are
|
||||
// not supported on platforms. Specifically on Windows this is 'busybox top'.
|
||||
func validateArgs(args ...string) error {
|
||||
if daemonPlatform != "windows" {
|
||||
return nil
|
||||
}
|
||||
foundBusybox := -1
|
||||
for key, value := range args {
|
||||
if strings.ToLower(value) == "busybox" {
|
||||
foundBusybox = key
|
||||
}
|
||||
if (foundBusybox != -1) && (key == foundBusybox+1) && (strings.ToLower(value) == "top") {
|
||||
return errors.New("Cannot use 'busybox top' in tests on Windows. Use runSleepingContainer()")
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// find the State.ExitCode in container metadata
|
||||
func findContainerExitCode(c *check.C, name string, vargs ...string) string {
|
||||
args := append(vargs, "inspect", "--format='{{ .State.ExitCode }} {{ .State.Error }}'", name)
|
||||
|
|
Loading…
Reference in a new issue