|
@@ -36,6 +36,7 @@ import (
|
|
|
"github.com/docker/libnetwork/resolvconf"
|
|
|
"github.com/docker/libnetwork/types"
|
|
|
"github.com/go-check/check"
|
|
|
+ "gotest.tools/assert"
|
|
|
"gotest.tools/icmd"
|
|
|
)
|
|
|
|
|
@@ -89,8 +90,8 @@ func (s *DockerSuite) TestRunExitCodeZero(c *check.C) {
|
|
|
// the exit code should be 1
|
|
|
func (s *DockerSuite) TestRunExitCodeOne(c *check.C) {
|
|
|
_, exitCode, err := dockerCmdWithError("run", "busybox", "false")
|
|
|
- c.Assert(err, checker.NotNil)
|
|
|
- c.Assert(exitCode, checker.Equals, 1)
|
|
|
+ assert.ErrorContains(c, err, "")
|
|
|
+ assert.Equal(c, exitCode, 1)
|
|
|
}
|
|
|
|
|
|
// it should be possible to pipe in data via stdin to a process running in a container
|
|
@@ -220,15 +221,15 @@ func (s *DockerSuite) TestUserDefinedNetworkLinks(c *check.C) {
|
|
|
|
|
|
// ping to first and its alias foo must succeed
|
|
|
_, _, err := dockerCmdWithError("exec", "second", "ping", "-c", "1", "first")
|
|
|
- c.Assert(err, check.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
_, _, err = dockerCmdWithError("exec", "second", "ping", "-c", "1", "foo")
|
|
|
- c.Assert(err, check.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
|
|
|
// ping to third and its alias must fail
|
|
|
_, _, err = dockerCmdWithError("exec", "second", "ping", "-c", "1", "third")
|
|
|
- c.Assert(err, check.NotNil)
|
|
|
+ assert.ErrorContains(c, err, "")
|
|
|
_, _, err = dockerCmdWithError("exec", "second", "ping", "-c", "1", "bar")
|
|
|
- c.Assert(err, check.NotNil)
|
|
|
+ assert.ErrorContains(c, err, "")
|
|
|
|
|
|
// start third container now
|
|
|
dockerCmd(c, "run", "-d", "--net=udlinkNet", "--name=third", "busybox", "top")
|
|
@@ -236,9 +237,9 @@ func (s *DockerSuite) TestUserDefinedNetworkLinks(c *check.C) {
|
|
|
|
|
|
// ping to third and its alias must succeed now
|
|
|
_, _, err = dockerCmdWithError("exec", "second", "ping", "-c", "1", "third")
|
|
|
- c.Assert(err, check.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
_, _, err = dockerCmdWithError("exec", "second", "ping", "-c", "1", "bar")
|
|
|
- c.Assert(err, check.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
}
|
|
|
|
|
|
func (s *DockerSuite) TestUserDefinedNetworkLinksWithRestart(c *check.C) {
|
|
@@ -254,9 +255,9 @@ func (s *DockerSuite) TestUserDefinedNetworkLinksWithRestart(c *check.C) {
|
|
|
|
|
|
// ping to first and its alias foo must succeed
|
|
|
_, _, err := dockerCmdWithError("exec", "second", "ping", "-c", "1", "first")
|
|
|
- c.Assert(err, check.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
_, _, err = dockerCmdWithError("exec", "second", "ping", "-c", "1", "foo")
|
|
|
- c.Assert(err, check.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
|
|
|
// Restart first container
|
|
|
dockerCmd(c, "restart", "first")
|
|
@@ -264,9 +265,9 @@ func (s *DockerSuite) TestUserDefinedNetworkLinksWithRestart(c *check.C) {
|
|
|
|
|
|
// ping to first and its alias foo must still succeed
|
|
|
_, _, err = dockerCmdWithError("exec", "second", "ping", "-c", "1", "first")
|
|
|
- c.Assert(err, check.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
_, _, err = dockerCmdWithError("exec", "second", "ping", "-c", "1", "foo")
|
|
|
- c.Assert(err, check.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
|
|
|
// Restart second container
|
|
|
dockerCmd(c, "restart", "second")
|
|
@@ -274,9 +275,9 @@ func (s *DockerSuite) TestUserDefinedNetworkLinksWithRestart(c *check.C) {
|
|
|
|
|
|
// ping to first and its alias foo must still succeed
|
|
|
_, _, err = dockerCmdWithError("exec", "second", "ping", "-c", "1", "first")
|
|
|
- c.Assert(err, check.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
_, _, err = dockerCmdWithError("exec", "second", "ping", "-c", "1", "foo")
|
|
|
- c.Assert(err, check.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
}
|
|
|
|
|
|
func (s *DockerSuite) TestRunWithNetAliasOnDefaultNetworks(c *check.C) {
|
|
@@ -285,7 +286,7 @@ func (s *DockerSuite) TestRunWithNetAliasOnDefaultNetworks(c *check.C) {
|
|
|
defaults := []string{"bridge", "host", "none"}
|
|
|
for _, net := range defaults {
|
|
|
out, _, err := dockerCmdWithError("run", "-d", "--net", net, "--net-alias", "alias_"+net, "busybox", "top")
|
|
|
- c.Assert(err, checker.NotNil)
|
|
|
+ assert.ErrorContains(c, err, "")
|
|
|
c.Assert(out, checker.Contains, runconfig.ErrUnsupportedNetworkAndAlias.Error())
|
|
|
}
|
|
|
}
|
|
@@ -312,14 +313,14 @@ func (s *DockerSuite) TestUserDefinedNetworkAlias(c *check.C) {
|
|
|
|
|
|
// ping to first and its network-scoped aliases
|
|
|
_, _, err := dockerCmdWithError("exec", "second", "ping", "-c", "1", "first")
|
|
|
- c.Assert(err, check.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
_, _, err = dockerCmdWithError("exec", "second", "ping", "-c", "1", "foo1")
|
|
|
- c.Assert(err, check.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
_, _, err = dockerCmdWithError("exec", "second", "ping", "-c", "1", "foo2")
|
|
|
- c.Assert(err, check.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
// ping first container's short-id alias
|
|
|
_, _, err = dockerCmdWithError("exec", "second", "ping", "-c", "1", stringid.TruncateID(cid1))
|
|
|
- c.Assert(err, check.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
|
|
|
// Restart first container
|
|
|
dockerCmd(c, "restart", "first")
|
|
@@ -327,20 +328,20 @@ func (s *DockerSuite) TestUserDefinedNetworkAlias(c *check.C) {
|
|
|
|
|
|
// ping to first and its network-scoped aliases must succeed
|
|
|
_, _, err = dockerCmdWithError("exec", "second", "ping", "-c", "1", "first")
|
|
|
- c.Assert(err, check.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
_, _, err = dockerCmdWithError("exec", "second", "ping", "-c", "1", "foo1")
|
|
|
- c.Assert(err, check.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
_, _, err = dockerCmdWithError("exec", "second", "ping", "-c", "1", "foo2")
|
|
|
- c.Assert(err, check.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
// ping first container's short-id alias
|
|
|
_, _, err = dockerCmdWithError("exec", "second", "ping", "-c", "1", stringid.TruncateID(cid1))
|
|
|
- c.Assert(err, check.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
}
|
|
|
|
|
|
// Issue 9677.
|
|
|
func (s *DockerSuite) TestRunWithDaemonFlags(c *check.C) {
|
|
|
out, _, err := dockerCmdWithError("--exec-opt", "foo=bar", "run", "-i", "busybox", "true")
|
|
|
- c.Assert(err, checker.NotNil)
|
|
|
+ assert.ErrorContains(c, err, "")
|
|
|
c.Assert(out, checker.Contains, "unknown flag: --exec-opt")
|
|
|
}
|
|
|
|
|
@@ -623,7 +624,7 @@ func (s *DockerSuite) TestRunCreateVolumeWithSymlink(c *check.C) {
|
|
|
// Cannot run on Windows as relies on Linux-specific functionality (sh -c mount...)
|
|
|
testRequires(c, DaemonIsLinux)
|
|
|
workingDirectory, err := ioutil.TempDir("", "TestRunCreateVolumeWithSymlink")
|
|
|
- c.Assert(err, checker.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
image := "docker-test-createvolumewithsymlink"
|
|
|
|
|
|
buildCmd := exec.Command(dockerBinary, "build", "-t", image, "-")
|
|
@@ -641,7 +642,7 @@ func (s *DockerSuite) TestRunCreateVolumeWithSymlink(c *check.C) {
|
|
|
}
|
|
|
|
|
|
volPath, err := inspectMountSourceField("test-createvolumewithsymlink", "/bar/foo")
|
|
|
- c.Assert(err, checker.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
|
|
|
_, exitCode, err = dockerCmdWithError("rm", "-v", "test-createvolumewithsymlink")
|
|
|
if err != nil || exitCode != 0 {
|
|
@@ -661,7 +662,7 @@ func (s *DockerSuite) TestRunVolumesFromSymlinkPath(c *check.C) {
|
|
|
testRequires(c, DaemonIsLinux)
|
|
|
|
|
|
workingDirectory, err := ioutil.TempDir("", "TestRunVolumesFromSymlinkPath")
|
|
|
- c.Assert(err, checker.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
name := "docker-test-volumesfromsymlinkpath"
|
|
|
prefix := ""
|
|
|
dfContents := `FROM busybox
|
|
@@ -810,7 +811,7 @@ func (s *DockerSuite) TestRunTwoConcurrentContainers(c *check.C) {
|
|
|
close(errChan)
|
|
|
|
|
|
for err := range errChan {
|
|
|
- c.Assert(err, check.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1776,7 +1777,7 @@ func (s *DockerSuite) TestRunExitOnStdinClose(c *check.C) {
|
|
|
}()
|
|
|
select {
|
|
|
case err := <-finish:
|
|
|
- c.Assert(err, check.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
case <-time.After(time.Duration(delay) * time.Second):
|
|
|
c.Fatal("docker run failed to exit on stdin close")
|
|
|
}
|
|
@@ -1795,7 +1796,7 @@ func (s *DockerSuite) TestRunInteractiveWithRestartPolicy(c *check.C) {
|
|
|
Command: []string{dockerBinary, "run", "-i", "--name", name, "--restart=always", "busybox", "sh"},
|
|
|
Stdin: bytes.NewBufferString("exit 11"),
|
|
|
})
|
|
|
- c.Assert(result.Error, checker.IsNil)
|
|
|
+ assert.NilError(c, result.Error)
|
|
|
defer func() {
|
|
|
dockerCmdWithResult("stop", name).Assert(c, icmd.Success)
|
|
|
}()
|
|
@@ -2222,7 +2223,7 @@ func (s *DockerSuite) TestRunVolumesCleanPaths(c *check.C) {
|
|
|
}
|
|
|
|
|
|
out, err = inspectMountSourceField("dark_helmet", prefix+slash+`foo`)
|
|
|
- c.Assert(err, check.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
if !strings.Contains(strings.ToLower(out), strings.ToLower(testEnv.PlatformDefaults.VolumesConfigPath)) {
|
|
|
c.Fatalf("Volume was not defined for %s/foo\n%q", prefix, out)
|
|
|
}
|
|
@@ -2233,7 +2234,7 @@ func (s *DockerSuite) TestRunVolumesCleanPaths(c *check.C) {
|
|
|
}
|
|
|
|
|
|
out, err = inspectMountSourceField("dark_helmet", prefix+slash+"bar")
|
|
|
- c.Assert(err, check.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
if !strings.Contains(strings.ToLower(out), strings.ToLower(testEnv.PlatformDefaults.VolumesConfigPath)) {
|
|
|
c.Fatalf("Volume was not defined for %s/bar\n%q", prefix, out)
|
|
|
}
|
|
@@ -2396,7 +2397,7 @@ func (s *DockerSuite) TestRunMountShmMqueueFromHost(c *check.C) {
|
|
|
defer os.Remove("/dev/mqueue/toto")
|
|
|
defer os.Remove("/dev/shm/test")
|
|
|
volPath, err := inspectMountSourceField("shmfromhost", "/dev/shm")
|
|
|
- c.Assert(err, checker.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
if volPath != "/dev/shm" {
|
|
|
c.Fatalf("volumePath should have been /dev/shm, was %s", volPath)
|
|
|
}
|
|
@@ -2418,7 +2419,7 @@ func (s *DockerSuite) TestContainerNetworkMode(c *check.C) {
|
|
|
|
|
|
out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
|
|
|
id := strings.TrimSpace(out)
|
|
|
- c.Assert(waitRun(id), check.IsNil)
|
|
|
+ assert.NilError(c, waitRun(id))
|
|
|
pid1 := inspectField(c, id, "State.Pid")
|
|
|
|
|
|
parentContainerNet, err := os.Readlink(fmt.Sprintf("/proc/%s/ns/net", pid1))
|
|
@@ -2554,7 +2555,7 @@ func (s *DockerSuite) TestRunTTYWithPipe(c *check.C) {
|
|
|
|
|
|
select {
|
|
|
case err := <-errChan:
|
|
|
- c.Assert(err, check.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
case <-time.After(30 * time.Second):
|
|
|
c.Fatal("container is running but should have failed")
|
|
|
}
|
|
@@ -2638,7 +2639,7 @@ func (s *DockerSuite) TestRunAllowPortRangeThroughPublish(c *check.C) {
|
|
|
|
|
|
var ports nat.PortMap
|
|
|
err := json.Unmarshal([]byte(portstr), &ports)
|
|
|
- c.Assert(err, checker.IsNil, check.Commentf("failed to unmarshal: %v", portstr))
|
|
|
+ assert.NilError(c, err, "failed to unmarshal: %v", portstr)
|
|
|
for port, binding := range ports {
|
|
|
portnum, _ := strconv.Atoi(strings.Split(string(port), "/")[0])
|
|
|
if portnum < 3000 || portnum > 3003 {
|
|
@@ -2716,11 +2717,11 @@ func (s *DockerSuite) TestPermissionsPtsReadonlyRootfs(c *check.C) {
|
|
|
func testReadOnlyFile(c *check.C, testPriv bool, filenames ...string) {
|
|
|
touch := "touch " + strings.Join(filenames, " ")
|
|
|
out, _, err := dockerCmdWithError("run", "--read-only", "--rm", "busybox", "sh", "-c", touch)
|
|
|
- c.Assert(err, checker.NotNil)
|
|
|
+ assert.ErrorContains(c, err, "")
|
|
|
|
|
|
for _, f := range filenames {
|
|
|
expected := "touch: " + f + ": Read-only file system"
|
|
|
- c.Assert(out, checker.Contains, expected)
|
|
|
+ assert.Assert(c, strings.Contains(out, expected))
|
|
|
}
|
|
|
|
|
|
if !testPriv {
|
|
@@ -2728,11 +2729,11 @@ func testReadOnlyFile(c *check.C, testPriv bool, filenames ...string) {
|
|
|
}
|
|
|
|
|
|
out, _, err = dockerCmdWithError("run", "--read-only", "--privileged", "--rm", "busybox", "sh", "-c", touch)
|
|
|
- c.Assert(err, checker.NotNil)
|
|
|
+ assert.ErrorContains(c, err, "")
|
|
|
|
|
|
for _, f := range filenames {
|
|
|
expected := "touch: " + f + ": Read-only file system"
|
|
|
- c.Assert(out, checker.Contains, expected)
|
|
|
+ assert.Assert(c, strings.Contains(out, expected))
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -2825,7 +2826,7 @@ func (s *DockerSuite) TestRunPIDHostWithChildIsKillable(c *check.C) {
|
|
|
}()
|
|
|
select {
|
|
|
case err := <-errchan:
|
|
|
- c.Assert(err, check.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
case <-time.After(5 * time.Second):
|
|
|
c.Fatal("Kill container timed out")
|
|
|
}
|
|
@@ -3031,14 +3032,14 @@ func (s *DockerSuite) TestVolumeFromMixedRWOptions(c *check.C) {
|
|
|
|
|
|
if testEnv.OSType != "windows" {
|
|
|
mRO, err := inspectMountPoint("test-volumes-1", prefix+slash+"test")
|
|
|
- c.Assert(err, checker.IsNil, check.Commentf("failed to inspect mount point"))
|
|
|
+ assert.NilError(c, err, "failed to inspect mount point")
|
|
|
if mRO.RW {
|
|
|
c.Fatalf("Expected RO volume was RW")
|
|
|
}
|
|
|
}
|
|
|
|
|
|
mRW, err := inspectMountPoint("test-volumes-2", prefix+slash+"test")
|
|
|
- c.Assert(err, checker.IsNil, check.Commentf("failed to inspect mount point"))
|
|
|
+ assert.NilError(c, err, "failed to inspect mount point")
|
|
|
if !mRW.RW {
|
|
|
c.Fatalf("Expected RW volume was RO")
|
|
|
}
|
|
@@ -3152,7 +3153,7 @@ func (s *DockerSuite) TestPtraceContainerProcsFromHost(c *check.C) {
|
|
|
|
|
|
out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
|
|
|
id := strings.TrimSpace(out)
|
|
|
- c.Assert(waitRun(id), check.IsNil)
|
|
|
+ assert.NilError(c, waitRun(id))
|
|
|
pid1 := inspectField(c, id, "State.Pid")
|
|
|
|
|
|
_, err := os.Readlink(fmt.Sprintf("/proc/%s/ns/net", pid1))
|
|
@@ -3501,18 +3502,18 @@ func (s *DockerSuite) TestContainersNetworkIsolation(c *check.C) {
|
|
|
|
|
|
// Check Isolation between containers : ping must fail
|
|
|
_, _, err := dockerCmdWithError("exec", "first", "ping", "-c", "1", "second")
|
|
|
- c.Assert(err, check.NotNil)
|
|
|
+ assert.ErrorContains(c, err, "")
|
|
|
// Connect first container to testnetwork2
|
|
|
dockerCmd(c, "network", "connect", "testnetwork2", "first")
|
|
|
// ping must succeed now
|
|
|
_, _, err = dockerCmdWithError("exec", "first", "ping", "-c", "1", "second")
|
|
|
- c.Assert(err, check.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
|
|
|
// Disconnect first container from testnetwork2
|
|
|
dockerCmd(c, "network", "disconnect", "testnetwork2", "first")
|
|
|
// ping must fail again
|
|
|
_, _, err = dockerCmdWithError("exec", "first", "ping", "-c", "1", "second")
|
|
|
- c.Assert(err, check.NotNil)
|
|
|
+ assert.ErrorContains(c, err, "")
|
|
|
}
|
|
|
|
|
|
func (s *DockerSuite) TestNetworkRmWithActiveContainers(c *check.C) {
|
|
@@ -3526,11 +3527,11 @@ func (s *DockerSuite) TestNetworkRmWithActiveContainers(c *check.C) {
|
|
|
c.Assert(waitRun("second"), check.IsNil)
|
|
|
// Network delete with active containers must fail
|
|
|
_, _, err := dockerCmdWithError("network", "rm", "testnetwork1")
|
|
|
- c.Assert(err, check.NotNil)
|
|
|
+ assert.ErrorContains(c, err, "")
|
|
|
|
|
|
dockerCmd(c, "stop", "first")
|
|
|
_, _, err = dockerCmdWithError("network", "rm", "testnetwork1")
|
|
|
- c.Assert(err, check.NotNil)
|
|
|
+ assert.ErrorContains(c, err, "")
|
|
|
}
|
|
|
|
|
|
func (s *DockerSuite) TestContainerRestartInMultipleNetworks(c *check.C) {
|
|
@@ -3555,9 +3556,9 @@ func (s *DockerSuite) TestContainerRestartInMultipleNetworks(c *check.C) {
|
|
|
// Stop second container and test ping failures on both networks
|
|
|
dockerCmd(c, "stop", "second")
|
|
|
_, _, err := dockerCmdWithError("exec", "first", "ping", "-c", "1", "second.testnetwork1")
|
|
|
- c.Assert(err, check.NotNil)
|
|
|
+ assert.ErrorContains(c, err, "")
|
|
|
_, _, err = dockerCmdWithError("exec", "first", "ping", "-c", "1", "second.testnetwork2")
|
|
|
- c.Assert(err, check.NotNil)
|
|
|
+ assert.ErrorContains(c, err, "")
|
|
|
|
|
|
// Start second container and connectivity must be restored on both networks
|
|
|
dockerCmd(c, "start", "second")
|
|
@@ -3576,7 +3577,7 @@ func (s *DockerSuite) TestContainerWithConflictingHostNetworks(c *check.C) {
|
|
|
|
|
|
// Connecting to the user defined network must fail
|
|
|
_, _, err := dockerCmdWithError("network", "connect", "testnetwork1", "first")
|
|
|
- c.Assert(err, check.NotNil)
|
|
|
+ assert.ErrorContains(c, err, "")
|
|
|
}
|
|
|
|
|
|
func (s *DockerSuite) TestContainerWithConflictingSharedNetwork(c *check.C) {
|
|
@@ -3592,7 +3593,7 @@ func (s *DockerSuite) TestContainerWithConflictingSharedNetwork(c *check.C) {
|
|
|
|
|
|
// Connecting to the user defined network must fail
|
|
|
out, _, err := dockerCmdWithError("network", "connect", "testnetwork1", "second")
|
|
|
- c.Assert(err, check.NotNil)
|
|
|
+ assert.ErrorContains(c, err, "")
|
|
|
c.Assert(out, checker.Contains, runconfig.ErrConflictSharedNetwork.Error())
|
|
|
}
|
|
|
|
|
@@ -3606,7 +3607,7 @@ func (s *DockerSuite) TestContainerWithConflictingNoneNetwork(c *check.C) {
|
|
|
|
|
|
// Connecting to the user defined network must fail
|
|
|
out, _, err := dockerCmdWithError("network", "connect", "testnetwork1", "first")
|
|
|
- c.Assert(err, check.NotNil)
|
|
|
+ assert.ErrorContains(c, err, "")
|
|
|
c.Assert(out, checker.Contains, runconfig.ErrConflictNoNetwork.Error())
|
|
|
|
|
|
// create a container connected to testnetwork1
|
|
@@ -3615,14 +3616,14 @@ func (s *DockerSuite) TestContainerWithConflictingNoneNetwork(c *check.C) {
|
|
|
|
|
|
// Connect second container to none network. it must fail as well
|
|
|
_, _, err = dockerCmdWithError("network", "connect", "none", "second")
|
|
|
- c.Assert(err, check.NotNil)
|
|
|
+ assert.ErrorContains(c, err, "")
|
|
|
}
|
|
|
|
|
|
// #11957 - stdin with no tty does not exit if stdin is not closed even though container exited
|
|
|
func (s *DockerSuite) TestRunStdinBlockedAfterContainerExit(c *check.C) {
|
|
|
cmd := exec.Command(dockerBinary, "run", "-i", "--name=test", "busybox", "true")
|
|
|
in, err := cmd.StdinPipe()
|
|
|
- c.Assert(err, check.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
defer in.Close()
|
|
|
stdout := bytes.NewBuffer(nil)
|
|
|
cmd.Stdout = stdout
|
|
@@ -3646,7 +3647,7 @@ func (s *DockerSuite) TestRunWrongCpusetCpusFlagValue(c *check.C) {
|
|
|
// TODO Windows: This needs validation (error out) in the daemon.
|
|
|
testRequires(c, DaemonIsLinux)
|
|
|
out, exitCode, err := dockerCmdWithError("run", "--cpuset-cpus", "1-10,11--", "busybox", "true")
|
|
|
- c.Assert(err, check.NotNil)
|
|
|
+ assert.ErrorContains(c, err, "")
|
|
|
expected := "Error response from daemon: Invalid value 1-10,11-- for cpuset cpus.\n"
|
|
|
if !(strings.Contains(out, expected) || exitCode == 125) {
|
|
|
c.Fatalf("Expected output to contain %q with exitCode 125, got out: %q exitCode: %v", expected, out, exitCode)
|
|
@@ -3657,7 +3658,7 @@ func (s *DockerSuite) TestRunWrongCpusetMemsFlagValue(c *check.C) {
|
|
|
// TODO Windows: This needs validation (error out) in the daemon.
|
|
|
testRequires(c, DaemonIsLinux)
|
|
|
out, exitCode, err := dockerCmdWithError("run", "--cpuset-mems", "1-42--", "busybox", "true")
|
|
|
- c.Assert(err, check.NotNil)
|
|
|
+ assert.ErrorContains(c, err, "")
|
|
|
expected := "Error response from daemon: Invalid value 1-42-- for cpuset mems.\n"
|
|
|
if !(strings.Contains(out, expected) || exitCode == 125) {
|
|
|
c.Fatalf("Expected output to contain %q with exitCode 125, got out: %q exitCode: %v", expected, out, exitCode)
|
|
@@ -3760,13 +3761,13 @@ func (s *DockerSuite) TestRunWithOomScoreAdjInvalidRange(c *check.C) {
|
|
|
testRequires(c, DaemonIsLinux)
|
|
|
|
|
|
out, _, err := dockerCmdWithError("run", "--oom-score-adj", "1001", "busybox", "true")
|
|
|
- c.Assert(err, check.NotNil)
|
|
|
+ assert.ErrorContains(c, err, "")
|
|
|
expected := "Invalid value 1001, range for oom score adj is [-1000, 1000]."
|
|
|
if !strings.Contains(out, expected) {
|
|
|
c.Fatalf("Expected output to contain %q, got %q instead", expected, out)
|
|
|
}
|
|
|
out, _, err = dockerCmdWithError("run", "--oom-score-adj", "-1001", "busybox", "true")
|
|
|
- c.Assert(err, check.NotNil)
|
|
|
+ assert.ErrorContains(c, err, "")
|
|
|
expected = "Invalid value -1001, range for oom score adj is [-1000, 1000]."
|
|
|
if !strings.Contains(out, expected) {
|
|
|
c.Fatalf("Expected output to contain %q, got %q instead", expected, out)
|
|
@@ -3882,13 +3883,13 @@ func (s *DockerSuite) TestRunNamedVolumeNotRemoved(c *check.C) {
|
|
|
dockerCmd(c, "run", "--rm", "-v", "test:"+prefix+"/foo", "-v", prefix+"/bar", "busybox", "true")
|
|
|
dockerCmd(c, "volume", "inspect", "test")
|
|
|
out, _ := dockerCmd(c, "volume", "ls", "-q")
|
|
|
- c.Assert(strings.TrimSpace(out), checker.Contains, "test")
|
|
|
+ assert.Assert(c, strings.Contains(out, "test"))
|
|
|
|
|
|
dockerCmd(c, "run", "--name=test", "-v", "test:"+prefix+"/foo", "-v", prefix+"/bar", "busybox", "true")
|
|
|
dockerCmd(c, "rm", "-fv", "test")
|
|
|
dockerCmd(c, "volume", "inspect", "test")
|
|
|
out, _ = dockerCmd(c, "volume", "ls", "-q")
|
|
|
- c.Assert(strings.TrimSpace(out), checker.Contains, "test")
|
|
|
+ assert.Assert(c, strings.Contains(out, "test"))
|
|
|
}
|
|
|
|
|
|
func (s *DockerSuite) TestRunNamedVolumesFromNotRemoved(c *check.C) {
|
|
@@ -3899,11 +3900,11 @@ func (s *DockerSuite) TestRunNamedVolumesFromNotRemoved(c *check.C) {
|
|
|
dockerCmd(c, "run", "--name=child", "--volumes-from=parent", "busybox", "true")
|
|
|
|
|
|
cli, err := client.NewClientWithOpts(client.FromEnv)
|
|
|
- c.Assert(err, checker.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
defer cli.Close()
|
|
|
|
|
|
container, err := cli.ContainerInspect(context.Background(), strings.TrimSpace(cid))
|
|
|
- c.Assert(err, checker.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
var vname string
|
|
|
for _, v := range container.Mounts {
|
|
|
if v.Name != "test" {
|
|
@@ -3918,7 +3919,7 @@ func (s *DockerSuite) TestRunNamedVolumesFromNotRemoved(c *check.C) {
|
|
|
dockerCmd(c, "rm", "-fv", "child")
|
|
|
dockerCmd(c, "volume", "inspect", "test")
|
|
|
out, _ := dockerCmd(c, "volume", "ls", "-q")
|
|
|
- c.Assert(strings.TrimSpace(out), checker.Contains, "test")
|
|
|
+ assert.Assert(c, strings.Contains(out, "test"))
|
|
|
c.Assert(strings.TrimSpace(out), checker.Not(checker.Contains), vname)
|
|
|
}
|
|
|
|
|
@@ -3930,7 +3931,7 @@ func (s *DockerSuite) TestRunAttachFailedNoLeak(c *check.C) {
|
|
|
// otherwise report build 9200.
|
|
|
if runtime.GOOS == "windows" {
|
|
|
v, err := kernel.GetKernelVersion()
|
|
|
- c.Assert(err, checker.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
build, _ := strconv.Atoi(strings.Split(strings.SplitN(v.String(), " ", 3)[2][1:], ".")[0])
|
|
|
if build == 16299 {
|
|
|
c.Skip("Temporarily disabled on RS3 builds")
|
|
@@ -3938,7 +3939,7 @@ func (s *DockerSuite) TestRunAttachFailedNoLeak(c *check.C) {
|
|
|
}
|
|
|
|
|
|
nroutines, err := getGoroutineNumber()
|
|
|
- c.Assert(err, checker.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
|
|
|
runSleepingContainer(c, "--name=test", "-p", "8000:8000")
|
|
|
|
|
@@ -3968,7 +3969,7 @@ func (s *DockerSuite) TestRunVolumeWithOneCharacter(c *check.C) {
|
|
|
testRequires(c, DaemonIsLinux)
|
|
|
|
|
|
out, _ := dockerCmd(c, "run", "-v", "/tmp/q:/foo", "busybox", "sh", "-c", "find /foo")
|
|
|
- c.Assert(strings.TrimSpace(out), checker.Equals, "/foo")
|
|
|
+ assert.Equal(c, strings.TrimSpace(out), "/foo")
|
|
|
}
|
|
|
|
|
|
func (s *DockerSuite) TestRunVolumeCopyFlag(c *check.C) {
|
|
@@ -3980,29 +3981,29 @@ func (s *DockerSuite) TestRunVolumeCopyFlag(c *check.C) {
|
|
|
|
|
|
// test with the nocopy flag
|
|
|
out, _, err := dockerCmdWithError("run", "-v", "test:/foo:nocopy", "volumecopy")
|
|
|
- c.Assert(err, checker.NotNil, check.Commentf("%s", out))
|
|
|
+ assert.ErrorContains(c, err, "", out)
|
|
|
// test default behavior which is to copy for non-binds
|
|
|
out, _ = dockerCmd(c, "run", "-v", "test:/foo", "volumecopy")
|
|
|
- c.Assert(strings.TrimSpace(out), checker.Equals, "hello")
|
|
|
+ assert.Equal(c, strings.TrimSpace(out), "hello")
|
|
|
// error out when the volume is already populated
|
|
|
out, _, err = dockerCmdWithError("run", "-v", "test:/foo:copy", "volumecopy")
|
|
|
- c.Assert(err, checker.NotNil, check.Commentf("%s", out))
|
|
|
+ assert.ErrorContains(c, err, "", out)
|
|
|
// do not error out when copy isn't explicitly set even though it's already populated
|
|
|
out, _ = dockerCmd(c, "run", "-v", "test:/foo", "volumecopy")
|
|
|
- c.Assert(strings.TrimSpace(out), checker.Equals, "hello")
|
|
|
+ assert.Equal(c, strings.TrimSpace(out), "hello")
|
|
|
|
|
|
// do not allow copy modes on volumes-from
|
|
|
dockerCmd(c, "run", "--name=test", "-v", "/foo", "busybox", "true")
|
|
|
out, _, err = dockerCmdWithError("run", "--volumes-from=test:copy", "busybox", "true")
|
|
|
- c.Assert(err, checker.NotNil, check.Commentf("%s", out))
|
|
|
+ assert.ErrorContains(c, err, "", out)
|
|
|
out, _, err = dockerCmdWithError("run", "--volumes-from=test:nocopy", "busybox", "true")
|
|
|
- c.Assert(err, checker.NotNil, check.Commentf("%s", out))
|
|
|
+ assert.ErrorContains(c, err, "", out)
|
|
|
|
|
|
// do not allow copy modes on binds
|
|
|
out, _, err = dockerCmdWithError("run", "-v", "/foo:/bar:copy", "busybox", "true")
|
|
|
- c.Assert(err, checker.NotNil, check.Commentf("%s", out))
|
|
|
+ assert.ErrorContains(c, err, "", out)
|
|
|
out, _, err = dockerCmdWithError("run", "-v", "/foo:/bar:nocopy", "busybox", "true")
|
|
|
- c.Assert(err, checker.NotNil, check.Commentf("%s", out))
|
|
|
+ assert.ErrorContains(c, err, "", out)
|
|
|
}
|
|
|
|
|
|
// Test case for #21976
|
|
@@ -4054,7 +4055,7 @@ func (s *DockerSuite) TestRunRmAndWait(c *check.C) {
|
|
|
|
|
|
out, code, err := dockerCmdWithError("wait", "test")
|
|
|
c.Assert(err, checker.IsNil, check.Commentf("out: %s; exit code: %d", out, code))
|
|
|
- c.Assert(out, checker.Equals, "2\n", check.Commentf("exit code: %d", code))
|
|
|
+ assert.Equal(c, out, "2\n", "exit code: %d", code)
|
|
|
c.Assert(code, checker.Equals, 0)
|
|
|
}
|
|
|
|
|
@@ -4117,29 +4118,29 @@ func (s *DockerDaemonSuite) TestRunWithUlimitAndDaemonDefault(c *check.C) {
|
|
|
|
|
|
name := "test-A"
|
|
|
_, err := s.d.Cmd("run", "--name", name, "-d", "busybox", "top")
|
|
|
- c.Assert(err, checker.IsNil)
|
|
|
- c.Assert(s.d.WaitRun(name), check.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
+ assert.NilError(c, s.d.WaitRun(name))
|
|
|
|
|
|
out, err := s.d.Cmd("inspect", "--format", "{{.HostConfig.Ulimits}}", name)
|
|
|
- c.Assert(err, checker.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
c.Assert(out, checker.Contains, "[nofile=65535:65535]")
|
|
|
|
|
|
name = "test-B"
|
|
|
_, err = s.d.Cmd("run", "--name", name, "--ulimit=nofile=42", "-d", "busybox", "top")
|
|
|
- c.Assert(err, checker.IsNil)
|
|
|
- c.Assert(s.d.WaitRun(name), check.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
+ assert.NilError(c, s.d.WaitRun(name))
|
|
|
|
|
|
out, err = s.d.Cmd("inspect", "--format", "{{.HostConfig.Ulimits}}", name)
|
|
|
- c.Assert(err, checker.IsNil)
|
|
|
- c.Assert(out, checker.Contains, "[nofile=42:42]")
|
|
|
+ assert.NilError(c, err)
|
|
|
+ assert.Assert(c, strings.Contains(out, "[nofile=42:42]"))
|
|
|
}
|
|
|
|
|
|
func (s *DockerSuite) TestRunStoppedLoggingDriverNoLeak(c *check.C) {
|
|
|
nroutines, err := getGoroutineNumber()
|
|
|
- c.Assert(err, checker.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
|
|
|
out, _, err := dockerCmdWithError("run", "--name=fail", "--log-driver=splunk", "busybox", "true")
|
|
|
- c.Assert(err, checker.NotNil)
|
|
|
+ assert.ErrorContains(c, err, "")
|
|
|
c.Assert(out, checker.Contains, "failed to initialize logging driver", check.Commentf("error should be about logging driver, got output %s", out))
|
|
|
|
|
|
// NGoroutines is not updated right away, so we need to wait before failing
|
|
@@ -4187,7 +4188,7 @@ func (s *DockerSuite) TestRunDuplicateMount(c *check.C) {
|
|
|
testRequires(c, testEnv.IsLocalDaemon, DaemonIsLinux, NotUserNamespace)
|
|
|
|
|
|
tmpFile, err := ioutil.TempFile("", "touch-me")
|
|
|
- c.Assert(err, checker.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
defer tmpFile.Close()
|
|
|
|
|
|
data := "touch-me-foo-bar\n"
|
|
@@ -4208,30 +4209,30 @@ func (s *DockerSuite) TestRunWindowsWithCPUCount(c *check.C) {
|
|
|
testRequires(c, DaemonIsWindows)
|
|
|
|
|
|
out, _ := dockerCmd(c, "run", "--cpu-count=1", "--name", "test", "busybox", "echo", "testing")
|
|
|
- c.Assert(strings.TrimSpace(out), checker.Equals, "testing")
|
|
|
+ assert.Equal(c, strings.TrimSpace(out), "testing")
|
|
|
|
|
|
out = inspectField(c, "test", "HostConfig.CPUCount")
|
|
|
- c.Assert(out, check.Equals, "1")
|
|
|
+ assert.Equal(c, out, "1")
|
|
|
}
|
|
|
|
|
|
func (s *DockerSuite) TestRunWindowsWithCPUShares(c *check.C) {
|
|
|
testRequires(c, DaemonIsWindows)
|
|
|
|
|
|
out, _ := dockerCmd(c, "run", "--cpu-shares=1000", "--name", "test", "busybox", "echo", "testing")
|
|
|
- c.Assert(strings.TrimSpace(out), checker.Equals, "testing")
|
|
|
+ assert.Equal(c, strings.TrimSpace(out), "testing")
|
|
|
|
|
|
out = inspectField(c, "test", "HostConfig.CPUShares")
|
|
|
- c.Assert(out, check.Equals, "1000")
|
|
|
+ assert.Equal(c, out, "1000")
|
|
|
}
|
|
|
|
|
|
func (s *DockerSuite) TestRunWindowsWithCPUPercent(c *check.C) {
|
|
|
testRequires(c, DaemonIsWindows)
|
|
|
|
|
|
out, _ := dockerCmd(c, "run", "--cpu-percent=80", "--name", "test", "busybox", "echo", "testing")
|
|
|
- c.Assert(strings.TrimSpace(out), checker.Equals, "testing")
|
|
|
+ assert.Equal(c, strings.TrimSpace(out), "testing")
|
|
|
|
|
|
out = inspectField(c, "test", "HostConfig.CPUPercent")
|
|
|
- c.Assert(out, check.Equals, "80")
|
|
|
+ assert.Equal(c, out, "80")
|
|
|
}
|
|
|
|
|
|
func (s *DockerSuite) TestRunProcessIsolationWithCPUCountCPUSharesAndCPUPercent(c *check.C) {
|
|
@@ -4243,13 +4244,13 @@ func (s *DockerSuite) TestRunProcessIsolationWithCPUCountCPUSharesAndCPUPercent(
|
|
|
c.Assert(strings.TrimSpace(out), checker.Contains, "testing")
|
|
|
|
|
|
out = inspectField(c, "test", "HostConfig.CPUCount")
|
|
|
- c.Assert(out, check.Equals, "1")
|
|
|
+ assert.Equal(c, out, "1")
|
|
|
|
|
|
out = inspectField(c, "test", "HostConfig.CPUShares")
|
|
|
- c.Assert(out, check.Equals, "0")
|
|
|
+ assert.Equal(c, out, "0")
|
|
|
|
|
|
out = inspectField(c, "test", "HostConfig.CPUPercent")
|
|
|
- c.Assert(out, check.Equals, "0")
|
|
|
+ assert.Equal(c, out, "0")
|
|
|
}
|
|
|
|
|
|
func (s *DockerSuite) TestRunHypervIsolationWithCPUCountCPUSharesAndCPUPercent(c *check.C) {
|
|
@@ -4259,13 +4260,13 @@ func (s *DockerSuite) TestRunHypervIsolationWithCPUCountCPUSharesAndCPUPercent(c
|
|
|
c.Assert(strings.TrimSpace(out), checker.Contains, "testing")
|
|
|
|
|
|
out = inspectField(c, "test", "HostConfig.CPUCount")
|
|
|
- c.Assert(out, check.Equals, "1")
|
|
|
+ assert.Equal(c, out, "1")
|
|
|
|
|
|
out = inspectField(c, "test", "HostConfig.CPUShares")
|
|
|
- c.Assert(out, check.Equals, "1000")
|
|
|
+ assert.Equal(c, out, "1000")
|
|
|
|
|
|
out = inspectField(c, "test", "HostConfig.CPUPercent")
|
|
|
- c.Assert(out, check.Equals, "80")
|
|
|
+ assert.Equal(c, out, "80")
|
|
|
}
|
|
|
|
|
|
// Test for #25099
|
|
@@ -4275,16 +4276,16 @@ func (s *DockerSuite) TestRunEmptyEnv(c *check.C) {
|
|
|
expectedOutput := "invalid environment variable:"
|
|
|
|
|
|
out, _, err := dockerCmdWithError("run", "-e", "", "busybox", "true")
|
|
|
- c.Assert(err, checker.NotNil)
|
|
|
- c.Assert(out, checker.Contains, expectedOutput)
|
|
|
+ assert.ErrorContains(c, err, "")
|
|
|
+ assert.Assert(c, strings.Contains(out, expectedOutput))
|
|
|
|
|
|
out, _, err = dockerCmdWithError("run", "-e", "=", "busybox", "true")
|
|
|
- c.Assert(err, checker.NotNil)
|
|
|
- c.Assert(out, checker.Contains, expectedOutput)
|
|
|
+ assert.ErrorContains(c, err, "")
|
|
|
+ assert.Assert(c, strings.Contains(out, expectedOutput))
|
|
|
|
|
|
out, _, err = dockerCmdWithError("run", "-e", "=foo", "busybox", "true")
|
|
|
- c.Assert(err, checker.NotNil)
|
|
|
- c.Assert(out, checker.Contains, expectedOutput)
|
|
|
+ assert.ErrorContains(c, err, "")
|
|
|
+ assert.Assert(c, strings.Contains(out, expectedOutput))
|
|
|
}
|
|
|
|
|
|
// #28658
|
|
@@ -4306,7 +4307,7 @@ func (s *DockerSuite) TestSlowStdinClosing(c *check.C) {
|
|
|
case <-time.After(30 * time.Second):
|
|
|
c.Fatal("running container timed out") // cleanup in teardown
|
|
|
case err := <-done:
|
|
|
- c.Assert(err, checker.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -4322,12 +4323,12 @@ func (s *delayedReader) Read([]byte) (int, error) {
|
|
|
func (s *DockerSuite) TestRunMountReadOnlyDevShm(c *check.C) {
|
|
|
testRequires(c, testEnv.IsLocalDaemon, DaemonIsLinux, NotUserNamespace)
|
|
|
emptyDir, err := ioutil.TempDir("", "test-read-only-dev-shm")
|
|
|
- c.Assert(err, check.IsNil)
|
|
|
+ assert.NilError(c, err)
|
|
|
defer os.RemoveAll(emptyDir)
|
|
|
out, _, err := dockerCmdWithError("run", "--rm", "--read-only",
|
|
|
"-v", fmt.Sprintf("%s:/dev/shm:ro", emptyDir),
|
|
|
"busybox", "touch", "/dev/shm/foo")
|
|
|
- c.Assert(err, checker.NotNil, check.Commentf("%s", out))
|
|
|
+ assert.ErrorContains(c, err, "", out)
|
|
|
c.Assert(out, checker.Contains, "Read-only file system")
|
|
|
}
|
|
|
|
|
@@ -4516,7 +4517,7 @@ func (s *DockerSuite) TestRunHostnameFQDN(c *check.C) {
|
|
|
|
|
|
expectedOutput := "foobar.example.com\nfoobar.example.com\nfoobar\nexample.com\nfoobar.example.com"
|
|
|
out, _ := dockerCmd(c, "run", "--hostname=foobar.example.com", "busybox", "sh", "-c", `cat /etc/hostname && hostname && hostname -s && hostname -d && hostname -f`)
|
|
|
- c.Assert(strings.TrimSpace(out), checker.Equals, expectedOutput)
|
|
|
+ assert.Equal(c, strings.TrimSpace(out), expectedOutput)
|
|
|
|
|
|
out, _ = dockerCmd(c, "run", "--hostname=foobar.example.com", "busybox", "sh", "-c", `cat /etc/hosts`)
|
|
|
expectedOutput = "foobar.example.com foobar"
|
|
@@ -4529,7 +4530,7 @@ func (s *DockerSuite) TestRunHostnameInHostMode(c *check.C) {
|
|
|
|
|
|
expectedOutput := "foobar\nfoobar"
|
|
|
out, _ := dockerCmd(c, "run", "--net=host", "--hostname=foobar", "busybox", "sh", "-c", `echo $HOSTNAME && hostname`)
|
|
|
- c.Assert(strings.TrimSpace(out), checker.Equals, expectedOutput)
|
|
|
+ assert.Equal(c, strings.TrimSpace(out), expectedOutput)
|
|
|
}
|
|
|
|
|
|
func (s *DockerSuite) TestRunAddDeviceCgroupRule(c *check.C) {
|
|
@@ -4543,12 +4544,12 @@ func (s *DockerSuite) TestRunAddDeviceCgroupRule(c *check.C) {
|
|
|
}
|
|
|
|
|
|
out, _ = dockerCmd(c, "run", "--rm", fmt.Sprintf("--device-cgroup-rule=%s", deviceRule), "busybox", "grep", deviceRule, "/sys/fs/cgroup/devices/devices.list")
|
|
|
- c.Assert(strings.TrimSpace(out), checker.Equals, deviceRule)
|
|
|
+ assert.Equal(c, strings.TrimSpace(out), deviceRule)
|
|
|
}
|
|
|
|
|
|
// Verifies that running as local system is operating correctly on Windows
|
|
|
func (s *DockerSuite) TestWindowsRunAsSystem(c *check.C) {
|
|
|
testRequires(c, DaemonIsWindowsAtLeastBuild(15000))
|
|
|
out, _ := dockerCmd(c, "run", "--net=none", `--user=nt authority\system`, "--hostname=XYZZY", minimalBaseImage(), "cmd", "/c", `@echo %USERNAME%`)
|
|
|
- c.Assert(strings.TrimSpace(out), checker.Equals, "XYZZY$")
|
|
|
+ assert.Equal(c, strings.TrimSpace(out), "XYZZY$")
|
|
|
}
|