diff --git a/test/e2e/tests/collector_delete_manager/eraser_test.go b/test/e2e/tests/collector_delete_manager/eraser_test.go index fe09b53d89..0e3214fd81 100644 --- a/test/e2e/tests/collector_delete_manager/eraser_test.go +++ b/test/e2e/tests/collector_delete_manager/eraser_test.go @@ -13,57 +13,64 @@ import ( corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" - "sigs.k8s.io/e2e-framework/klient/wait" - "sigs.k8s.io/e2e-framework/klient/wait/conditions" "sigs.k8s.io/e2e-framework/pkg/envconf" "sigs.k8s.io/e2e-framework/pkg/features" ) func TestDeleteManager(t *testing.T) { - deleteManagerFeat := features.New("Deleting manager pod while current ImageJob is running should delete ImageJob"). + deleteManagerFeat := features.New("Deleting manager pod while current ImageJob is running should delete ImageJob and restart"). Assess("Delete controller-manager pod", func(ctx context.Context, t *testing.T, cfg *envconf.Config) context.Context { c, err := cfg.NewClient() if err != nil { t.Fatal("Failed to create new client", err) } - var ls corev1.PodList - err = c.Resources().List(ctx, &ls, func(o *metav1.ListOptions) { + // get manager pod + var podList corev1.PodList + err = c.Resources().List(ctx, &podList, func(o *metav1.ListOptions) { o.LabelSelector = labels.SelectorFromSet(map[string]string{util.ManagerLabelKey: util.ManagerLabelValue}).String() }) if err != nil { t.Errorf("could not list manager pods: %v", err) } - if len(ls.Items) != 1 { - t.Error("incorrect number of manager pods: ", len(ls.Items)) + if len(podList.Items) != 1 { + t.Error("incorrect number of manager pods: ", len(podList.Items)) } - if err := util.KubectlDelete(cfg.KubeconfigFile(), util.TestNamespace, []string{"pod", ls.Items[0].Name}); err != nil { - t.Error("unable to delete eraser-controller-manager pod") + // get current ImageJob + var jobList eraserv1alpha1.ImageJobList + err = c.Resources().List(ctx, &jobList) + if err != nil { + t.Errorf("could not list ImageJob: %v", err) } - return ctx - }). - Assess("Check ImageJob is deleted", func(ctx context.Context, t *testing.T, cfg *envconf.Config) context.Context { - c, err := cfg.NewClient() - if err != nil { - t.Fatal("Failed to create new client", err) + if len(jobList.Items) != 1 { + t.Error("incorrect number of ImageJobs: ", len(jobList.Items)) + } + + // save name vars + imagejobName := jobList.Items[0].Name + managerPodName := podList.Items[0].Name + + // delete manager pod + if err := util.KubectlDelete(cfg.KubeconfigFile(), util.TestNamespace, []string{"pod", managerPodName}); err != nil { + t.Error("unable to delete eraser-controller-manager pod") } - var ls eraserv1alpha1.ImageJobList - err = c.Resources().List(ctx, &ls) + // get new ImageJob + var jobList2 eraserv1alpha1.ImageJobList + err = c.Resources().List(ctx, &jobList2) if err != nil { t.Errorf("could not list ImageJob: %v", err) } - if len(ls.Items) != 1 { - t.Error("incorrect number of ImageJobs: ", len(ls.Items)) + if len(jobList2.Items) != 1 { + t.Error("incorrect number of ImageJobs: ", len(jobList2.Items)) } - err = wait.For(conditions.New(c.Resources()).ResourcesDeleted(&ls), wait.WithTimeout(util.Timeout)) - if err != nil { - t.Errorf("error waiting for pods to be deleted: %v", err) + if jobList2.Items[0].Name == imagejobName { + t.Error("new image job was not scheduled") } return ctx