Skip to content

Commit b6a12ad

Browse files
e2e: harden private registry test
Signed-off-by: aryansharma9917 <sharmaaryan9837@gmail.com>
1 parent 97e06a7 commit b6a12ad

3 files changed

Lines changed: 27 additions & 10 deletions

File tree

e2e/compose-env.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ services:
55

66
private-registry:
77
image: 'registry:3'
8+
networks:
9+
default:
10+
aliases:
11+
- privateregistry
812
environment:
913
- REGISTRY_HTTP_ADDR=0.0.0.0:5001
1014
- REGISTRY_AUTH=htpasswd
@@ -16,6 +20,6 @@ services:
1620
engine:
1721
image: 'docker:${ENGINE_VERSION:-29}-dind'
1822
privileged: true
19-
command: ['--insecure-registry=registry:5000', '--insecure-registry=private-registry:5001', '--experimental']
23+
command: ['--insecure-registry=registry:5000', '--insecure-registry=privateregistry:5001', '--experimental']
2024
environment:
2125
- DOCKER_TLS_CERTDIR=

e2e/image/private_test.go

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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
1616
func TestPullPushPrivateRepository(t *testing.T) {
@@ -66,6 +66,9 @@ func TestPullPushPrivateRepository(t *testing.T) {
6666
func 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) {
7982
func 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+
}

e2e/internal/fixtures/fixtures.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ func SetupConfigFile(t *testing.T) fs.Dir {
2424
"registry:5000": {
2525
"auth": "ZWlhaXM6cGFzc3dvcmQK"
2626
},
27-
"private-registry:5001": {
27+
"privateregistry:5001": {
2828
"auth": "ZTJlOnBhc3N3b3Jk"
2929
}
3030
}}`), fs.WithDir("trust", fs.WithDir("private")))

0 commit comments

Comments
 (0)