Skip to content

Commit 6e96234

Browse files
committed
Update unit tests
1 parent 90f7362 commit 6e96234

File tree

11 files changed

+777
-655
lines changed

11 files changed

+777
-655
lines changed

pkg/image/apiserver/admission/limitrange/admission_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import (
1919
imagev1 "github.com/openshift/api/image/v1"
2020
"github.com/openshift/openshift-apiserver/pkg/api/legacy"
2121
imageapi "github.com/openshift/openshift-apiserver/pkg/image/apis/image"
22-
"github.com/openshift/openshift-apiserver/pkg/image/apiserver/testutil"
22+
"github.com/openshift/openshift-apiserver/pkg/image/apiserver/internal/testutil"
2323
)
2424

2525
func TestAdmitImageStreamMapping(t *testing.T) {
@@ -36,7 +36,7 @@ func TestAdmitImageStreamMapping(t *testing.T) {
3636
},
3737
"new ism, under limit range": {
3838
imageStreamMapping: getImageStreamMapping(),
39-
limitRange: getLimitRange("1Ki"),
39+
limitRange: getLimitRange("2Mi"),
4040
operation: admission.Create,
4141
shouldAdmit: true,
4242
},
@@ -246,6 +246,7 @@ func getBaseImageWith1Layer() imageapi.Image {
246246
},
247247
DockerImageReference: fmt.Sprintf("registry.example.org/%s/%s", "test", testutil.BaseImageWith1LayerDigest),
248248
DockerImageManifest: testutil.BaseImageWith1Layer,
249+
DockerImageConfig: testutil.BaseImageWith1LayerConfig,
249250
}
250251
}
251252

pkg/image/apiserver/admission/limitrange/imagestream_limits_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313
"github.com/openshift/library-go/pkg/quota/quotautil"
1414

1515
imageapi "github.com/openshift/openshift-apiserver/pkg/image/apis/image"
16-
imagetest "github.com/openshift/openshift-apiserver/pkg/image/apiserver/testutil"
16+
imagetest "github.com/openshift/openshift-apiserver/pkg/image/apiserver/internal/testutil"
1717
)
1818

1919
func TestGetMaxLimits(t *testing.T) {

pkg/image/apiserver/admission/limitrange/usage_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313
imagev1 "github.com/openshift/api/image/v1"
1414
"github.com/openshift/library-go/pkg/image/imageutil"
1515
imageapi "github.com/openshift/openshift-apiserver/pkg/image/apis/image"
16-
imagetest "github.com/openshift/openshift-apiserver/pkg/image/apiserver/testutil"
16+
imagetest "github.com/openshift/openshift-apiserver/pkg/image/apiserver/internal/testutil"
1717
)
1818

