Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit f5574bf

Browse files
authored
Merge pull request kubernetes#74603 from stevesloka/e2eImageList
Refactor to allow for a way to get list of e2e images
2 parents 9d0baa7 + 6dc5494 commit f5574bf

File tree

7 files changed

+184
-56
lines changed

7 files changed

+184
-56
lines changed

test/e2e/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ go_test(
3535
"//test/e2e/storage:go_default_library",
3636
"//test/e2e/ui:go_default_library",
3737
"//test/e2e/windows:go_default_library",
38+
"//test/utils/image:go_default_library",
3839
],
3940
)
4041

test/e2e/apps/rc.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import (
2020
"fmt"
2121
"time"
2222

23-
"k8s.io/api/core/v1"
23+
v1 "k8s.io/api/core/v1"
2424
"k8s.io/apimachinery/pkg/api/errors"
2525
"k8s.io/apimachinery/pkg/api/resource"
2626
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -51,9 +51,9 @@ var _ = SIGDescribe("ReplicationController", func() {
5151
It("should serve a basic image on each replica with a private image", func() {
5252
// requires private images
5353
framework.SkipUnlessProviderIs("gce", "gke")
54-
privateimage := imageutils.ServeHostname
54+
privateimage := imageutils.GetConfig(imageutils.ServeHostname)
5555
privateimage.SetRegistry(imageutils.PrivateRegistry)
56-
TestReplicationControllerServeImageOrFail(f, "private", imageutils.GetE2EImage(privateimage))
56+
TestReplicationControllerServeImageOrFail(f, "private", privateimage.GetE2EImage())
5757
})
5858

5959
It("should surface a failure condition on a common issue like exceeded quota", func() {

test/e2e/apps/replica_set.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import (
2121
"time"
2222

2323
apps "k8s.io/api/apps/v1"
24-
"k8s.io/api/core/v1"
24+
v1 "k8s.io/api/core/v1"
2525
"k8s.io/apimachinery/pkg/api/errors"
2626
"k8s.io/apimachinery/pkg/api/resource"
2727
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -94,9 +94,9 @@ var _ = SIGDescribe("ReplicaSet", func() {
9494
It("should serve a basic image on each replica with a private image", func() {
9595
// requires private images
9696
framework.SkipUnlessProviderIs("gce", "gke")
97-
privateimage := imageutils.ServeHostname
97+
privateimage := imageutils.GetConfig(imageutils.ServeHostname)
9898
privateimage.SetRegistry(imageutils.PrivateRegistry)
99-
testReplicaSetServeImageOrFail(f, "private", imageutils.GetE2EImage(privateimage))
99+
testReplicaSetServeImageOrFail(f, "private", privateimage.GetE2EImage())
100100
})
101101

102102
It("should surface a failure condition on a common issue like exceeded quota", func() {

test/e2e/e2e_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
"k8s.io/kubernetes/test/e2e/framework/testfiles"
2727
"k8s.io/kubernetes/test/e2e/framework/viperconfig"
2828
"k8s.io/kubernetes/test/e2e/generated"
29+
"k8s.io/kubernetes/test/utils/image"
2930

3031
// test sources
3132
_ "k8s.io/kubernetes/test/e2e/apimachinery"
@@ -57,6 +58,14 @@ func init() {
5758
fmt.Fprintln(os.Stderr, err)
5859
os.Exit(1)
5960
}
61+
62+
if framework.TestContext.ListImages {
63+
for _, v := range image.GetImageConfigs() {
64+
fmt.Println(v.GetE2EImage())
65+
}
66+
os.Exit(0)
67+
}
68+
6069
framework.AfterReadingAllFlags(&framework.TestContext)
6170

6271
// TODO: Deprecating repo-root over time... instead just use gobindata_util.go , see #23987.
@@ -73,6 +82,7 @@ func init() {
7382
Asset: generated.Asset,
7483
AssetNames: generated.AssetNames,
7584
})
85+
7686
}
7787

7888
func TestE2E(t *testing.T) {

test/e2e/framework/test_context.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ type TestContextType struct {
7575
// TODO: Deprecating this over time... instead just use gobindata_util.go , see #23987.
7676
RepoRoot string
7777
DockershimCheckpointDir string
78+
// ListImages will list off all images that are used then quit
79+
ListImages bool
7880

7981
// Provider identifies the infrastructure provider (gce, gke, aws)
8082
Provider string
@@ -259,6 +261,8 @@ func RegisterCommonFlags() {
259261
flag.StringVar(&TestContext.ImageServiceEndpoint, "image-service-endpoint", "", "The image service endpoint of cluster VM instances.")
260262
flag.StringVar(&TestContext.DockershimCheckpointDir, "dockershim-checkpoint-dir", "/var/lib/dockershim/sandbox", "The directory for dockershim to store sandbox checkpoints.")
261263
flag.StringVar(&TestContext.KubernetesAnywherePath, "kubernetes-anywhere-path", "/workspace/k8s.io/kubernetes-anywhere", "Which directory kubernetes-anywhere is installed to.")
264+
265+
flag.BoolVar(&TestContext.ListImages, "list-images", false, "If true, will show list of images used for runnning tests.")
262266
}
263267

264268
// Register flags specific to the cluster e2e test suite.

test/e2e_node/container_manager_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import (
2626
"strings"
2727
"time"
2828

29-
"k8s.io/api/core/v1"
29+
v1 "k8s.io/api/core/v1"
3030
"k8s.io/apimachinery/pkg/api/resource"
3131
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3232
"k8s.io/apimachinery/pkg/util/sets"

test/utils/image/manifest.go

Lines changed: 162 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -91,61 +91,174 @@ var (
9191
// PrivateRegistry is an image repository that requires authentication
9292
PrivateRegistry = registry.PrivateRegistry
9393
sampleRegistry = registry.SampleRegistry
94+
95+
// Preconfigured image configs
96+
imageConfigs = initImageConfigs()
9497
)
9598

96-
// Preconfigured image configs
97-
var (
98-
CRDConversionWebhook = Config{e2eRegistry, "crd-conversion-webhook", "1.13rev2"}
99-
AdmissionWebhook = Config{e2eRegistry, "webhook", "1.14v1"}
100-
APIServer = Config{e2eRegistry, "sample-apiserver", "1.10"}
101-
AppArmorLoader = Config{e2eRegistry, "apparmor-loader", "1.0"}
102-
BusyBox = Config{dockerLibraryRegistry, "busybox", "1.29"}
103-
CheckMetadataConcealment = Config{e2eRegistry, "metadata-concealment", "1.2"}
104-
CudaVectorAdd = Config{e2eRegistry, "cuda-vector-add", "1.0"}
105-
CudaVectorAdd2 = Config{e2eRegistry, "cuda-vector-add", "2.0"}
106-
Dnsutils = Config{e2eRegistry, "dnsutils", "1.1"}
107-
EchoServer = Config{e2eRegistry, "echoserver", "2.2"}
108-
EntrypointTester = Config{e2eRegistry, "entrypoint-tester", "1.0"}
109-
Etcd = Config{etcdRegistry, "etcd", "v3.3.10"}
110-
Fakegitserver = Config{e2eRegistry, "fakegitserver", "1.0"}
111-
GBFrontend = Config{sampleRegistry, "gb-frontend", "v6"}
112-
GBRedisSlave = Config{sampleRegistry, "gb-redisslave", "v3"}
113-
Hostexec = Config{e2eRegistry, "hostexec", "1.1"}
114-
IpcUtils = Config{e2eRegistry, "ipc-utils", "1.0"}
115-
Iperf = Config{e2eRegistry, "iperf", "1.0"}
116-
JessieDnsutils = Config{e2eRegistry, "jessie-dnsutils", "1.0"}
117-
Kitten = Config{e2eRegistry, "kitten", "1.0"}
118-
Liveness = Config{e2eRegistry, "liveness", "1.0"}
119-
LogsGenerator = Config{e2eRegistry, "logs-generator", "1.0"}
120-
Mounttest = Config{e2eRegistry, "mounttest", "1.0"}
121-
MounttestUser = Config{e2eRegistry, "mounttest-user", "1.0"}
122-
Nautilus = Config{e2eRegistry, "nautilus", "1.0"}
123-
Net = Config{e2eRegistry, "net", "1.0"}
124-
Netexec = Config{e2eRegistry, "netexec", "1.1"}
125-
Nettest = Config{e2eRegistry, "nettest", "1.0"}
126-
Nginx = Config{dockerLibraryRegistry, "nginx", "1.14-alpine"}
127-
NginxNew = Config{dockerLibraryRegistry, "nginx", "1.15-alpine"}
128-
Nonewprivs = Config{e2eRegistry, "nonewprivs", "1.0"}
129-
NoSnatTest = Config{e2eRegistry, "no-snat-test", "1.0"}
130-
NoSnatTestProxy = Config{e2eRegistry, "no-snat-test-proxy", "1.0"}
99+
const (
100+
// CRDConversionWebhook image
101+
CRDConversionWebhook = iota
102+
// AdmissionWebhook image
103+
AdmissionWebhook
104+
// APIServer image
105+
APIServer
106+
// AppArmorLoader image
107+
AppArmorLoader
108+
// BusyBox image
109+
BusyBox
110+
// CheckMetadataConcealment image
111+
CheckMetadataConcealment
112+
// CudaVectorAdd image
113+
CudaVectorAdd
114+
// CudaVectorAdd2 image
115+
CudaVectorAdd2
116+
// Dnsutils image
117+
Dnsutils
118+
// EchoServer image
119+
EchoServer
120+
// EntrypointTester image
121+
EntrypointTester
122+
// Etcd image
123+
Etcd
124+
// Fakegitserver image
125+
Fakegitserver
126+
// GBFrontend image
127+
GBFrontend
128+
// GBRedisSlave image
129+
GBRedisSlave
130+
// Hostexec image
131+
Hostexec
132+
// IpcUtils image
133+
IpcUtils
134+
// Iperf image
135+
Iperf
136+
// JessieDnsutils image
137+
JessieDnsutils
138+
// Kitten image
139+
Kitten
140+
// Liveness image
141+
Liveness
142+
// LogsGenerator image
143+
LogsGenerator
144+
// Mounttest image
145+
Mounttest
146+
// MounttestUser image
147+
MounttestUser
148+
// Nautilus image
149+
Nautilus
150+
// Net image
151+
Net
152+
// Netexec image
153+
Netexec
154+
// Nettest image
155+
Nettest
156+
// Nginx image
157+
Nginx
158+
// NginxNew image
159+
NginxNew
160+
// Nonewprivs image
161+
Nonewprivs
162+
// NoSnatTest image
163+
NoSnatTest
164+
// NoSnatTestProxy image
165+
NoSnatTestProxy
131166
// Pause - when these values are updated, also update cmd/kubelet/app/options/container_runtime.go
132-
Pause = Config{gcRegistry, "pause", "3.1"}
133-
Porter = Config{e2eRegistry, "porter", "1.0"}
134-
PortForwardTester = Config{e2eRegistry, "port-forward-tester", "1.0"}
135-
Redis = Config{e2eRegistry, "redis", "1.0"}
136-
ResourceConsumer = Config{e2eRegistry, "resource-consumer", "1.5"}
137-
ResourceController = Config{e2eRegistry, "resource-consumer/controller", "1.0"}
138-
ServeHostname = Config{e2eRegistry, "serve-hostname", "1.1"}
139-
TestWebserver = Config{e2eRegistry, "test-webserver", "1.0"}
140-
VolumeNFSServer = Config{e2eRegistry, "volume/nfs", "1.0"}
141-
VolumeISCSIServer = Config{e2eRegistry, "volume/iscsi", "1.0"}
142-
VolumeGlusterServer = Config{e2eRegistry, "volume/gluster", "1.0"}
143-
VolumeRBDServer = Config{e2eRegistry, "volume/rbd", "1.0.1"}
167+
// Pause image
168+
Pause
169+
// Porter image
170+
Porter
171+
// PortForwardTester image
172+
PortForwardTester
173+
// Redis image
174+
Redis
175+
// ResourceConsumer image
176+
ResourceConsumer
177+
// ResourceController image
178+
ResourceController
179+
// ServeHostname image
180+
ServeHostname
181+
// TestWebserver image
182+
TestWebserver
183+
// VolumeNFSServer image
184+
VolumeNFSServer
185+
// VolumeISCSIServer image
186+
VolumeISCSIServer
187+
// VolumeGlusterServer image
188+
VolumeGlusterServer
189+
// VolumeRBDServer image
190+
VolumeRBDServer
144191
)
145192

193+
func initImageConfigs() map[int]Config {
194+
configs := map[int]Config{}
195+
configs[CRDConversionWebhook] = Config{e2eRegistry, "crd-conversion-webhook", "1.13rev2"}
196+
configs[AdmissionWebhook] = Config{e2eRegistry, "webhook", "1.14v1"}
197+
configs[APIServer] = Config{e2eRegistry, "sample-apiserver", "1.10"}
198+
configs[AppArmorLoader] = Config{e2eRegistry, "apparmor-loader", "1.0"}
199+
configs[BusyBox] = Config{dockerLibraryRegistry, "busybox", "1.29"}
200+
configs[CheckMetadataConcealment] = Config{e2eRegistry, "metadata-concealment", "1.2"}
201+
configs[CudaVectorAdd] = Config{e2eRegistry, "cuda-vector-add", "1.0"}
202+
configs[CudaVectorAdd2] = Config{e2eRegistry, "cuda-vector-add", "2.0"}
203+
configs[Dnsutils] = Config{e2eRegistry, "dnsutils", "1.1"}
204+
configs[EchoServer] = Config{e2eRegistry, "echoserver", "2.2"}
205+
configs[EntrypointTester] = Config{e2eRegistry, "entrypoint-tester", "1.0"}
206+
configs[Etcd] = Config{etcdRegistry, "etcd", "v3.3.10"}
207+
configs[Fakegitserver] = Config{e2eRegistry, "fakegitserver", "1.0"}
208+
configs[GBFrontend] = Config{sampleRegistry, "gb-frontend", "v6"}
209+
configs[GBRedisSlave] = Config{sampleRegistry, "gb-redisslave", "v3"}
210+
configs[Hostexec] = Config{e2eRegistry, "hostexec", "1.1"}
211+
configs[IpcUtils] = Config{e2eRegistry, "ipc-utils", "1.0"}
212+
configs[Iperf] = Config{e2eRegistry, "iperf", "1.0"}
213+
configs[JessieDnsutils] = Config{e2eRegistry, "jessie-dnsutils", "1.0"}
214+
configs[Kitten] = Config{e2eRegistry, "kitten", "1.0"}
215+
configs[Liveness] = Config{e2eRegistry, "liveness", "1.0"}
216+
configs[LogsGenerator] = Config{e2eRegistry, "logs-generator", "1.0"}
217+
configs[Mounttest] = Config{e2eRegistry, "mounttest", "1.0"}
218+
configs[MounttestUser] = Config{e2eRegistry, "mounttest-user", "1.0"}
219+
configs[Nautilus] = Config{e2eRegistry, "nautilus", "1.0"}
220+
configs[Net] = Config{e2eRegistry, "net", "1.0"}
221+
configs[Netexec] = Config{e2eRegistry, "netexec", "1.1"}
222+
configs[Nettest] = Config{e2eRegistry, "nettest", "1.0"}
223+
configs[Nginx] = Config{dockerLibraryRegistry, "nginx", "1.14-alpine"}
224+
configs[NginxNew] = Config{dockerLibraryRegistry, "nginx", "1.15-alpine"}
225+
configs[Nonewprivs] = Config{e2eRegistry, "nonewprivs", "1.0"}
226+
configs[NoSnatTest] = Config{e2eRegistry, "no-snat-test", "1.0"}
227+
configs[NoSnatTestProxy] = Config{e2eRegistry, "no-snat-test-proxy", "1.0"}
228+
// Pause - when these values are updated, also update cmd/kubelet/app/options/container_runtime.go
229+
configs[Pause] = Config{gcRegistry, "pause", "3.1"}
230+
configs[Porter] = Config{e2eRegistry, "porter", "1.0"}
231+
configs[PortForwardTester] = Config{e2eRegistry, "port-forward-tester", "1.0"}
232+
configs[Redis] = Config{e2eRegistry, "redis", "1.0"}
233+
configs[ResourceConsumer] = Config{e2eRegistry, "resource-consumer", "1.5"}
234+
configs[ResourceController] = Config{e2eRegistry, "resource-consumer/controller", "1.0"}
235+
configs[ServeHostname] = Config{e2eRegistry, "serve-hostname", "1.1"}
236+
configs[TestWebserver] = Config{e2eRegistry, "test-webserver", "1.0"}
237+
configs[VolumeNFSServer] = Config{e2eRegistry, "volume/nfs", "1.0"}
238+
configs[VolumeISCSIServer] = Config{e2eRegistry, "volume/iscsi", "1.0"}
239+
configs[VolumeGlusterServer] = Config{e2eRegistry, "volume/gluster", "1.0"}
240+
configs[VolumeRBDServer] = Config{e2eRegistry, "volume/rbd", "1.0.1"}
241+
return configs
242+
}
243+
244+
// GetImageConfigs returns the map of imageConfigs
245+
func GetImageConfigs() map[int]Config {
246+
return imageConfigs
247+
}
248+
249+
// GetConfig returns the Config object for an image
250+
func GetConfig(image int) Config {
251+
return imageConfigs[image]
252+
}
253+
254+
// GetE2EImage returns the fully qualified URI to an image (including version)
255+
func GetE2EImage(image int) string {
256+
return fmt.Sprintf("%s/%s:%s", imageConfigs[image].registry, imageConfigs[image].name, imageConfigs[image].version)
257+
}
258+
146259
// GetE2EImage returns the fully qualified URI to an image (including version)
147-
func GetE2EImage(image Config) string {
148-
return fmt.Sprintf("%s/%s:%s", image.registry, image.name, image.version)
260+
func (i *Config) GetE2EImage() string {
261+
return fmt.Sprintf("%s/%s:%s", i.registry, i.name, i.version)
149262
}
150263

151264
// GetPauseImageName returns the pause image name with proper version

0 commit comments

Comments
 (0)