m/test/e2e: stop downloading container images
Having tests rely on The Internet isn't great, having tests rely on the
Dockercorp registry is even worse. Instead, let's test everything using
the preseed_test image.
Change-Id: Ib82ce266592e9c6d2f0d4597abcc114c12746b1f
Reviewed-on: https://review.monogon.dev/c/monogon/+/1338
Tested-by: Jenkins CI
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
diff --git a/metropolis/test/e2e/kubernetes_helpers.go b/metropolis/test/e2e/kubernetes_helpers.go
index 2e53970..dec7363 100644
--- a/metropolis/test/e2e/kubernetes_helpers.go
+++ b/metropolis/test/e2e/kubernetes_helpers.go
@@ -75,9 +75,9 @@
Spec: corev1.PodSpec{
Containers: []corev1.Container{
{
- Name: "test",
- // TODO(phab/T793): Build and preseed our own container images
- Image: "nginx:alpine",
+ Name: "test",
+ ImagePullPolicy: corev1.PullNever,
+ Image: "bazel/metropolis/test/e2e/preseedtest:preseedtest_image",
ReadinessProbe: &corev1.Probe{
ProbeHandler: corev1.ProbeHandler{
HTTPGet: &corev1.HTTPGetAction{Port: intstr.FromInt(80)},
@@ -120,8 +120,9 @@
Spec: corev1.PodSpec{
Containers: []corev1.Container{
{
- Name: "test",
- Image: "nginx:alpine",
+ Name: "test",
+ ImagePullPolicy: corev1.PullNever,
+ Image: "bazel/metropolis/test/e2e/preseedtest:preseedtest_image",
ReadinessProbe: &corev1.Probe{
ProbeHandler: corev1.ProbeHandler{
HTTPGet: &corev1.HTTPGetAction{Port: intstr.FromInt(80)},
diff --git a/metropolis/test/e2e/main_test.go b/metropolis/test/e2e/main_test.go
index 32cf2bd..7ee63d0 100644
--- a/metropolis/test/e2e/main_test.go
+++ b/metropolis/test/e2e/main_test.go
@@ -312,37 +312,6 @@
return fmt.Errorf("pod is not ready: %v", events.Items[0].Message)
}
})
- util.TestEventual(t, "Pod with preseeded image", ctx, smallTestTimeout, func(ctx context.Context) error {
- _, err := clientSet.CoreV1().Pods("default").Create(ctx, &corev1.Pod{
- ObjectMeta: metav1.ObjectMeta{
- Name: "preseed-test-1",
- },
- Spec: corev1.PodSpec{
- Containers: []corev1.Container{{
- Name: "preseed-test-1",
- ImagePullPolicy: corev1.PullNever,
- Image: "bazel/metropolis/test/e2e/preseedtest:preseedtest_image",
- }},
- RestartPolicy: corev1.RestartPolicyNever,
- },
- }, metav1.CreateOptions{})
- return err
- })
- util.TestEventual(t, "Pod with preseeded image is completed", ctx, largeTestTimeout, func(ctx context.Context) error {
- pod, err := clientSet.CoreV1().Pods("default").Get(ctx, "preseed-test-1", metav1.GetOptions{})
- if err != nil {
- return fmt.Errorf("failed to get pod: %w", err)
- }
- if pod.Status.Phase == corev1.PodSucceeded {
- return nil
- }
- events, err := clientSet.CoreV1().Events("default").List(ctx, metav1.ListOptions{FieldSelector: fmt.Sprintf("involvedObject.name=%s,involvedObject.namespace=default", pod.Name)})
- if err != nil || len(events.Items) == 0 {
- return fmt.Errorf("pod is not ready: %v", pod.Status.Phase)
- } else {
- return fmt.Errorf("pod is not ready: %v", events.Items[len(events.Items)-1].Message)
- }
- })
if os.Getenv("HAVE_NESTED_KVM") != "" {
util.TestEventual(t, "Pod for KVM/QEMU smoke test", ctx, smallTestTimeout, func(ctx context.Context) error {
runcRuntimeClass := "runc"
diff --git a/metropolis/test/e2e/preseedtest/main.go b/metropolis/test/e2e/preseedtest/main.go
index ceb3898..a44377f 100644
--- a/metropolis/test/e2e/preseedtest/main.go
+++ b/metropolis/test/e2e/preseedtest/main.go
@@ -16,8 +16,18 @@
package main
-import "fmt"
+import (
+ "fmt"
+ "net/http"
+)
func main() {
fmt.Println("Hello world from preseeded image")
+ http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
+ fmt.Fprintf(w, "Hello world from preseeded image\n")
+ })
+ err := http.ListenAndServe(":80", nil)
+ if err != nil {
+ fmt.Printf("Serve failed: %v\n", err)
+ }
}