1919
func TestGetImageReferenceForObjectReference(t *testing.T) {

pkg/image/apiserver/internal/imageutil/helpers_test.go

Lines changed: 436 additions & 124 deletions
Large diffs are not rendered by default.
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package testutil
2+
3+
import (
4+
imageapi "github.com/openshift/openshift-apiserver/pkg/image/apis/image"
5+
"github.com/openshift/openshift-apiserver/pkg/image/apiserver/internal/imageutil"
6+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
7+
)
8+
9+
// kindest/node:v1.33.1
10+
// manifest digest: sha256:14ffd6ee8a3daa20cc934ba786626b181e1797268c5465f2c299a7cf54494c77`
11+
12+
const KindestManifest = `{
13+
"schemaVersion": 2,
14+
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
15+
"config": {
16+
"mediaType": "application/vnd.docker.container.image.v1+json",
17+
"size": 1984,
18+
"digest": "sha256:d6b20550c77b11385dd30115ba29dbf9a9bfc98c2f28ff7d162a6ad7c9686251"
19+
},
20+
"layers": [
21+
{
22+
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
23+
"size": 132852852,
24+
"digest": "sha256:dc42dfa52495c90dc5b99c19534d6d4fa9cd37fa439356fcbd73e770c35f2293"
25+
},
26+
{
27+
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
28+
"size": 318908736,
29+
"digest": "sha256:841483099b542d6aeafc6ffacd59617954c409d3ebc558b7a95f43e05b1701a1"
30+
}
31+
]
32+
}`
33+
34+
const KindestConfigDigest = `sha256:d6b20550c77b11385dd30115ba29dbf9a9bfc98c2f28ff7d162a6ad7c9686251`
35+
36+
const KindestConfig = `{"architecture":"amd64","config":{"Hostname":"5e7483a6cf0e","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","container=docker","HTTP_PROXY=","HTTPS_PROXY=","NO_PROXY="],"Cmd":null,"Image":"docker.io/kindest/base:v20250521-31a79fd4","Volumes":null,"WorkingDir":"/","Entrypoint":["/usr/local/bin/entrypoint","/sbin/init"],"OnBuild":null,"Labels":{},"StopSignal":"SIGRTMIN+3"},"container":"5e7483a6cf0e7958e796eee6912d1f6247394a0b914c822e47c7596b54aeac0a","container_config":{"Hostname":"5e7483a6cf0e","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","container=docker"],"Cmd":["infinity"],"Image":"docker.io/kindest/base:v20250521-31a79fd4","Volumes":null,"WorkingDir":"/","Entrypoint":["sleep"],"OnBuild":null,"Labels":{},"StopSignal":"SIGRTMIN+3"},"created":"2025-05-21T01:04:14.093628812Z","docker_version":"20.10.21","history":[{"created":"2025-05-21T00:57:52.347930888Z","created_by":"COPY / / # buildkit","comment":"buildkit.dockerfile.v0"},{"created":"2025-05-21T00:57:52.347930888Z","created_by":"ENV container=docker","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2025-05-21T00:57:52.347930888Z","created_by":"STOPSIGNAL SIGRTMIN+3","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2025-05-21T00:57:52.347930888Z","created_by":"ENTRYPOINT [\"/usr/local/bin/entrypoint\" \"/sbin/init\"]","comment":"buildkit.dockerfile.v0","empty_layer":true},{"created":"2025-05-21T01:04:14.093628812Z","created_by":"infinity"}],"os":"linux","rootfs":{"type":"layers","diff_ids":["sha256:f13bb3f5a0b612fa8b3ee54536cff9a57cc76a084b6a399d7762283e52393778","sha256:2f6a2492037574ad66c92893c0d266ff1a74dbab0eeed7771c511a09f909b577"]}}`
37+
38+
func KindestBareImage(hooks ...func(*imageapi.Image)) *imageapi.Image {
39+
img := &imageapi.Image{
40+
ObjectMeta: metav1.ObjectMeta{
41+
Name: KindestConfigDigest,
42+
GenerateName: "kindest",
43+
},
44+
DockerImageReference: "kindest/node:v1.33.1",
45+
DockerImageManifestMediaType: "application/vnd.docker.distribution.manifest.v2+json",
46+
DockerImageManifest: KindestManifest,
47+
DockerImageConfig: KindestConfig,
48+
}
49+
for _, hook := range hooks {
50+
hook(img)
51+
}
52+
return img
53+
}
54+
55+
func MustKindestCompleteImage(hooks ...func(*imageapi.Image)) *imageapi.Image {
56+
img := KindestBareImage()
57+
for _, hook := range hooks {
58+
hook(img)
59+
}
60+
if err := imageutil.InternalImageWithMetadata(img); err != nil {
61+
panic(err)
62+
}
63+
return img
64+
}
Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
1+
package testutil
2+
3+
import (
4+
"fmt"
5+
)
6+
7+
// InternalRegistryURL is an url of internal container image registry for testing purposes.
8+
const InternalRegistryURL = "172.30.12.34:5000"
9+
10+
// MakeDockerImageReference makes a container image reference string referencing testing internal docker
11+
// registry.
12+
func MakeDockerImageReference(ns, isName, imageID string) string {
13+
return fmt.Sprintf("%s/%s/%s@%s", InternalRegistryURL, ns, isName, imageID)
14+
}
15+
16+
// BaseImageWith1Layer contains a single layer.
17+
const BaseImageWith1Layer = `{
18+
"schemaVersion": 2,
19+
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
20+
"config": {
21+
"mediaType": "application/vnd.docker.container.image.v1+json",
22+
"size": 1512,
23+
"digest": "sha256:6c6084ed97e5851b5d216b20ed1852301278584c3c6aff915272b231593f6f98"
24+
},
25+
"layers": [
26+
{
27+
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
28+
"size": 1970140,
29+
"digest": "sha256:550fe1bea624a5c62551cf09f3aa10886eed133794844af1dfb775118309387e"
30+
}
31+
]
32+
}`
33+
34+
// BaseImageWith1LayerDigest is the digest associated with BaseImageWith1Layer.
35+
//
36+
// This is actually docksal/empty.
37+
const BaseImageWith1LayerDigest = `sha256:f853843b26903da94dd1cdf9e39ff7e2ba7a754388341895d557dbe913f5a915`
38+
39+
// BaseImageWith1LayerConfig is the config associated with BaseImageWith1Layer.
40+
const BaseImageWith1LayerConfig = `{
41+
"architecture": "amd64",
42+
"config": {
43+
"Hostname": "",
44+
"Domainname": "",
45+
"User": "",
46+
"AttachStdin": false,
47+
"AttachStdout": false,
48+
"AttachStderr": false,
49+
"Tty": false,
50+
"OpenStdin": false,
51+
"StdinOnce": false,
52+
"Env": [
53+
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
54+
],
55+
"Cmd": [
56+
"/bin/sh"
57+
],
58+
"ArgsEscaped": true,
59+
"Image": "sha256:01b85c6717c3b1f5379864199c541cecabb81be758b4fec6ef0b66cbfb6e11a5",
60+
"Volumes": null,
61+
"WorkingDir": "",
62+
"Entrypoint": null,
63+
"OnBuild": null,
64+
"Labels": null
65+
},
66+
"container": "f8a4df32c288f30c6d641c3945c88b64490e1e029be516209955023786cf1727",
67+
"container_config": {
68+
"Hostname": "f8a4df32c288",
69+
"Domainname": "",
70+
"User": "",
71+
"AttachStdin": false,
72+
"AttachStdout": false,
73+
"AttachStderr": false,
74+
"Tty": false,
75+
"OpenStdin": false,
76+
"StdinOnce": false,
77+
"Env": [
78+
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
79+
],
80+
"Cmd": [
81+
"/bin/sh",
82+
"-c",
83+
"#(nop) ",
84+
"CMD [\"/bin/sh\"]"
85+
],
86+
"ArgsEscaped": true,
87+
"Image": "sha256:01b85c6717c3b1f5379864199c541cecabb81be758b4fec6ef0b66cbfb6e11a5",
88+
"Volumes": null,
89+
"WorkingDir": "",
90+
"Entrypoint": null,
91+
"OnBuild": null,
92+
"Labels": {}
93+
},
94+
"created": "2018-01-09T21:13:01.402230769Z",
95+
"docker_version": "17.06.2-ce",
96+
"history": [
97+
{
98+
"created": "2018-01-09T21:13:01.165340448Z",
99+
"created_by": "/bin/sh -c #(nop) ADD file:df48d6d6df42a01380557aebd4ca02807fc08a76a1d1b36d957e59a41c69db0b in / "
100+
},
101+
{
102+
"created": "2018-01-09T21:13:01.402230769Z",
103+
"created_by": "/bin/sh -c #(nop) CMD [\"/bin/sh\"]",
104+
"empty_layer": true
105+
}
106+
],
107+
"os": "linux",
108+
"rootfs": {
109+
"type": "layers",
110+
"diff_ids": [
111+
"sha256:d39d92664027be502c35cf1bf464c726d15b8ead0e3084be6e252a161730bc82"
112+
]
113+
}
114+
}`
115+
116+
// The following digests are actually random SHA256 hashes.
117+
118+
const BaseImageWith2LayersDigest = "sha256:5bb720a64ecc8f5285cda9d899db4a79f2fc73b4533e4d7d7ffd9b7b6720c159"
119+
120+
const ChildImageWith2LayersDigest = "sha256:4ec0a236b636e898d557205b01683560c07ce0edc949706c03e7cb2e7037093e"
121+
122+
const ChildImageWith3LayersDigest = "sha256:9237f69ed1eb6221da9d28569669ae5e73173d6a67f88265726d2fad47e31df2"
123+
124+
const MiscImageDigest = "sha256:e07072af8e05843efde5e4f2f23ee12b96029cf6d5685fa9f4cbc45f2196011e"
125+
126+
const ManifestList = `{
127+
"manifests": [
128+
{
129+
"digest": "sha256:96a76fa48db5fca24271fe1565d88a4453e759b365dbaaeeb5a4e41049293e77",
130+
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
131+
"platform": {
132+
"architecture": "amd64",
133+
"os": "linux"
134+
},
135+
"size": 429
136+
},
137+
{
138+
"digest": "sha256:6c3d8fec1c50ff78997e13a8352b030d4b290f656081c974373753fd5a3496f1",
139+
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
140+
"platform": {
141+
"architecture": "arm64",
142+
"os": "linux"
143+
},
144+
"size": 429
145+
},
146+
{
147+
"digest": "sha256:520a368f78807947b96ea773cc62b14e380f4af08bbfd8ed18f0ebc70dedef68",
148+
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
149+
"platform": {
150+
"architecture": "ppc64le",
151+
"os": "linux"
152+
},
153+
"size": 429
154+
},
155+
{
156+
"digest": "sha256:50b0c55990fe1b48c4b026fb6b49b4377e36c52b291d434977793dc0c8998ba4",
157+
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
158+
"platform": {
159+
"architecture": "s390x",
160+
"os": "linux"
161+
},
162+
"size": 429
163+
}
164+
],
165+
"mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
166+
"schemaVersion": 2
167+
}`

0 commit comments

Comments
 (0)