e2e_apps:stop using deprecated framework.ExpectError
Signed-off-by: liyuerich <yue.li@daocloud.io>
This commit is contained in:
		| @@ -104,8 +104,8 @@ var _ = SIGDescribe("CronJob", func() { | ||||
| 		framework.ExpectNoError(err, "Failed to create CronJob in namespace %s", f.Namespace.Name) | ||||
|  | ||||
| 		ginkgo.By("Ensuring no jobs are scheduled") | ||||
| 		err = waitForNoJobs(ctx, f.ClientSet, f.Namespace.Name, cronJob.Name, false) | ||||
| 		framework.ExpectError(err) | ||||
| 		gomega.Consistently(ctx, framework.GetObject(f.ClientSet.BatchV1().CronJobs(f.Namespace.Name).Get, cronJob.Name, metav1.GetOptions{})).WithPolling(framework.Poll).WithTimeout(cronJobTimeout). | ||||
| 			Should(gomega.HaveField("Status.Active", gomega.BeEmpty())) | ||||
|  | ||||
| 		ginkgo.By("Ensuring no job exists by listing jobs explicitly") | ||||
| 		jobs, err := f.ClientSet.BatchV1().Jobs(f.Namespace.Name).List(ctx, metav1.ListOptions{}) | ||||
| @@ -145,8 +145,15 @@ var _ = SIGDescribe("CronJob", func() { | ||||
| 		gomega.Expect(activeJobs).To(gomega.HaveLen(1)) | ||||
|  | ||||
| 		ginkgo.By("Ensuring no more jobs are scheduled") | ||||
| 		err = waitForActiveJobs(ctx, f.ClientSet, f.Namespace.Name, cronJob.Name, 2) | ||||
| 		framework.ExpectError(err) | ||||
| 		gomega.Eventually(ctx, framework.GetObject(f.ClientSet.BatchV1().CronJobs(f.Namespace.Name).Get, cronJob.Name, metav1.GetOptions{})).WithPolling(framework.Poll).WithTimeout(cronJobTimeout). | ||||
| 			Should(framework.MakeMatcher(func(cj *batchv1.CronJob) (func() string, error) { | ||||
| 				if len(cj.Status.Active) < 2 { | ||||
| 					return nil, nil | ||||
| 				} | ||||
| 				return func() string { | ||||
| 					return fmt.Sprintf("unexpect active job number: %d\n", len(cj.Status.Active)) | ||||
| 				}, nil | ||||
| 			})) | ||||
|  | ||||
| 		ginkgo.By("Removing cronjob") | ||||
| 		err = deleteCronJob(ctx, f.ClientSet, f.Namespace.Name, cronJob.Name) | ||||
| @@ -230,8 +237,24 @@ var _ = SIGDescribe("CronJob", func() { | ||||
| 		framework.ExpectNoError(err, "Failed to ensure at least on finished job exists in namespace %s", f.Namespace.Name) | ||||
|  | ||||
| 		ginkgo.By("Ensuring no unexpected event has happened") | ||||
| 		err = waitForEventWithReason(ctx, f.ClientSet, f.Namespace.Name, cronJob.Name, []string{"MissingJob", "UnexpectedJob"}) | ||||
| 		framework.ExpectError(err) | ||||
| 		gomega.Eventually(ctx, framework.HandleRetry(func(ctx context.Context) (*v1.EventList, error) { | ||||
| 			sj, err := getCronJob(ctx, f.ClientSet, f.Namespace.Name, cronJob.Name) | ||||
| 			if err != nil { | ||||
| 				return nil, err | ||||
| 			} | ||||
| 			return f.ClientSet.CoreV1().Events(f.Namespace.Name).Search(scheme.Scheme, sj) | ||||
| 		})).WithPolling(framework.Poll).WithTimeout(30 * time.Second).Should(framework.MakeMatcher(func(actual *v1.EventList) (failure func() string, err error) { | ||||
| 			for _, e := range actual.Items { | ||||
| 				for _, reason := range []string{"MissingJob", "UnexpectedJob"} { | ||||
| 					if e.Reason == reason { | ||||
| 						return func() string { | ||||
| 							return fmt.Sprintf("unexpected event: %s\n", reason) | ||||
| 						}, nil | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 			return nil, nil | ||||
| 		})) | ||||
|  | ||||
| 		ginkgo.By("Removing cronjob") | ||||
| 		err = deleteCronJob(ctx, f.ClientSet, f.Namespace.Name, cronJob.Name) | ||||
| @@ -261,10 +284,7 @@ var _ = SIGDescribe("CronJob", func() { | ||||
|  | ||||
| 		ginkgo.By("Ensuring job was deleted") | ||||
| 		_, err = e2ejob.GetJob(ctx, f.ClientSet, f.Namespace.Name, job.Name) | ||||
| 		framework.ExpectError(err) | ||||
| 		if !apierrors.IsNotFound(err) { | ||||
| 			framework.Failf("Failed to delete %s cronjob in namespace %s", cronJob.Name, f.Namespace.Name) | ||||
| 		} | ||||
| 		gomega.Expect(err).To(gomega.MatchError(apierrors.IsNotFound, fmt.Sprintf("Failed to delete %s cronjob in namespace %s", cronJob.Name, f.Namespace.Name))) | ||||
|  | ||||
| 		ginkgo.By("Ensuring the job is not in the cronjob active list") | ||||
| 		err = waitForJobNotActive(ctx, f.ClientSet, f.Namespace.Name, cronJob.Name, job.Name) | ||||
| @@ -308,10 +328,7 @@ var _ = SIGDescribe("CronJob", func() { | ||||
| 		badTimeZone := "bad-time-zone" | ||||
| 		cronJob.Spec.TimeZone = &badTimeZone | ||||
| 		_, err := createCronJob(ctx, f.ClientSet, f.Namespace.Name, cronJob) | ||||
| 		framework.ExpectError(err, "CronJob creation should fail with invalid time zone error") | ||||
| 		if !apierrors.IsInvalid(err) { | ||||
| 			framework.Failf("Failed to create CronJob, invalid time zone.") | ||||
| 		} | ||||
| 		gomega.Expect(err).To(gomega.MatchError(apierrors.IsInvalid, "Failed to create CronJob, invalid time zone.")) | ||||
| 	}) | ||||
|  | ||||
| 	/* | ||||
| @@ -614,24 +631,6 @@ func waitForActiveJobs(ctx context.Context, c clientset.Interface, ns, cronJobNa | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| // Wait for jobs to appear in the active list of a cronjob or not. | ||||
| // When failIfNonEmpty is set, this fails if the active set of jobs is still non-empty after | ||||
| // the timeout. When failIfNonEmpty is not set, this fails if the active set of jobs is still | ||||
| // empty after the timeout. | ||||
| func waitForNoJobs(ctx context.Context, c clientset.Interface, ns, jobName string, failIfNonEmpty bool) error { | ||||
| 	return wait.PollWithContext(ctx, framework.Poll, cronJobTimeout, func(ctx context.Context) (bool, error) { | ||||
| 		curr, err := getCronJob(ctx, c, ns, jobName) | ||||
| 		if err != nil { | ||||
| 			return false, err | ||||
| 		} | ||||
|  | ||||
| 		if failIfNonEmpty { | ||||
| 			return len(curr.Status.Active) == 0, nil | ||||
| 		} | ||||
| 		return len(curr.Status.Active) != 0, nil | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| // Wait till a given job actually goes away from the Active list for a given cronjob | ||||
| func waitForJobNotActive(ctx context.Context, c clientset.Interface, ns, cronJobName, jobName string) error { | ||||
| 	return wait.PollWithContext(ctx, framework.Poll, cronJobTimeout, func(ctx context.Context) (bool, error) { | ||||
|   | ||||
| @@ -681,10 +681,7 @@ func stopDeployment(ctx context.Context, c clientset.Interface, ns, deploymentNa | ||||
|  | ||||
| 	framework.Logf("Ensuring deployment %s was deleted", deploymentName) | ||||
| 	_, err = c.AppsV1().Deployments(ns).Get(ctx, deployment.Name, metav1.GetOptions{}) | ||||
| 	framework.ExpectError(err) | ||||
| 	if !apierrors.IsNotFound(err) { | ||||
| 		framework.Failf("Expected deployment %s to be deleted", deploymentName) | ||||
| 	} | ||||
| 	gomega.Expect(err).To(gomega.MatchError(apierrors.IsNotFound, fmt.Sprintf("Expected deployment %s to be deleted", deploymentName))) | ||||
| 	framework.Logf("Ensuring deployment %s's RSes were deleted", deploymentName) | ||||
| 	selector, err := metav1.LabelSelectorAsSelector(deployment.Spec.Selector) | ||||
| 	framework.ExpectNoError(err) | ||||
|   | ||||
| @@ -317,10 +317,9 @@ var _ = SIGDescribe("DisruptionController", func() { | ||||
|  | ||||
| 			if c.shouldDeny { | ||||
| 				err = cs.CoreV1().Pods(ns).EvictV1(ctx, e) | ||||
| 				framework.ExpectError(err, "pod eviction should fail") | ||||
| 				if !apierrors.HasStatusCause(err, policyv1.DisruptionBudgetCause) { | ||||
| 					framework.Fail("pod eviction should fail with DisruptionBudget cause") | ||||
| 				} | ||||
| 				gomega.Expect(err).To(gomega.MatchError(func(err error) bool { | ||||
| 					return apierrors.HasStatusCause(err, policyv1.DisruptionBudgetCause) | ||||
| 				}, "pod eviction should fail with DisruptionBudget cause")) | ||||
| 			} else { | ||||
| 				// Only wait for running pods in the "allow" case | ||||
| 				// because one of shouldDeny cases relies on the | ||||
| @@ -363,10 +362,9 @@ var _ = SIGDescribe("DisruptionController", func() { | ||||
| 			}, | ||||
| 		} | ||||
| 		err = cs.CoreV1().Pods(ns).EvictV1(ctx, e) | ||||
| 		framework.ExpectError(err, "pod eviction should fail") | ||||
| 		if !apierrors.HasStatusCause(err, policyv1.DisruptionBudgetCause) { | ||||
| 			framework.Failf("pod eviction should fail with DisruptionBudget cause. The error was \"%v\"", err) | ||||
| 		} | ||||
| 		gomega.Expect(err).To(gomega.MatchError(func(err error) bool { | ||||
| 			return apierrors.HasStatusCause(err, policyv1.DisruptionBudgetCause) | ||||
| 		}, fmt.Sprintf("pod eviction should fail with DisruptionBudget cause. The error was \"%v\"\n", err))) | ||||
|  | ||||
| 		ginkgo.By("Updating the pdb to allow a pod to be evicted") | ||||
| 		updatePDBOrDie(ctx, cs, ns, defaultName, func(pdb *policyv1.PodDisruptionBudget) *policyv1.PodDisruptionBudget { | ||||
| @@ -403,10 +401,9 @@ var _ = SIGDescribe("DisruptionController", func() { | ||||
| 			}, | ||||
| 		} | ||||
| 		err = cs.CoreV1().Pods(ns).EvictV1(ctx, e) | ||||
| 		framework.ExpectError(err, "pod eviction should fail") | ||||
| 		if !apierrors.HasStatusCause(err, policyv1.DisruptionBudgetCause) { | ||||
| 			framework.Failf("pod eviction should fail with DisruptionBudget cause. The error was \"%v\"", err) | ||||
| 		} | ||||
| 		gomega.Expect(err).To(gomega.MatchError(func(err error) bool { | ||||
| 			return apierrors.HasStatusCause(err, policyv1.DisruptionBudgetCause) | ||||
| 		}, fmt.Sprintf("pod eviction should fail with DisruptionBudget cause. The error was \"%v\"\n", err))) | ||||
|  | ||||
| 		ginkgo.By("Deleting the pdb to allow a pod to be evicted") | ||||
| 		deletePDBOrDie(ctx, cs, ns, defaultName) | ||||
|   | ||||
| @@ -684,10 +684,7 @@ done`} | ||||
|  | ||||
| 		ginkgo.By("Ensuring job was deleted") | ||||
| 		_, err = e2ejob.GetJob(ctx, f.ClientSet, f.Namespace.Name, job.Name) | ||||
| 		framework.ExpectError(err, "failed to ensure job %s was deleted in namespace: %s", job.Name, f.Namespace.Name) | ||||
| 		if !apierrors.IsNotFound(err) { | ||||
| 			framework.Failf("failed to ensure job %s was deleted in namespace: %s", job.Name, f.Namespace.Name) | ||||
| 		} | ||||
| 		gomega.Expect(err).To(gomega.MatchError(apierrors.IsNotFound, fmt.Sprintf("failed to ensure job %s was deleted in namespace: %s", job.Name, f.Namespace.Name))) | ||||
| 	}) | ||||
|  | ||||
| 	/* | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 liyuerich
					liyuerich