Signed-off-by: Jessica Frazelle <acidburn@docker.com>
| ... | ... |
@@ -61,6 +61,7 @@ func (s *DockerSuite) TestDiffEnsureOnlyKmsgAndPtmx(c *check.C) {
|
| 61 | 61 |
"C /dev": true, |
| 62 | 62 |
"A /dev/full": true, // busybox |
| 63 | 63 |
"C /dev/ptmx": true, // libcontainer |
| 64 |
+ "A /dev/mqueue": true, // lxc |
|
| 64 | 65 |
"A /dev/kmsg": true, // lxc |
| 65 | 66 |
"A /dev/fd": true, |
| 66 | 67 |
"A /dev/fuse": true, |
| ... | ... |
@@ -1197,7 +1197,7 @@ func (s *DockerSuite) TestRunNonRootUserResolvName(c *check.C) {
|
| 1197 | 1197 |
// uses the host's /etc/resolv.conf and does not have any dns options provided. |
| 1198 | 1198 |
func (s *DockerSuite) TestRunResolvconfUpdate(c *check.C) {
|
| 1199 | 1199 |
// Not applicable on Windows as testing unix specific functionality |
| 1200 |
- testRequires(c, SameHostDaemon, DaemonIsLinux) |
|
| 1200 |
+ testRequires(c, SameHostDaemon, DaemonIsLinux, NativeExecDriver) |
|
| 1201 | 1201 |
|
| 1202 | 1202 |
tmpResolvConf := []byte("search pommesfrites.fr\nnameserver 12.34.56.78\n")
|
| 1203 | 1203 |
tmpLocalhostResolvConf := []byte("nameserver 127.0.0.1")
|
| ... | ... |
@@ -3425,13 +3425,10 @@ func (s *DockerSuite) TestContainersInUserDefinedNetwork(c *check.C) {
|
| 3425 | 3425 |
dockerCmd(c, "run", "-d", "--net=testnetwork", "--name=first", "busybox", "top") |
| 3426 | 3426 |
c.Assert(waitRun("first"), check.IsNil)
|
| 3427 | 3427 |
dockerCmd(c, "run", "-t", "--net=testnetwork", "--name=second", "busybox", "ping", "-c", "1", "first") |
| 3428 |
- dockerCmd(c, "stop", "first") |
|
| 3429 |
- dockerCmd(c, "stop", "second") |
|
| 3430 |
- dockerCmd(c, "network", "rm", "testnetwork") |
|
| 3431 | 3428 |
} |
| 3432 | 3429 |
|
| 3433 | 3430 |
func (s *DockerSuite) TestContainersInMultipleNetworks(c *check.C) {
|
| 3434 |
- testRequires(c, DaemonIsLinux, NotUserNamespace) |
|
| 3431 |
+ testRequires(c, DaemonIsLinux, NotUserNamespace, NativeExecDriver) |
|
| 3435 | 3432 |
// Create 2 networks using bridge driver |
| 3436 | 3433 |
dockerCmd(c, "network", "create", "-d", "bridge", "testnetwork1") |
| 3437 | 3434 |
dockerCmd(c, "network", "create", "-d", "bridge", "testnetwork2") |
| ... | ... |
@@ -3447,14 +3444,10 @@ func (s *DockerSuite) TestContainersInMultipleNetworks(c *check.C) {
|
| 3447 | 3447 |
dockerCmd(c, "network", "connect", "testnetwork2", "second") |
| 3448 | 3448 |
// Check connectivity between containers |
| 3449 | 3449 |
dockerCmd(c, "exec", "second", "ping", "-c", "1", "first.testnetwork2") |
| 3450 |
- dockerCmd(c, "stop", "first") |
|
| 3451 |
- dockerCmd(c, "stop", "second") |
|
| 3452 |
- dockerCmd(c, "network", "rm", "testnetwork1") |
|
| 3453 |
- dockerCmd(c, "network", "rm", "testnetwork2") |
|
| 3454 | 3450 |
} |
| 3455 | 3451 |
|
| 3456 | 3452 |
func (s *DockerSuite) TestContainersNetworkIsolation(c *check.C) {
|
| 3457 |
- testRequires(c, DaemonIsLinux, NotUserNamespace) |
|
| 3453 |
+ testRequires(c, DaemonIsLinux, NotUserNamespace, NativeExecDriver) |
|
| 3458 | 3454 |
// Create 2 networks using bridge driver |
| 3459 | 3455 |
dockerCmd(c, "network", "create", "-d", "bridge", "testnetwork1") |
| 3460 | 3456 |
dockerCmd(c, "network", "create", "-d", "bridge", "testnetwork2") |
| ... | ... |
@@ -3478,11 +3471,6 @@ func (s *DockerSuite) TestContainersNetworkIsolation(c *check.C) {
|
| 3478 | 3478 |
// ping must fail again |
| 3479 | 3479 |
_, _, err = dockerCmdWithError("exec", "first", "ping", "-c", "1", "second")
|
| 3480 | 3480 |
c.Assert(err, check.NotNil) |
| 3481 |
- |
|
| 3482 |
- dockerCmd(c, "stop", "first") |
|
| 3483 |
- dockerCmd(c, "stop", "second") |
|
| 3484 |
- dockerCmd(c, "network", "rm", "testnetwork1") |
|
| 3485 |
- dockerCmd(c, "network", "rm", "testnetwork2") |
|
| 3486 | 3481 |
} |
| 3487 | 3482 |
|
| 3488 | 3483 |
func (s *DockerSuite) TestNetworkRmWithActiveContainers(c *check.C) {
|
| ... | ... |
@@ -3501,17 +3489,14 @@ func (s *DockerSuite) TestNetworkRmWithActiveContainers(c *check.C) {
|
| 3501 | 3501 |
dockerCmd(c, "stop", "first") |
| 3502 | 3502 |
_, _, err = dockerCmdWithError("network", "rm", "testnetwork1")
|
| 3503 | 3503 |
c.Assert(err, check.NotNil) |
| 3504 |
- |
|
| 3505 |
- dockerCmd(c, "stop", "second") |
|
| 3506 |
- // Network delete must succeed after all the connected containers are inactive |
|
| 3507 |
- dockerCmd(c, "network", "rm", "testnetwork1") |
|
| 3508 | 3504 |
} |
| 3509 | 3505 |
|
| 3510 | 3506 |
func (s *DockerSuite) TestContainerRestartInMultipleNetworks(c *check.C) {
|
| 3511 |
- testRequires(c, DaemonIsLinux, NotUserNamespace) |
|
| 3507 |
+ testRequires(c, DaemonIsLinux, NotUserNamespace, NativeExecDriver) |
|
| 3512 | 3508 |
// Create 2 networks using bridge driver |
| 3513 | 3509 |
dockerCmd(c, "network", "create", "-d", "bridge", "testnetwork1") |
| 3514 | 3510 |
dockerCmd(c, "network", "create", "-d", "bridge", "testnetwork2") |
| 3511 |
+ |
|
| 3515 | 3512 |
// Run and connect containers to testnetwork1 |
| 3516 | 3513 |
dockerCmd(c, "run", "-d", "--net=testnetwork1", "--name=first", "busybox", "top") |
| 3517 | 3514 |
c.Assert(waitRun("first"), check.IsNil)
|
| ... | ... |
@@ -3536,11 +3521,6 @@ func (s *DockerSuite) TestContainerRestartInMultipleNetworks(c *check.C) {
|
| 3536 | 3536 |
dockerCmd(c, "start", "second") |
| 3537 | 3537 |
dockerCmd(c, "exec", "first", "ping", "-c", "1", "second.testnetwork1") |
| 3538 | 3538 |
dockerCmd(c, "exec", "second", "ping", "-c", "1", "first.testnetwork2") |
| 3539 |
- |
|
| 3540 |
- dockerCmd(c, "stop", "first") |
|
| 3541 |
- dockerCmd(c, "stop", "second") |
|
| 3542 |
- dockerCmd(c, "network", "rm", "testnetwork1") |
|
| 3543 |
- dockerCmd(c, "network", "rm", "testnetwork2") |
|
| 3544 | 3539 |
} |
| 3545 | 3540 |
|
| 3546 | 3541 |
func (s *DockerSuite) TestContainerWithConflictingHostNetworks(c *check.C) {
|
| ... | ... |
@@ -3555,8 +3535,6 @@ func (s *DockerSuite) TestContainerWithConflictingHostNetworks(c *check.C) {
|
| 3555 | 3555 |
// Connecting to the user defined network must fail |
| 3556 | 3556 |
_, _, err := dockerCmdWithError("network", "connect", "testnetwork1", "first")
|
| 3557 | 3557 |
c.Assert(err, check.NotNil) |
| 3558 |
- dockerCmd(c, "stop", "first") |
|
| 3559 |
- dockerCmd(c, "network", "rm", "testnetwork1") |
|
| 3560 | 3558 |
} |
| 3561 | 3559 |
|
| 3562 | 3560 |
func (s *DockerSuite) TestContainerWithConflictingSharedNetwork(c *check.C) {
|
| ... | ... |
@@ -3574,10 +3552,6 @@ func (s *DockerSuite) TestContainerWithConflictingSharedNetwork(c *check.C) {
|
| 3574 | 3574 |
out, _, err := dockerCmdWithError("network", "connect", "testnetwork1", "second")
|
| 3575 | 3575 |
c.Assert(err, check.NotNil) |
| 3576 | 3576 |
c.Assert(out, checker.Contains, runconfig.ErrConflictSharedNetwork.Error()) |
| 3577 |
- |
|
| 3578 |
- dockerCmd(c, "stop", "first") |
|
| 3579 |
- dockerCmd(c, "stop", "second") |
|
| 3580 |
- dockerCmd(c, "network", "rm", "testnetwork1") |
|
| 3581 | 3577 |
} |
| 3582 | 3578 |
|
| 3583 | 3579 |
func (s *DockerSuite) TestContainerWithConflictingNoneNetwork(c *check.C) {
|
| ... | ... |
@@ -3600,10 +3574,6 @@ func (s *DockerSuite) TestContainerWithConflictingNoneNetwork(c *check.C) {
|
| 3600 | 3600 |
// Connect second container to none network. it must fail as well |
| 3601 | 3601 |
_, _, err = dockerCmdWithError("network", "connect", "none", "second")
|
| 3602 | 3602 |
c.Assert(err, check.NotNil) |
| 3603 |
- |
|
| 3604 |
- dockerCmd(c, "stop", "first") |
|
| 3605 |
- dockerCmd(c, "stop", "second") |
|
| 3606 |
- dockerCmd(c, "network", "rm", "testnetwork1") |
|
| 3607 | 3603 |
} |
| 3608 | 3604 |
|
| 3609 | 3605 |
// #11957 - stdin with no tty does not exit if stdin is not closed even though container exited |
| ... | ... |
@@ -420,7 +420,7 @@ func (s *DockerSuite) TestRunInvalidCpusetMemsFlagValue(c *check.C) {
|
| 420 | 420 |
} |
| 421 | 421 |
|
| 422 | 422 |
func (s *DockerSuite) TestRunInvalidCPUShares(c *check.C) {
|
| 423 |
- testRequires(c, cpuShare) |
|
| 423 |
+ testRequires(c, cpuShare, NativeExecDriver) |
|
| 424 | 424 |
out, _, err := dockerCmdWithError("run", "--cpu-shares", "1", "busybox", "echo", "test")
|
| 425 | 425 |
c.Assert(err, check.NotNil, check.Commentf(out)) |
| 426 | 426 |
expected := "The minimum allowed cpu-shares is 2" |
| ... | ... |
@@ -506,6 +506,42 @@ func deleteAllContainers() error {
|
| 506 | 506 |
return nil |
| 507 | 507 |
} |
| 508 | 508 |
|
| 509 |
+func deleteAllNetworks() error {
|
|
| 510 |
+ networks, err := getAllNetworks() |
|
| 511 |
+ if err != nil {
|
|
| 512 |
+ return err |
|
| 513 |
+ } |
|
| 514 |
+ var errors []string |
|
| 515 |
+ for _, n := range networks {
|
|
| 516 |
+ if n.Name != "bridge" {
|
|
| 517 |
+ status, b, err := sockRequest("DELETE", "/networks/"+n.Name, nil)
|
|
| 518 |
+ if err != nil {
|
|
| 519 |
+ errors = append(errors, err.Error()) |
|
| 520 |
+ continue |
|
| 521 |
+ } |
|
| 522 |
+ if status != http.StatusNoContent {
|
|
| 523 |
+ errors = append(errors, fmt.Sprintf("error deleting network %s: %s", n.Name, string(b)))
|
|
| 524 |
+ } |
|
| 525 |
+ } |
|
| 526 |
+ } |
|
| 527 |
+ if len(errors) > 0 {
|
|
| 528 |
+ return fmt.Errorf(strings.Join(errors, "\n")) |
|
| 529 |
+ } |
|
| 530 |
+ return nil |
|
| 531 |
+} |
|
| 532 |
+ |
|
| 533 |
+func getAllNetworks() ([]types.NetworkResource, error) {
|
|
| 534 |
+ var networks []types.NetworkResource |
|
| 535 |
+ _, b, err := sockRequest("GET", "/networks", nil)
|
|
| 536 |
+ if err != nil {
|
|
| 537 |
+ return nil, err |
|
| 538 |
+ } |
|
| 539 |
+ if err := json.Unmarshal(b, &networks); err != nil {
|
|
| 540 |
+ return nil, err |
|
| 541 |
+ } |
|
| 542 |
+ return networks, nil |
|
| 543 |
+} |
|
| 544 |
+ |
|
| 509 | 545 |
func deleteAllVolumes() error {
|
| 510 | 546 |
volumes, err := getAllVolumes() |
| 511 | 547 |
if err != nil {
|