From 4f339570cbd3cc57f5410c4ca08c7d7e03e6e56f Mon Sep 17 00:00:00 2001 From: Stefan Scherer Date: Thu, 26 Nov 2015 00:38:33 +0100 Subject: [PATCH] Skip failing tests on ARM to get red/green feedback from Jenkins Signed-off-by: Stefan Scherer --- hack/make.sh | 2 +- integration-cli/check_test.go | 1 + .../docker_cli_events_unix_test.go | 2 +- .../docker_cli_network_unix_test.go | 7 +++--- integration-cli/docker_cli_pull_local_test.go | 1 + integration-cli/docker_cli_push_test.go | 1 + integration-cli/docker_cli_restart_test.go | 2 +- integration-cli/docker_cli_run_test.go | 24 +++++++++---------- integration-cli/docker_cli_run_unix_test.go | 6 ++--- integration-cli/requirements.go | 4 ++++ 10 files changed, 29 insertions(+), 21 deletions(-) diff --git a/hack/make.sh b/hack/make.sh index 78f25cdcbc..d68b9bf73b 100755 --- a/hack/make.sh +++ b/hack/make.sh @@ -145,7 +145,7 @@ ORIG_BUILDFLAGS=( -a -tags "autogen netgo static_build sqlite_omit_load_extensio # see https://github.com/golang/go/issues/9369#issuecomment-69864440 for why -installsuffix is necessary here BUILDFLAGS=( $BUILDFLAGS "${ORIG_BUILDFLAGS[@]}" ) # Test timeout. -: ${TIMEOUT:=120m} +: ${TIMEOUT:=180m} TESTFLAGS+=" -test.timeout=${TIMEOUT}" LDFLAGS_STATIC_DOCKER=" diff --git a/integration-cli/check_test.go b/integration-cli/check_test.go index cac8176074..b00bd11fe2 100644 --- a/integration-cli/check_test.go +++ b/integration-cli/check_test.go @@ -128,6 +128,7 @@ type DockerTrustSuite struct { } func (s *DockerTrustSuite) SetUpTest(c *check.C) { + testRequires(c, NotArm) s.reg = setupRegistry(c, false) s.not = setupNotary(c) } diff --git a/integration-cli/docker_cli_events_unix_test.go b/integration-cli/docker_cli_events_unix_test.go index 7afc8fc105..58adaad247 100644 --- a/integration-cli/docker_cli_events_unix_test.go +++ b/integration-cli/docker_cli_events_unix_test.go @@ -76,7 +76,7 @@ func (s *DockerSuite) TestEventsOOMDisableFalse(c *check.C) { } func (s *DockerSuite) TestEventsOOMDisableTrue(c *check.C) { - testRequires(c, DaemonIsLinux, oomControl, memoryLimitSupport, NotGCCGO) + testRequires(c, DaemonIsLinux, oomControl, memoryLimitSupport, NotGCCGO, NotArm) errChan := make(chan error) go func() { diff --git a/integration-cli/docker_cli_network_unix_test.go b/integration-cli/docker_cli_network_unix_test.go index d09c2f2917..05eb71a382 100644 --- a/integration-cli/docker_cli_network_unix_test.go +++ b/integration-cli/docker_cli_network_unix_test.go @@ -690,7 +690,7 @@ func (s *DockerDaemonSuite) TestDockerNetworkNoDiscoveryDefaultBridgeNetwork(c * } func (s *DockerNetworkSuite) TestDockerNetworkAnonymousEndpoint(c *check.C) { - testRequires(c, ExecSupport) + testRequires(c, ExecSupport, NotArm) hostsFile := "/etc/hosts" cstmBridgeNw := "custom-bridge-nw" cstmBridgeNw1 := "custom-bridge-nw1" @@ -968,6 +968,7 @@ func (s *DockerNetworkSuite) TestDockerNetworkDisconnectFromHost(c *check.C) { } func (s *DockerNetworkSuite) TestDockerNetworkConnectWithPortMapping(c *check.C) { + testRequires(c, NotArm) dockerCmd(c, "network", "create", "test1") dockerCmd(c, "run", "-d", "--name", "c1", "-p", "5000:5000", "busybox", "top") c.Assert(waitRun("c1"), check.IsNil) @@ -1113,7 +1114,7 @@ func verifyIPAddresses(c *check.C, cName, nwname, ipv4, ipv6 string) { } func (s *DockerSuite) TestUserDefinedNetworkConnectDisconnectLink(c *check.C) { - testRequires(c, DaemonIsLinux, NotUserNamespace) + testRequires(c, DaemonIsLinux, NotUserNamespace, NotArm) dockerCmd(c, "network", "create", "-d", "bridge", "foo1") dockerCmd(c, "network", "create", "-d", "bridge", "foo2") @@ -1196,7 +1197,7 @@ func (s *DockerNetworkSuite) TestDockerNetworkDisconnectDefault(c *check.C) { } func (s *DockerSuite) TestUserDefinedNetworkConnectDisconnectAlias(c *check.C) { - testRequires(c, DaemonIsLinux, NotUserNamespace) + testRequires(c, DaemonIsLinux, NotUserNamespace, NotArm) dockerCmd(c, "network", "create", "-d", "bridge", "net1") dockerCmd(c, "network", "create", "-d", "bridge", "net2") diff --git a/integration-cli/docker_cli_pull_local_test.go b/integration-cli/docker_cli_pull_local_test.go index 1037951d24..76e1b3e5a0 100644 --- a/integration-cli/docker_cli_pull_local_test.go +++ b/integration-cli/docker_cli_pull_local_test.go @@ -292,6 +292,7 @@ func (s *DockerRegistrySuite) TestPullFallbackOn404(c *check.C) { } func (s *DockerRegistrySuite) TestPullManifestList(c *check.C) { + testRequires(c, NotArm) pushDigest, err := setupImage(c) c.Assert(err, checker.IsNil, check.Commentf("error setting up image")) diff --git a/integration-cli/docker_cli_push_test.go b/integration-cli/docker_cli_push_test.go index c100772b00..645df54aa6 100644 --- a/integration-cli/docker_cli_push_test.go +++ b/integration-cli/docker_cli_push_test.go @@ -148,6 +148,7 @@ func (s *DockerSchema1RegistrySuite) TestPushEmptyLayer(c *check.C) { } func (s *DockerRegistrySuite) TestCrossRepositoryLayerPush(c *check.C) { + testRequires(c, NotArm) sourceRepoName := fmt.Sprintf("%v/dockercli/busybox", privateRegistryURL) // tag the image to upload it to the private registry dockerCmd(c, "tag", "busybox", sourceRepoName) diff --git a/integration-cli/docker_cli_restart_test.go b/integration-cli/docker_cli_restart_test.go index 2bc28fd328..0194f5a413 100644 --- a/integration-cli/docker_cli_restart_test.go +++ b/integration-cli/docker_cli_restart_test.go @@ -155,7 +155,7 @@ func (s *DockerSuite) TestContainerRestartSuccess(c *check.C) { } func (s *DockerSuite) TestUserDefinedNetworkWithRestartPolicy(c *check.C) { - testRequires(c, DaemonIsLinux, SameHostDaemon, NotUserNamespace) + testRequires(c, DaemonIsLinux, SameHostDaemon, NotUserNamespace, NotArm) dockerCmd(c, "network", "create", "-d", "bridge", "udNet") dockerCmd(c, "run", "-d", "--net=udNet", "--name=first", "busybox", "top") diff --git a/integration-cli/docker_cli_run_test.go b/integration-cli/docker_cli_run_test.go index f34c235d35..d2a60b2997 100644 --- a/integration-cli/docker_cli_run_test.go +++ b/integration-cli/docker_cli_run_test.go @@ -57,7 +57,7 @@ func (s *DockerSuite) TestRunLeakyFileDescriptors(c *check.C) { // it should be possible to lookup Google DNS // this will fail when Internet access is unavailable func (s *DockerSuite) TestRunLookupGoogleDns(c *check.C) { - testRequires(c, Network) + testRequires(c, Network, NotArm) image := DefaultImage if daemonPlatform == "windows" { // nslookup isn't present in Windows busybox. Is built-in. @@ -200,7 +200,7 @@ func (s *DockerSuite) TestRunLinksContainerWithContainerId(c *check.C) { } func (s *DockerSuite) TestUserDefinedNetworkLinks(c *check.C) { - testRequires(c, DaemonIsLinux, NotUserNamespace) + testRequires(c, DaemonIsLinux, NotUserNamespace, NotArm) dockerCmd(c, "network", "create", "-d", "bridge", "udlinkNet") dockerCmd(c, "run", "-d", "--net=udlinkNet", "--name=first", "busybox", "top") @@ -236,7 +236,7 @@ func (s *DockerSuite) TestUserDefinedNetworkLinks(c *check.C) { } func (s *DockerSuite) TestUserDefinedNetworkLinksWithRestart(c *check.C) { - testRequires(c, DaemonIsLinux, NotUserNamespace) + testRequires(c, DaemonIsLinux, NotUserNamespace, NotArm) dockerCmd(c, "network", "create", "-d", "bridge", "udlinkNet") dockerCmd(c, "run", "-d", "--net=udlinkNet", "--name=first", "busybox", "top") @@ -274,7 +274,7 @@ func (s *DockerSuite) TestUserDefinedNetworkLinksWithRestart(c *check.C) { } func (s *DockerSuite) TestUserDefinedNetworkAlias(c *check.C) { - testRequires(c, DaemonIsLinux, NotUserNamespace) + testRequires(c, DaemonIsLinux, NotUserNamespace, NotArm) dockerCmd(c, "network", "create", "-d", "bridge", "net1") dockerCmd(c, "run", "-d", "--net=net1", "--name=first", "--net-alias=foo1", "--net-alias=foo2", "busybox", "top") @@ -660,7 +660,7 @@ func (s *DockerSuite) TestRunUserByID(c *check.C) { func (s *DockerSuite) TestRunUserByIDBig(c *check.C) { // TODO Windows: This test cannot run on a Windows daemon as Windows does // not support the use of -u - testRequires(c, DaemonIsLinux) + testRequires(c, DaemonIsLinux, NotArm) out, _, err := dockerCmdWithError("run", "-u", "2147483648", "busybox", "id") if err == nil { c.Fatal("No error, but must be.", out) @@ -1038,7 +1038,7 @@ func (s *DockerSuite) TestRunUnprivilegedCannotMount(c *check.C) { func (s *DockerSuite) TestRunSysNotWritableInNonPrivilegedContainers(c *check.C) { // Not applicable for Windows as there is no concept of unprivileged - testRequires(c, DaemonIsLinux) + testRequires(c, DaemonIsLinux, NotArm) if _, code, err := dockerCmdWithError("run", "busybox", "touch", "/sys/kernel/profiling"); err == nil || code == 0 { c.Fatal("sys should not be writable in a non privileged container") } @@ -1046,7 +1046,7 @@ func (s *DockerSuite) TestRunSysNotWritableInNonPrivilegedContainers(c *check.C) func (s *DockerSuite) TestRunSysWritableInPrivilegedContainers(c *check.C) { // Not applicable for Windows as there is no concept of unprivileged - testRequires(c, DaemonIsLinux, NotUserNamespace) + testRequires(c, DaemonIsLinux, NotUserNamespace, NotArm) if _, code, err := dockerCmdWithError("run", "--privileged", "busybox", "touch", "/sys/kernel/profiling"); err != nil || code != 0 { c.Fatalf("sys should be writable in privileged container") } @@ -1334,7 +1334,7 @@ func (s *DockerSuite) TestRunDnsOptionsBasedOnHostResolvConf(c *check.C) { // check if the container resolv.conf file has at least 0644 perm. func (s *DockerSuite) TestRunNonRootUserResolvName(c *check.C) { // Not applicable on Windows as Windows does not support --user - testRequires(c, SameHostDaemon, Network, DaemonIsLinux) + testRequires(c, SameHostDaemon, Network, DaemonIsLinux, NotArm) dockerCmd(c, "run", "--name=testperm", "--user=nobody", "busybox", "nslookup", "apt.dockerproject.org") @@ -3615,7 +3615,7 @@ func (s *DockerSuite) TestTwoContainersInNetHost(c *check.C) { } func (s *DockerSuite) TestContainersInUserDefinedNetwork(c *check.C) { - testRequires(c, DaemonIsLinux, NotUserNamespace) + testRequires(c, DaemonIsLinux, NotUserNamespace, NotArm) dockerCmd(c, "network", "create", "-d", "bridge", "testnetwork") dockerCmd(c, "run", "-d", "--net=testnetwork", "--name=first", "busybox", "top") c.Assert(waitRun("first"), check.IsNil) @@ -3623,7 +3623,7 @@ func (s *DockerSuite) TestContainersInUserDefinedNetwork(c *check.C) { } func (s *DockerSuite) TestContainersInMultipleNetworks(c *check.C) { - testRequires(c, DaemonIsLinux, NotUserNamespace) + testRequires(c, DaemonIsLinux, NotUserNamespace, NotArm) // Create 2 networks using bridge driver dockerCmd(c, "network", "create", "-d", "bridge", "testnetwork1") dockerCmd(c, "network", "create", "-d", "bridge", "testnetwork2") @@ -3642,7 +3642,7 @@ func (s *DockerSuite) TestContainersInMultipleNetworks(c *check.C) { } func (s *DockerSuite) TestContainersNetworkIsolation(c *check.C) { - testRequires(c, DaemonIsLinux, NotUserNamespace) + testRequires(c, DaemonIsLinux, NotUserNamespace, NotArm) // Create 2 networks using bridge driver dockerCmd(c, "network", "create", "-d", "bridge", "testnetwork1") dockerCmd(c, "network", "create", "-d", "bridge", "testnetwork2") @@ -3687,7 +3687,7 @@ func (s *DockerSuite) TestNetworkRmWithActiveContainers(c *check.C) { } func (s *DockerSuite) TestContainerRestartInMultipleNetworks(c *check.C) { - testRequires(c, DaemonIsLinux, NotUserNamespace) + testRequires(c, DaemonIsLinux, NotUserNamespace, NotArm) // Create 2 networks using bridge driver dockerCmd(c, "network", "create", "-d", "bridge", "testnetwork1") dockerCmd(c, "network", "create", "-d", "bridge", "testnetwork2") diff --git a/integration-cli/docker_cli_run_unix_test.go b/integration-cli/docker_cli_run_unix_test.go index 15f0d52acd..6f0c1950d9 100644 --- a/integration-cli/docker_cli_run_unix_test.go +++ b/integration-cli/docker_cli_run_unix_test.go @@ -76,7 +76,7 @@ func (s *DockerSuite) TestRunWithVolumesIsRecursive(c *check.C) { } func (s *DockerSuite) TestRunDeviceDirectory(c *check.C) { - testRequires(c, DaemonIsLinux, NotUserNamespace) + testRequires(c, DaemonIsLinux, NotUserNamespace, NotArm) if _, err := os.Stat("/dev/snd"); err != nil { c.Skip("Host does not have /dev/snd") } @@ -726,7 +726,7 @@ func (s *DockerSuite) TestRunTmpfsMounts(c *check.C) { // TestRunSeccompProfileDenyUnshare checks that 'docker run --security-opt seccomp:/tmp/profile.json debian:jessie unshare' exits with operation not permitted. func (s *DockerSuite) TestRunSeccompProfileDenyUnshare(c *check.C) { - testRequires(c, SameHostDaemon, seccompEnabled) + testRequires(c, SameHostDaemon, seccompEnabled, NotArm) jsonData := `{ "defaultAction": "SCMP_ACT_ALLOW", "syscalls": [ @@ -783,7 +783,7 @@ func (s *DockerSuite) TestRunSeccompProfileDenyChmod(c *check.C) { // TestRunSeccompProfileDenyUnshareUserns checks that 'docker run debian:jessie unshare --map-root-user --user sh -c whoami' with a specific profile to // deny unhare of a userns exits with operation not permitted. func (s *DockerSuite) TestRunSeccompProfileDenyUnshareUserns(c *check.C) { - testRequires(c, SameHostDaemon, seccompEnabled) + testRequires(c, SameHostDaemon, seccompEnabled, NotArm) // from sched.h jsonData := fmt.Sprintf(`{ "defaultAction": "SCMP_ACT_ALLOW", diff --git a/integration-cli/requirements.go b/integration-cli/requirements.go index ecbae26e5e..08b59da206 100644 --- a/integration-cli/requirements.go +++ b/integration-cli/requirements.go @@ -29,6 +29,10 @@ var ( func() bool { return daemonPlatform == "linux" }, "Test requires a Linux daemon", } + NotArm = testRequirement{ + func() bool { return os.Getenv("DOCKER_ENGINE_GOARCH") == "arm" }, + "Test requires a daemon not running on ARM", + } SameHostDaemon = testRequirement{ func() bool { return isLocalDaemon }, "Test requires docker daemon to run on the same machine as CLI",