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>
This commit is contained in:
Aaron Lehmann 2016-02-17 13:05:47 -08:00
parent 7eed9a642e
commit 8842011153
1 changed files with 17 additions and 0 deletions

View File

@ -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")
}