Skip to content

Commit 5b8c7ad

Browse files
test(oci): add initial docker registry run setup
1 parent a13c719 commit 5b8c7ad

File tree

2 files changed

+94
-0
lines changed

2 files changed

+94
-0
lines changed

api/internal/oci/pusher.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
// Copyright 2026 The Kubernetes Authors.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package oci

api/internal/oci/pusher_test.go

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
// Copyright 2026 The Kubernetes Authors.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package oci
5+
6+
import (
7+
"bufio"
8+
"fmt"
9+
"net"
10+
"os/exec"
11+
"strconv"
12+
"strings"
13+
"syscall"
14+
"testing"
15+
16+
"github.com/stretchr/testify/require"
17+
)
18+
19+
func skipIfNoDocker(t *testing.T) {
20+
t.Helper()
21+
if _, err := exec.LookPath("docker"); err != nil {
22+
t.Skip("skipping because docker binary wasn't found in PATH")
23+
}
24+
}
25+
26+
// Set up the registry.
27+
func registry(t *testing.T) (*exec.Cmd, int, error) {
28+
skipIfNoDocker(t)
29+
30+
container_name := fmt.Sprintf("%s_%d", t.Name(), 15)
31+
internal_port := 5000
32+
33+
registry := exec.Command("docker", "run",
34+
"--rm",
35+
"-p", fmt.Sprintf("0:%d", internal_port),
36+
"--name", container_name,
37+
"docker.io/library/registry:3.0.0",
38+
)
39+
40+
stdout, err := registry.StderrPipe()
41+
if err != nil {
42+
t.Fatal(err)
43+
}
44+
45+
if err := registry.Start(); err != nil {
46+
t.Fatal(err)
47+
}
48+
49+
t.Cleanup(func() { registry.Process.Signal(syscall.SIGTERM) })
50+
51+
scanner := bufio.NewScanner(stdout)
52+
for scanner.Scan() {
53+
line := scanner.Text()
54+
if strings.Contains(line, fmt.Sprintf("listening on [::]:%d", internal_port)) {
55+
break
56+
}
57+
}
58+
59+
if err := scanner.Err(); err != nil {
60+
t.Fatal(err)
61+
}
62+
63+
retrieve_registry_port := exec.Command("docker", "port", container_name, fmt.Sprintf("%d", internal_port))
64+
out, err := retrieve_registry_port.Output()
65+
if err != nil {
66+
t.Fatal(err)
67+
}
68+
_, portString, err := net.SplitHostPort(strings.TrimSpace(string(out)))
69+
if err != nil {
70+
t.Fatal(err)
71+
}
72+
73+
port, err := strconv.Atoi(portString)
74+
if err != nil {
75+
t.Fatal(err)
76+
}
77+
78+
return registry, port, nil
79+
}
80+
81+
func TestFnContainerTransformerWithConfig(t *testing.T) {
82+
registry, port, err := registry(t)
83+
require.NoError(t, err)
84+
// t.Cleanup(func() {registry.})
85+
require.NotNil(t, registry)
86+
t.Setenv("asdfsd", "asdfadsf")
87+
88+
require.Equal(t, port, 5)
89+
90+
}

0 commit comments

Comments
 (0)