Browse Source

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 years ago
parent
commit
8842011153
1 changed files with 17 additions and 0 deletions
  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")
 	}