浏览代码

Improve resilience of TestPullFromCentralRegistryImplicitRefParts

Sometimes transient network issues will cause
TestPullFromCentralRegistryImplicitRefParts to end up pulling with the
v1 protocol. This violates the assumptions behind the test. To make the
test more robust, allow a few retries if any pull ends up using the v1
protocol.

Fixes #17214

Signed-off-by: Aaron Lehmann <aaron.lehmann@docker.com>
Aaron Lehmann 9 年之前
父节点
当前提交
8842011153
共有 1 个文件被更改,包括 17 次插入0 次删除
  1. 17 0
      integration-cli/docker_cli_pull_test.go

+ 17 - 0
integration-cli/docker_cli_pull_test.go

@@ -86,6 +86,23 @@ func (s *DockerHubPullSuite) TestPullFromCentralRegistryImplicitRefParts(c *chec
 		"index.docker.io/library/hello-world",
 	} {
 		out := s.Cmd(c, "pull", i)
+		v1Retries := 0
+		for strings.Contains(out, "this image was pulled from a legacy registry") {
+			// Some network errors may cause fallbacks to the v1
+			// protocol, which would violate the test's assumption
+			// that it will get the same images. To make the test
+			// more robust against these network glitches, allow a
+			// few retries if we end up with a v1 pull.
+
+			if v1Retries > 2 {
+				c.Fatalf("too many v1 fallback incidents when pulling %s", i)
+			}
+
+			s.Cmd(c, "rmi", i)
+			out = s.Cmd(c, "pull", i)
+
+			v1Retries++
+		}
 		c.Assert(out, checker.Contains, "Image is up to date for hello-world:latest")
 	}