@@ -10,7 +10,7 @@ import (
1010 "gotest.tools/v3/icmd"
1111)
1212
13- const privateRegistryPrefix = "private-registry :5001"
13+ const privateRegistryPrefix = "privateregistry :5001"
1414
1515// Regression test for https://github.com/docker/cli/issues/5963
1616func TestPullPushPrivateRepository (t * testing.T ) {
@@ -66,6 +66,9 @@ func TestPullPushPrivateRepository(t *testing.T) {
6666func assertAuthDenied (t * testing.T , result * icmd.Result ) {
6767 t .Helper ()
6868 output := result .Combined ()
69+ if isPrivateRegistryTransient (output ) {
70+ t .Fatalf ("private registry unavailable while expecting auth failure: %s" , output )
71+ }
6972
7073 assert .Check (t ,
7174 strings .Contains (output , "requested access to the resource is denied" ) ||
@@ -79,21 +82,31 @@ func assertAuthDenied(t *testing.T, result *icmd.Result) {
7982func runWithPrivateRegistryRetry (t * testing.T , cmd icmd.Cmd , opts ... icmd.CmdOp ) * icmd.Result {
8083 t .Helper ()
8184
82- deadline := time .Now ().Add (60 * time .Second )
85+ deadline := time .Now ().Add (90 * time .Second )
8386 for {
8487 result := icmd .RunCmd (cmd , opts ... )
8588 output := result .Combined ()
86- if strings .Contains (output , "lookup private-registry" ) ||
87- strings .Contains (output , "lookup registry" ) ||
88- strings .Contains (output , "no such host" ) ||
89- strings .Contains (output , "server misbehaving" ) ||
90- strings .Contains (output , "Temporary failure in name resolution" ) {
89+ if isPrivateRegistryTransient (output ) {
9190 if time .Now ().Before (deadline ) {
92- t .Logf ("waiting for registry DNS to become available : %s" , output )
91+ t .Logf ("waiting for private registry availability : %s" , output )
9392 time .Sleep (500 * time .Millisecond )
9493 continue
9594 }
9695 }
9796 return result
9897 }
9998}
99+
100+ func isPrivateRegistryTransient (output string ) bool {
101+ return strings .Contains (output , "lookup privateregistry" ) ||
102+ strings .Contains (output , "lookup registry" ) ||
103+ strings .Contains (output , "no such host" ) ||
104+ strings .Contains (output , "server misbehaving" ) ||
105+ strings .Contains (output , "Temporary failure in name resolution" ) ||
106+ strings .Contains (output , "connection refused" ) ||
107+ strings .Contains (output , "i/o timeout" ) ||
108+ strings .Contains (output , "TLS handshake timeout" ) ||
109+ strings .Contains (output , "context deadline exceeded" ) ||
110+ strings .Contains (output , "connection reset by peer" ) ||
111+ strings .Contains (output , "unexpected EOF" )
112+ }
0 commit comments