浏览代码

Disable TestExecWindowsOpenHandles on RS5 temporarily

Signed-off-by: John Howard <jhoward@microsoft.com>
John Howard 6 年之前
父节点
当前提交
15a25f6eb9
共有 1 个文件被更改,包括 34 次插入0 次删除
  1. 34 0
      integration-cli/docker_cli_exec_test.go

+ 34 - 0
integration-cli/docker_cli_exec_test.go

@@ -11,6 +11,7 @@ import (
 	"reflect"
 	"runtime"
 	"sort"
+	"strconv"
 	"strings"
 	"sync"
 	"time"
@@ -19,6 +20,7 @@ import (
 	"github.com/docker/docker/integration-cli/checker"
 	"github.com/docker/docker/integration-cli/cli"
 	"github.com/docker/docker/integration-cli/cli/build"
+	"github.com/docker/docker/pkg/parsers/kernel"
 	"github.com/go-check/check"
 	"gotest.tools/icmd"
 )
@@ -543,6 +545,38 @@ func (s *DockerSuite) TestExecEnvLinksHost(c *check.C) {
 
 func (s *DockerSuite) TestExecWindowsOpenHandles(c *check.C) {
 	testRequires(c, DaemonIsWindows)
+
+	if runtime.GOOS == "windows" {
+		v, err := kernel.GetKernelVersion()
+		c.Assert(err, checker.IsNil)
+		build, _ := strconv.Atoi(strings.Split(strings.SplitN(v.String(), " ", 3)[2][1:], ".")[0])
+		if build >= 17743 {
+			c.Skip("Temporarily disabled on RS5 17743+ builds due to platform bug")
+
+			// This is being tracked internally. @jhowardmsft. Summary of failure
+			// from an email in early July 2018 below:
+			//
+			// Platform regression. In cmd.exe by the look of it. I can repro
+			// it outside of CI.  It fails the same on 17681, 17676 and even as
+			// far back as 17663, over a month old. From investigating, I can see
+			// what's happening in the container, but not the reason. The test
+			// starts a long-running container based on the Windows busybox image.
+			// It then adds another process (docker exec) to that container to
+			// sleep. It loops waiting for two instances of busybox.exe running,
+			// and cmd.exe to quit. What's actually happening is that the second
+			// exec hangs indefinitely, and from docker top, I can see
+			// "OpenWith.exe" running.
+
+			//Manual repro would be
+			//# Start the first long-running container
+			//docker run --rm -d --name test busybox sleep 300
+
+			//# In another window, docker top test. There should be a single instance of busybox.exe running
+			//# In a third window, docker exec test cmd /c start sleep 10  NOTE THIS HANGS UNTIL 5 MIN TIMEOUT
+			//# In the second window, run docker top test. Note that OpenWith.exe is running, one cmd.exe and only one busybox. I would expect no "OpenWith" and two busybox.exe's.
+		}
+	}
+
 	runSleepingContainer(c, "-d", "--name", "test")
 	exec := make(chan bool)
 	go func() {