diff --git a/test/e2e/apps/controller_revision.go b/test/e2e/apps/controller_revision.go index 05b8cfaa5db..c873b0ec187 100644 --- a/test/e2e/apps/controller_revision.go +++ b/test/e2e/apps/controller_revision.go @@ -142,7 +142,7 @@ var _ = SIGDescribe("ControllerRevision [Serial]", func() { ginkgo.By(fmt.Sprintf("Confirm DaemonSet %q successfully created with %q label", dsName, dsLabelSelector)) dsList, err := csAppsV1.DaemonSets("").List(ctx, metav1.ListOptions{LabelSelector: dsLabelSelector}) framework.ExpectNoError(err, "failed to list Daemon Sets") - framework.ExpectEqual(len(dsList.Items), 1, "filtered list wasn't found") + gomega.Expect(dsList.Items).To(gomega.HaveLen(1), "filtered list wasn't found") ds, err := c.AppsV1().DaemonSets(ns).Get(ctx, dsName, metav1.GetOptions{}) framework.ExpectNoError(err) @@ -151,7 +151,7 @@ var _ = SIGDescribe("ControllerRevision [Serial]", func() { ginkgo.By(fmt.Sprintf("Listing all ControllerRevisions with label %q", dsLabelSelector)) revs, err := csAppsV1.ControllerRevisions("").List(ctx, metav1.ListOptions{LabelSelector: dsLabelSelector}) framework.ExpectNoError(err, "Failed to list ControllerRevision: %v", err) - framework.ExpectEqual(len(revs.Items), 1, "Failed to find any controllerRevisions") + gomega.Expect(revs.Items).To(gomega.HaveLen(1), "Failed to find any controllerRevisions") // Locate the current ControllerRevision from the list var initialRevision *appsv1.ControllerRevision @@ -169,7 +169,7 @@ var _ = SIGDescribe("ControllerRevision [Serial]", func() { payload := "{\"metadata\":{\"labels\":{\"" + initialRevision.Name + "\":\"patched\"}}}" patchedControllerRevision, err := csAppsV1.ControllerRevisions(ns).Patch(ctx, initialRevision.Name, types.StrategicMergePatchType, []byte(payload), metav1.PatchOptions{}) framework.ExpectNoError(err, "failed to patch ControllerRevision %s in namespace %s", initialRevision.Name, ns) - framework.ExpectEqual(patchedControllerRevision.Labels[initialRevision.Name], "patched", "Did not find 'patched' label for this ControllerRevision. Current labels: %v", patchedControllerRevision.Labels) + gomega.Expect(patchedControllerRevision.Labels).To(gomega.HaveKeyWithValue(initialRevision.Name, "patched"), "Did not find 'patched' label for this ControllerRevision. Current labels: %v", patchedControllerRevision.Labels) framework.Logf("%s has been patched", patchedControllerRevision.Name) ginkgo.By("Create a new ControllerRevision") @@ -216,7 +216,7 @@ var _ = SIGDescribe("ControllerRevision [Serial]", func() { return err }) framework.ExpectNoError(err, "failed to update ControllerRevision in namespace: %s", ns) - framework.ExpectEqual(updatedControllerRevision.Labels[currentControllerRevision.Name], "updated", "Did not find 'updated' label for this ControllerRevision. Current labels: %v", currentControllerRevision.Labels) + gomega.Expect(updatedControllerRevision.Labels).To(gomega.HaveKeyWithValue(currentControllerRevision.Name, "updated"), "Did not find 'updated' label for this ControllerRevision. Current labels: %v", updatedControllerRevision.Labels) framework.Logf("%s has been updated", updatedControllerRevision.Name) ginkgo.By("Generate another ControllerRevision by patching the Daemonset") @@ -242,7 +242,7 @@ var _ = SIGDescribe("ControllerRevision [Serial]", func() { list, err := csAppsV1.ControllerRevisions(ns).List(ctx, metav1.ListOptions{}) framework.ExpectNoError(err, "failed to list ControllerRevision") - framework.ExpectEqual(list.Items[0].Revision, int64(3), "failed to find the expected revision for the Controller") + gomega.Expect(list.Items[0].Revision).To(gomega.Equal(int64(3)), "failed to find the expected revision for the Controller") framework.Logf("ControllerRevision %q has revision %d", list.Items[0].Name, list.Items[0].Revision) }) }) diff --git a/test/e2e/apps/cronjob.go b/test/e2e/apps/cronjob.go index 977ba3ab558..a363feafc45 100644 --- a/test/e2e/apps/cronjob.go +++ b/test/e2e/apps/cronjob.go @@ -342,12 +342,12 @@ var _ = SIGDescribe("CronJob", func() { ginkgo.By("getting") gottenCronJob, err := cjClient.Get(ctx, createdCronJob.Name, metav1.GetOptions{}) framework.ExpectNoError(err) - framework.ExpectEqual(gottenCronJob.UID, createdCronJob.UID) + gomega.Expect(gottenCronJob.UID).To(gomega.Equal(createdCronJob.UID)) ginkgo.By("listing") cjs, err := cjClient.List(ctx, metav1.ListOptions{LabelSelector: "special-label=" + f.UniqueName}) framework.ExpectNoError(err) - framework.ExpectEqual(len(cjs.Items), 1, "filtered list should have 1 item") + gomega.Expect(cjs.Items).To(gomega.HaveLen(1), "filtered list should have 1 item") ginkgo.By("watching") framework.Logf("starting watch") @@ -359,7 +359,7 @@ var _ = SIGDescribe("CronJob", func() { ginkgo.By("cluster-wide listing") clusterCJs, err := clusterCJClient.List(ctx, metav1.ListOptions{LabelSelector: "special-label=" + f.UniqueName}) framework.ExpectNoError(err) - framework.ExpectEqual(len(clusterCJs.Items), 1, "filtered list should have 1 items") + gomega.Expect(clusterCJs.Items).To(gomega.HaveLen(1), "filtered list should have 1 item") ginkgo.By("cluster-wide watching") framework.Logf("starting watch") @@ -370,7 +370,7 @@ var _ = SIGDescribe("CronJob", func() { patchedCronJob, err := cjClient.Patch(ctx, createdCronJob.Name, types.MergePatchType, []byte(`{"metadata":{"annotations":{"patched":"true"}}}`), metav1.PatchOptions{}) framework.ExpectNoError(err) - framework.ExpectEqual(patchedCronJob.Annotations["patched"], "true", "patched object should have the applied annotation") + gomega.Expect(patchedCronJob.Annotations).To(gomega.HaveKeyWithValue("patched", "true"), "patched object should have the applied annotation") ginkgo.By("updating") var cjToUpdate, updatedCronJob *batchv1.CronJob @@ -384,7 +384,7 @@ var _ = SIGDescribe("CronJob", func() { return err }) framework.ExpectNoError(err) - framework.ExpectEqual(updatedCronJob.Annotations["updated"], "true", "updated object should have the applied annotation") + gomega.Expect(updatedCronJob.Annotations).To(gomega.HaveKeyWithValue("updated", "true"), "updated object should have the applied annotation") framework.Logf("waiting for watch events with expected annotations") for sawAnnotations := false; !sawAnnotations; { @@ -394,7 +394,7 @@ var _ = SIGDescribe("CronJob", func() { if !ok { framework.Fail("Watch channel is closed.") } - framework.ExpectEqual(evt.Type, watch.Modified) + gomega.Expect(evt.Type).To(gomega.Equal(watch.Modified)) watchedCronJob, isCronJob := evt.Object.(*batchv1.CronJob) if !isCronJob { framework.Failf("expected CronJob, got %T", evt.Object) @@ -427,7 +427,7 @@ var _ = SIGDescribe("CronJob", func() { if !patchedStatus.Status.LastScheduleTime.Equal(&now1) { framework.Failf("patched object should have the applied lastScheduleTime %#v, got %#v instead", cjStatus.LastScheduleTime, patchedStatus.Status.LastScheduleTime) } - framework.ExpectEqual(patchedStatus.Annotations["patchedstatus"], "true", "patched object should have the applied annotation") + gomega.Expect(patchedStatus.Annotations).To(gomega.HaveKeyWithValue("patchedstatus", "true"), "patched object should have the applied annotation") ginkgo.By("updating /status") // we need to use RFC3339 version since conversion over the wire cuts nanoseconds @@ -454,7 +454,7 @@ var _ = SIGDescribe("CronJob", func() { framework.ExpectNoError(err) statusUID, _, err := unstructured.NestedFieldCopy(gottenStatus.Object, "metadata", "uid") framework.ExpectNoError(err) - framework.ExpectEqual(string(createdCronJob.UID), statusUID, fmt.Sprintf("createdCronJob.UID: %v expected to match statusUID: %v ", createdCronJob.UID, statusUID)) + gomega.Expect(string(createdCronJob.UID)).To(gomega.Equal(statusUID), "createdCronJob.UID: %v expected to match statusUID: %v ", createdCronJob.UID, statusUID) // CronJob resource delete operations expectFinalizer := func(cj *batchv1.CronJob, msg string) { @@ -508,7 +508,7 @@ func ensureHistoryLimits(ctx context.Context, c clientset.Interface, ns string, activeJobs, finishedJobs := filterActiveJobs(jobs) if len(finishedJobs) != 1 { framework.Logf("Expected one finished job in namespace %s; activeJobs=%v; finishedJobs=%v", ns, activeJobs, finishedJobs) - framework.ExpectEqual(len(finishedJobs), 1) + gomega.Expect(finishedJobs).To(gomega.HaveLen(1)) } // Job should get deleted when the next job finishes the next minute @@ -524,7 +524,7 @@ func ensureHistoryLimits(ctx context.Context, c clientset.Interface, ns string, activeJobs, finishedJobs = filterActiveJobs(jobs) if len(finishedJobs) != 1 { framework.Logf("Expected one finished job in namespace %s; activeJobs=%v; finishedJobs=%v", ns, activeJobs, finishedJobs) - framework.ExpectEqual(len(finishedJobs), 1) + gomega.Expect(finishedJobs).To(gomega.HaveLen(1)) } ginkgo.By("Removing cronjob") diff --git a/test/e2e/apps/daemon_set.go b/test/e2e/apps/daemon_set.go index f7296e0e846..8b2bac38837 100644 --- a/test/e2e/apps/daemon_set.go +++ b/test/e2e/apps/daemon_set.go @@ -221,7 +221,7 @@ var _ = SIGDescribe("Daemon set [Serial]", func() { newNode, err := setDaemonSetNodeLabels(ctx, c, node.Name, nodeSelector) framework.ExpectNoError(err, "error setting labels on node") daemonSetLabels, _ := separateDaemonSetNodeLabels(newNode.Labels) - framework.ExpectEqual(len(daemonSetLabels), 1) + gomega.Expect(daemonSetLabels).To(gomega.HaveLen(1)) err = wait.PollImmediateWithContext(ctx, dsRetryPeriod, dsRetryTimeout, e2edaemonset.CheckDaemonPodOnNodes(f, ds, []string{newNode.Name})) framework.ExpectNoError(err, "error waiting for daemon pods to be running on new nodes") err = e2edaemonset.CheckDaemonStatus(ctx, f, dsName) @@ -240,7 +240,7 @@ var _ = SIGDescribe("Daemon set [Serial]", func() { ds, err = c.AppsV1().DaemonSets(ns).Patch(ctx, dsName, types.StrategicMergePatchType, []byte(patch), metav1.PatchOptions{}) framework.ExpectNoError(err, "error patching daemon set") daemonSetLabels, _ = separateDaemonSetNodeLabels(greenNode.Labels) - framework.ExpectEqual(len(daemonSetLabels), 1) + gomega.Expect(daemonSetLabels).To(gomega.HaveLen(1)) err = wait.PollImmediateWithContext(ctx, dsRetryPeriod, dsRetryTimeout, e2edaemonset.CheckDaemonPodOnNodes(f, ds, []string{greenNode.Name})) framework.ExpectNoError(err, "error waiting for daemon pods to be running on new nodes") err = e2edaemonset.CheckDaemonStatus(ctx, f, dsName) @@ -284,7 +284,7 @@ var _ = SIGDescribe("Daemon set [Serial]", func() { newNode, err := setDaemonSetNodeLabels(ctx, c, node.Name, nodeSelector) framework.ExpectNoError(err, "error setting labels on node") daemonSetLabels, _ := separateDaemonSetNodeLabels(newNode.Labels) - framework.ExpectEqual(len(daemonSetLabels), 1) + gomega.Expect(daemonSetLabels).To(gomega.HaveLen(1)) err = wait.PollImmediateWithContext(ctx, dsRetryPeriod, dsRetryTimeout, e2edaemonset.CheckDaemonPodOnNodes(f, ds, []string{newNode.Name})) framework.ExpectNoError(err, "error waiting for daemon pods to be running on new nodes") err = e2edaemonset.CheckDaemonStatus(ctx, f, dsName) @@ -351,7 +351,7 @@ var _ = SIGDescribe("Daemon set [Serial]", func() { waitForHistoryCreated(ctx, c, ns, label, 1) first := curHistory(listDaemonHistories(ctx, c, ns, label), ds) firstHash := first.Labels[appsv1.DefaultDaemonSetUniqueLabelKey] - framework.ExpectEqual(first.Revision, int64(1)) + gomega.Expect(first.Revision).To(gomega.Equal(int64(1))) checkDaemonSetPodsLabels(listDaemonPods(ctx, c, ns, label), firstHash) ginkgo.By("Update daemon pods image.") @@ -372,7 +372,7 @@ var _ = SIGDescribe("Daemon set [Serial]", func() { framework.ExpectNoError(err) waitForHistoryCreated(ctx, c, ns, label, 2) cur := curHistory(listDaemonHistories(ctx, c, ns, label), ds) - framework.ExpectEqual(cur.Revision, int64(2)) + gomega.Expect(cur.Revision).To(gomega.Equal(int64(2))) gomega.Expect(cur.Labels).NotTo(gomega.HaveKeyWithValue(appsv1.DefaultDaemonSetUniqueLabelKey, firstHash)) checkDaemonSetPodsLabels(listDaemonPods(ctx, c, ns, label), firstHash) }) @@ -401,7 +401,7 @@ var _ = SIGDescribe("Daemon set [Serial]", func() { waitForHistoryCreated(ctx, c, ns, label, 1) cur := curHistory(listDaemonHistories(ctx, c, ns, label), ds) hash := cur.Labels[appsv1.DefaultDaemonSetUniqueLabelKey] - framework.ExpectEqual(cur.Revision, int64(1)) + gomega.Expect(cur.Revision).To(gomega.Equal(int64(1))) checkDaemonSetPodsLabels(listDaemonPods(ctx, c, ns, label), hash) ginkgo.By("Update daemon pods image.") @@ -430,7 +430,7 @@ var _ = SIGDescribe("Daemon set [Serial]", func() { waitForHistoryCreated(ctx, c, ns, label, 2) cur = curHistory(listDaemonHistories(ctx, c, ns, label), ds) hash = cur.Labels[appsv1.DefaultDaemonSetUniqueLabelKey] - framework.ExpectEqual(cur.Revision, int64(2)) + gomega.Expect(cur.Revision).To(gomega.Equal(int64(2))) checkDaemonSetPodsLabels(listDaemonPods(ctx, c, ns, label), hash) }) @@ -484,7 +484,7 @@ var _ = SIGDescribe("Daemon set [Serial]", func() { schedulableNodes, err = e2enode.GetReadySchedulableNodes(ctx, c) framework.ExpectNoError(err) if len(schedulableNodes.Items) < 2 { - framework.ExpectEqual(len(existingPods), 0) + gomega.Expect(existingPods).To(gomega.BeEmpty()) } else { gomega.Expect(existingPods).NotTo(gomega.BeEmpty()) } @@ -571,7 +571,7 @@ var _ = SIGDescribe("Daemon set [Serial]", func() { waitForHistoryCreated(ctx, c, ns, label, 1) cur := curHistory(listDaemonHistories(ctx, c, ns, label), ds) hash := cur.Labels[appsv1.DefaultDaemonSetUniqueLabelKey] - framework.ExpectEqual(cur.Revision, int64(1)) + gomega.Expect(cur.Revision).To(gomega.Equal(int64(1))) checkDaemonSetPodsLabels(listDaemonPods(ctx, c, ns, label), hash) newVersion := "2" @@ -822,7 +822,7 @@ var _ = SIGDescribe("Daemon set [Serial]", func() { waitForHistoryCreated(ctx, c, ns, label, 2) cur = curHistory(listDaemonHistories(ctx, c, ns, label), ds) hash = cur.Labels[appsv1.DefaultDaemonSetUniqueLabelKey] - framework.ExpectEqual(cur.Revision, int64(2)) + gomega.Expect(cur.Revision).To(gomega.Equal(int64(2))) checkDaemonSetPodsLabels(listDaemonPods(ctx, c, ns, label), hash) }) @@ -854,7 +854,7 @@ var _ = SIGDescribe("Daemon set [Serial]", func() { ginkgo.By("listing all DaemonSets") dsList, err := cs.AppsV1().DaemonSets("").List(ctx, metav1.ListOptions{LabelSelector: labelSelector}) framework.ExpectNoError(err, "failed to list Daemon Sets") - framework.ExpectEqual(len(dsList.Items), 1, "filtered list wasn't found") + gomega.Expect(dsList.Items).To(gomega.HaveLen(1), "filtered list wasn't found") ginkgo.By("DeleteCollection of the DaemonSets") err = dsClient.DeleteCollection(ctx, metav1.DeleteOptions{GracePeriodSeconds: &one}, metav1.ListOptions{LabelSelector: labelSelector}) @@ -863,7 +863,7 @@ var _ = SIGDescribe("Daemon set [Serial]", func() { ginkgo.By("Verify that ReplicaSets have been deleted") dsList, err = c.AppsV1().DaemonSets("").List(ctx, metav1.ListOptions{LabelSelector: labelSelector}) framework.ExpectNoError(err, "failed to list DaemonSets") - framework.ExpectEqual(len(dsList.Items), 0, "filtered list should have no daemonset") + gomega.Expect(dsList.Items).To(gomega.BeEmpty(), "filtered list should have no daemonset") }) /* Release: v1.22 @@ -1207,7 +1207,7 @@ func checkDaemonSetPodsLabels(podList *v1.PodList, hash string) { podHash := pod.Labels[appsv1.DefaultDaemonSetUniqueLabelKey] gomega.Expect(podHash).ToNot(gomega.BeEmpty()) if len(hash) > 0 { - framework.ExpectEqual(podHash, hash, "unexpected hash for pod %s", pod.Name) + gomega.Expect(podHash).To(gomega.Equal(hash), "unexpected hash for pod %s", pod.Name) } } } @@ -1253,7 +1253,7 @@ func curHistory(historyList *appsv1.ControllerRevisionList, ds *appsv1.DaemonSet foundCurHistories++ } } - framework.ExpectEqual(foundCurHistories, 1) + gomega.Expect(foundCurHistories).To(gomega.Equal(1)) gomega.Expect(curHistory).NotTo(gomega.BeNil()) return curHistory } diff --git a/test/e2e/apps/deployment.go b/test/e2e/apps/deployment.go index bf03b1e1e32..51562e1764c 100644 --- a/test/e2e/apps/deployment.go +++ b/test/e2e/apps/deployment.go @@ -373,8 +373,8 @@ var _ = SIGDescribe("Deployment", func() { deploymentGet := appsv1.Deployment{} err = runtime.DefaultUnstructuredConverter.FromUnstructured(deploymentGetUnstructured.Object, &deploymentGet) framework.ExpectNoError(err, "failed to convert the unstructured response to a Deployment") - framework.ExpectEqual(deploymentGet.Spec.Template.Spec.Containers[0].Image, testDeploymentUpdateImage, "failed to update image") - framework.ExpectEqual(deploymentGet.ObjectMeta.Labels["test-deployment"], "updated", "failed to update labels") + gomega.Expect(deploymentGet.Spec.Template.Spec.Containers[0].Image).To(gomega.Equal(testDeploymentUpdateImage), "failed to update image") + gomega.Expect(deploymentGet.ObjectMeta.Labels).To(gomega.HaveKeyWithValue("test-deployment", "updated"), "failed to update labels") ctxUntil, cancel = context.WithTimeout(ctx, f.Timeouts.PodStart) defer cancel() @@ -432,8 +432,9 @@ var _ = SIGDescribe("Deployment", func() { deploymentGet = appsv1.Deployment{} err = runtime.DefaultUnstructuredConverter.FromUnstructured(deploymentGetUnstructured.Object, &deploymentGet) framework.ExpectNoError(err, "failed to convert the unstructured response to a Deployment") - framework.ExpectEqual(deploymentGet.Spec.Template.Spec.Containers[0].Image, testDeploymentUpdateImage, "failed to update image") - framework.ExpectEqual(deploymentGet.ObjectMeta.Labels["test-deployment"], "updated", "failed to update labels") + gomega.Expect(deploymentGet.Spec.Template.Spec.Containers[0].Image).To(gomega.Equal(testDeploymentUpdateImage), "failed to update image") + gomega.Expect(deploymentGet.ObjectMeta.Labels).To(gomega.HaveKeyWithValue("test-deployment", "updated"), "failed to update labels") + ctxUntil, cancel = context.WithTimeout(ctx, f.Timeouts.PodStart) defer cancel() _, err = watchtools.Until(ctxUntil, deploymentsList.ResourceVersion, w, func(event watch.Event) (bool, error) { @@ -782,7 +783,7 @@ func testRollingUpdateDeployment(ctx context.Context, f *framework.Framework) { framework.ExpectNoError(err) _, allOldRSs, err := testutil.GetOldReplicaSets(deployment, c) framework.ExpectNoError(err) - framework.ExpectEqual(len(allOldRSs), 1) + gomega.Expect(allOldRSs).To(gomega.HaveLen(1)) } func testRecreateDeployment(ctx context.Context, f *framework.Framework) { @@ -984,8 +985,8 @@ func testRolloverDeployment(ctx context.Context, f *framework.Framework) { } func ensureReplicas(rs *appsv1.ReplicaSet, replicas int32) { - framework.ExpectEqual(*rs.Spec.Replicas, replicas) - framework.ExpectEqual(rs.Status.Replicas, replicas) + gomega.Expect(*rs.Spec.Replicas).To(gomega.Equal(replicas)) + gomega.Expect(rs.Status.Replicas).To(gomega.Equal(replicas)) } func randomScale(d *appsv1.Deployment, i int) { @@ -1141,7 +1142,7 @@ func testDeploymentsControllerRef(ctx context.Context, f *framework.Framework) { framework.Logf("Verifying Deployment %q has only one ReplicaSet", deploymentName) rsList := listDeploymentReplicaSets(ctx, c, ns, podLabels) - framework.ExpectEqual(len(rsList.Items), 1) + gomega.Expect(rsList.Items).To(gomega.HaveLen(1)) framework.Logf("Obtaining the ReplicaSet's UID") orphanedRSUID := rsList.Items[0].UID @@ -1172,10 +1173,10 @@ func testDeploymentsControllerRef(ctx context.Context, f *framework.Framework) { framework.Logf("Verifying no extra ReplicaSet is created (Deployment %q still has only one ReplicaSet after adoption)", deploymentName) rsList = listDeploymentReplicaSets(ctx, c, ns, podLabels) - framework.ExpectEqual(len(rsList.Items), 1) + gomega.Expect(rsList.Items).To(gomega.HaveLen(1)) framework.Logf("Verifying the ReplicaSet has the same UID as the orphaned ReplicaSet") - framework.ExpectEqual(rsList.Items[0].UID, orphanedRSUID) + gomega.Expect(rsList.Items[0].UID).To(gomega.Equal(orphanedRSUID)) } // testProportionalScalingDeployment tests that when a RollingUpdate Deployment is scaled in the middle @@ -1258,7 +1259,7 @@ func testProportionalScalingDeployment(ctx context.Context, f *framework.Framewo // Second rollout's replicaset should have 0 available replicas. framework.Logf("Verifying that the second rollout's replicaset has .status.availableReplicas = 0") - framework.ExpectEqual(secondRS.Status.AvailableReplicas, int32(0)) + gomega.Expect(secondRS.Status.AvailableReplicas).To(gomega.Equal(int32(0))) // Second rollout's replicaset should have Deployment's (replicas + maxSurge - first RS's replicas) = 10 + 3 - 8 = 5 for .spec.replicas. newReplicas := replicas + int32(maxSurge) - minAvailableReplicas @@ -1664,8 +1665,8 @@ func testDeploymentSubresources(ctx context.Context, f *framework.Framework) { if err != nil { framework.Failf("Failed to get scale subresource: %v", err) } - framework.ExpectEqual(scale.Spec.Replicas, int32(1)) - framework.ExpectEqual(scale.Status.Replicas, int32(1)) + gomega.Expect(scale.Spec.Replicas).To(gomega.Equal(int32(1))) + gomega.Expect(scale.Status.Replicas).To(gomega.Equal(int32(1))) ginkgo.By("updating a scale subresource") scale.ResourceVersion = "" // indicate the scale update should be unconditional @@ -1674,14 +1675,14 @@ func testDeploymentSubresources(ctx context.Context, f *framework.Framework) { if err != nil { framework.Failf("Failed to put scale subresource: %v", err) } - framework.ExpectEqual(scaleResult.Spec.Replicas, int32(2)) + gomega.Expect(scaleResult.Spec.Replicas).To(gomega.Equal(int32(2))) ginkgo.By("verifying the deployment Spec.Replicas was modified") deployment, err := c.AppsV1().Deployments(ns).Get(ctx, deploymentName, metav1.GetOptions{}) if err != nil { framework.Failf("Failed to get deployment resource: %v", err) } - framework.ExpectEqual(*(deployment.Spec.Replicas), int32(2)) + gomega.Expect(*(deployment.Spec.Replicas)).To(gomega.Equal(int32(2))) ginkgo.By("Patch a scale subresource") scale.ResourceVersion = "" // indicate the scale update should be unconditional @@ -1698,5 +1699,5 @@ func testDeploymentSubresources(ctx context.Context, f *framework.Framework) { deployment, err = c.AppsV1().Deployments(ns).Get(ctx, deploymentName, metav1.GetOptions{}) framework.ExpectNoError(err, "Failed to get deployment resource: %v", err) - framework.ExpectEqual(*(deployment.Spec.Replicas), int32(4), "deployment should have 4 replicas") + gomega.Expect(*(deployment.Spec.Replicas)).To(gomega.Equal(int32(4)), "deployment should have 4 replicas") } diff --git a/test/e2e/apps/disruption.go b/test/e2e/apps/disruption.go index e45b362fc8d..77a211c93c1 100644 --- a/test/e2e/apps/disruption.go +++ b/test/e2e/apps/disruption.go @@ -115,7 +115,7 @@ var _ = SIGDescribe("DisruptionController", func() { pdb.Spec.MinAvailable = &newMinAvailable return pdb }, cs.PolicyV1().PodDisruptionBudgets(ns).Update) - framework.ExpectEqual(updatedPDB.Spec.MinAvailable.String(), "2%") + gomega.Expect(updatedPDB.Spec.MinAvailable.String()).To(gomega.Equal("2%")) ginkgo.By("patching the pdb") patchedPDB := patchPDBOrDie(ctx, cs, dc, ns, defaultName, func(old *policyv1.PodDisruptionBudget) (bytes []byte, err error) { @@ -127,7 +127,7 @@ var _ = SIGDescribe("DisruptionController", func() { framework.ExpectNoError(err, "failed to marshal JSON for new data") return newBytes, nil }) - framework.ExpectEqual(patchedPDB.Spec.MinAvailable.String(), "3%") + gomega.Expect(patchedPDB.Spec.MinAvailable.String()).To(gomega.Equal("3%")) deletePDBOrDie(ctx, cs, ns, defaultName) }) @@ -500,7 +500,7 @@ func deletePDBOrDie(ctx context.Context, cs kubernetes.Interface, ns string, nam func listPDBs(ctx context.Context, cs kubernetes.Interface, ns string, labelSelector string, count int, expectedPDBNames []string) { pdbList, err := cs.PolicyV1().PodDisruptionBudgets(ns).List(ctx, metav1.ListOptions{LabelSelector: labelSelector}) framework.ExpectNoError(err, "Listing PDB set in namespace %s", ns) - framework.ExpectEqual(len(pdbList.Items), count, "Expecting %d PDBs returned in namespace %s", count, ns) + gomega.Expect(pdbList.Items).To(gomega.HaveLen(count), "Expecting %d PDBs returned in namespace %s", count, ns) pdbNames := make([]string, 0) for _, item := range pdbList.Items { diff --git a/test/e2e/apps/job.go b/test/e2e/apps/job.go index 88b15c6efa4..8b957d9f8b3 100644 --- a/test/e2e/apps/job.go +++ b/test/e2e/apps/job.go @@ -19,7 +19,6 @@ package apps import ( "context" "encoding/json" - "errors" "fmt" "strconv" "time" @@ -99,7 +98,7 @@ var _ = SIGDescribe("Job", func() { successes++ } } - framework.ExpectEqual(successes, completions, "expected %d successful job pods, but got %d", completions, successes) + gomega.Expect(successes).To(gomega.Equal(completions), "expected %d successful job pods, but got %d", completions, successes) }) ginkgo.It("should allow to use the pod failure policy on exit code to fail the job early", func(ctx context.Context) { @@ -216,7 +215,7 @@ var _ = SIGDescribe("Job", func() { pods, err := e2ejob.GetAllRunningJobPods(ctx, f.ClientSet, f.Namespace.Name, job.Name) framework.ExpectNoError(err, "failed to get running pods for the job: %s/%s", job.Name, job.Namespace) - framework.ExpectEqual(len(pods), 1, "Exactly one running pod is expected") + gomega.Expect(pods).To(gomega.HaveLen(1), "Exactly one running pod is expected") pod := pods[0] ginkgo.By(fmt.Sprintf("Evicting the running pod: %s/%s", pod.Name, pod.Namespace)) evictTarget := &policyv1.Eviction{ @@ -281,13 +280,14 @@ var _ = SIGDescribe("Job", func() { framework.ExpectNoError(err, "failed to create job in namespace: %s", f.Namespace.Name) ginkgo.By("Ensuring pods aren't created for job") - framework.ExpectEqual(wait.Poll(framework.Poll, wait.ForeverTestTimeout, func() (bool, error) { + err = framework.Gomega().Consistently(ctx, framework.HandleRetry(func(ctx context.Context) ([]v1.Pod, error) { pods, err := e2ejob.GetJobPods(ctx, f.ClientSet, f.Namespace.Name, job.Name) if err != nil { - return false, err + return nil, fmt.Errorf("failed to list pod for a given job %s in namespace %s: %w", job.Name, f.Namespace.Name, err) } - return len(pods.Items) > 0, nil - }), wait.ErrorInterrupted(errors.New("timed out waiting for the condition"))) + return pods.Items, nil + })).WithPolling(framework.Poll).WithTimeout(wait.ForeverTestTimeout).Should(gomega.BeEmpty()) + framework.ExpectNoError(err, "failed to confirm that pods aren't created for job %s in namespace %s", job.Name, f.Namespace.Name) ginkgo.By("Checking Job status to observe Suspended state") job, err = e2ejob.GetJob(ctx, f.ClientSet, f.Namespace.Name, job.Name) @@ -325,21 +325,15 @@ var _ = SIGDescribe("Job", func() { framework.ExpectNoError(err, "failed to ensure number of pods associated with job %s is equal to parallelism count in namespace: %s", job.Name, f.Namespace.Name) ginkgo.By("Updating the job with suspend=true") - err = wait.PollImmediate(framework.Poll, framework.SingleCallTimeout, func() (bool, error) { + err = retry.RetryOnConflict(retry.DefaultRetry, func() error { job, err = e2ejob.GetJob(ctx, f.ClientSet, f.Namespace.Name, job.Name) - if err != nil { - return false, err - } + framework.ExpectNoError(err, "unable to get job %s in namespace %s", job.Name, f.Namespace.Name) job.Spec.Suspend = pointer.Bool(true) updatedJob, err := e2ejob.UpdateJob(ctx, f.ClientSet, f.Namespace.Name, job) if err == nil { job = updatedJob - return true, nil } - if apierrors.IsConflict(err) { - return false, nil - } - return false, err + return err }) framework.ExpectNoError(err, "failed to update job in namespace: %s", f.Namespace.Name) @@ -390,12 +384,12 @@ var _ = SIGDescribe("Job", func() { framework.ExpectNoError(err, "failed obtaining completion index from pod in namespace: %s", f.Namespace.Name) succeededIndexes.Insert(ix) expectedName := fmt.Sprintf("%s-%d", job.Name, ix) - framework.ExpectEqual(pod.Spec.Hostname, expectedName, "expected completed pod with hostname %s, but got %s", expectedName, pod.Spec.Hostname) + gomega.Expect(pod.Spec.Hostname).To(gomega.Equal(expectedName), "expected completed pod with hostname %s, but got %s", expectedName, pod.Spec.Hostname) } } gotIndexes := succeededIndexes.List() wantIndexes := []int{0, 1, 2, 3} - framework.ExpectEqual(gotIndexes, wantIndexes, "expected completed indexes %s, but got %s", wantIndexes, gotIndexes) + gomega.Expect(gotIndexes).To(gomega.Equal(wantIndexes), "expected completed indexes %s, but got %s", wantIndexes, gotIndexes) }) /* @@ -581,7 +575,7 @@ var _ = SIGDescribe("Job", func() { framework.ExpectNoError(err, "failed to get PodList for job %s in namespace: %s", job.Name, f.Namespace.Name) gomega.Expect(pods.Items).To(gomega.HaveLen(backoff + 1)) for _, pod := range pods.Items { - framework.ExpectEqual(pod.Status.Phase, v1.PodFailed) + gomega.Expect(pod.Status.Phase).To(gomega.Equal(v1.PodFailed)) } }) @@ -628,7 +622,7 @@ var _ = SIGDescribe("Job", func() { successes++ } } - framework.ExpectEqual(successes, largeCompletions, "expected %d successful job pods, but got %d", largeCompletions, successes) + gomega.Expect(successes).To(gomega.Equal(largeCompletions), "expected %d successful job pods, but got %d", largeCompletions, successes) }) /* @@ -671,7 +665,7 @@ var _ = SIGDescribe("Job", func() { if !patchedStatus.Status.StartTime.Equal(&now1) { framework.Failf("patched object should have the applied StartTime %#v, got %#v instead", jStatus.StartTime, patchedStatus.Status.StartTime) } - framework.ExpectEqual(patchedStatus.Annotations["patchedstatus"], "true", "patched object should have the applied annotation") + gomega.Expect(patchedStatus.Annotations).To(gomega.HaveKeyWithValue("patchedstatus", "true"), "patched object should have the applied annotation") ginkgo.By("updating /status") // we need to use RFC3339 version since conversion over the wire cuts nanoseconds @@ -697,7 +691,7 @@ var _ = SIGDescribe("Job", func() { framework.ExpectNoError(err) statusUID, _, err := unstructured.NestedFieldCopy(gottenStatus.Object, "metadata", "uid") framework.ExpectNoError(err) - framework.ExpectEqual(string(job.UID), statusUID, fmt.Sprintf("job.UID: %v expected to match statusUID: %v ", job.UID, statusUID)) + gomega.Expect(string(job.UID)).To(gomega.Equal(statusUID), fmt.Sprintf("job.UID: %v expected to match statusUID: %v ", job.UID, statusUID)) }) /* @@ -753,7 +747,7 @@ var _ = SIGDescribe("Job", func() { updatedValue: "patched", } waitForJobEvent(ctx, c) - framework.ExpectEqual(patchedJob.Labels[jobName], "patched", "Did not find job label for this job. Current labels: %v", patchedJob.Labels) + gomega.Expect(patchedJob.Labels).To(gomega.HaveKeyWithValue(jobName, "patched"), "Did not find job label for this job. Current labels: %v", patchedJob.Labels) ginkgo.By("Updating the job") var updatedJob *batchv1.Job @@ -784,13 +778,13 @@ var _ = SIGDescribe("Job", func() { updatedValue: "true", } waitForJobEvent(ctx, c) - framework.ExpectEqual(updatedJob.Annotations["updated"], "true", "updated Job should have the applied annotation") + gomega.Expect(updatedJob.Annotations).To(gomega.HaveKeyWithValue("updated", "true"), "updated Job should have the applied annotation") framework.Logf("Found Job annotations: %#v", patchedJob.Annotations) ginkgo.By("Listing all Jobs with LabelSelector") jobs, err := f.ClientSet.BatchV1().Jobs("").List(ctx, metav1.ListOptions{LabelSelector: labelSelector}) framework.ExpectNoError(err, "Failed to list job. %v", err) - framework.ExpectEqual(len(jobs.Items), 1, "Failed to find job %v", jobName) + gomega.Expect(jobs.Items).To(gomega.HaveLen(1), "Failed to find job %v", jobName) testJob := jobs.Items[0] framework.Logf("Job: %v as labels: %v", testJob.Name, testJob.Labels) @@ -820,7 +814,7 @@ var _ = SIGDescribe("Job", func() { ginkgo.By("Relist jobs to confirm deletion") jobs, err = f.ClientSet.BatchV1().Jobs("").List(ctx, metav1.ListOptions{LabelSelector: labelSelector}) framework.ExpectNoError(err, "Failed to list job. %v", err) - framework.ExpectEqual(len(jobs.Items), 0, "Found job %v", jobName) + gomega.Expect(jobs.Items).To(gomega.BeEmpty(), "Found job %v", jobName) }) }) diff --git a/test/e2e/apps/rc.go b/test/e2e/apps/rc.go index 5939c34c5f4..bb98dca65b6 100644 --- a/test/e2e/apps/rc.go +++ b/test/e2e/apps/rc.go @@ -206,7 +206,7 @@ var _ = SIGDescribe("ReplicationController", func() { ginkgo.By("patching ReplicationController") testRcPatched, err := f.ClientSet.CoreV1().ReplicationControllers(testRcNamespace).Patch(ctx, testRcName, types.StrategicMergePatchType, []byte(rcLabelPatchPayload), metav1.PatchOptions{}) framework.ExpectNoError(err, "Failed to patch ReplicationController") - framework.ExpectEqual(testRcPatched.ObjectMeta.Labels["test-rc"], "patched", "failed to patch RC") + gomega.Expect(testRcPatched.ObjectMeta.Labels).To(gomega.HaveKeyWithValue("test-rc", "patched"), "failed to patch RC") ginkgo.By("waiting for RC to be modified") eventFound = false ctxUntil, cancel = context.WithTimeout(ctx, 60*time.Second) @@ -236,7 +236,7 @@ var _ = SIGDescribe("ReplicationController", func() { ginkgo.By("patching ReplicationController status") rcStatus, err := f.ClientSet.CoreV1().ReplicationControllers(testRcNamespace).Patch(ctx, testRcName, types.StrategicMergePatchType, []byte(rcStatusPatchPayload), metav1.PatchOptions{}, "status") framework.ExpectNoError(err, "Failed to patch ReplicationControllerStatus") - framework.ExpectEqual(rcStatus.Status.ReadyReplicas, int32(0), "ReplicationControllerStatus's readyReplicas does not equal 0") + gomega.Expect(rcStatus.Status.ReadyReplicas).To(gomega.Equal(int32(0)), "ReplicationControllerStatus's readyReplicas does not equal 0") ginkgo.By("waiting for RC to be modified") eventFound = false ctxUntil, cancel = context.WithTimeout(ctx, 60*time.Second) @@ -282,7 +282,7 @@ var _ = SIGDescribe("ReplicationController", func() { rcStatusUjson, err := json.Marshal(rcStatusUnstructured) framework.ExpectNoError(err, "Failed to marshal json of replicationcontroller label patch") json.Unmarshal(rcStatusUjson, &rcStatus) - framework.ExpectEqual(rcStatus.Status.Replicas, testRcInitialReplicaCount, "ReplicationController ReplicaSet cound does not match initial Replica count") + gomega.Expect(rcStatus.Status.Replicas).To(gomega.Equal(testRcInitialReplicaCount), "ReplicationController ReplicaSet cound does not match initial Replica count") rcScalePatchPayload, err := json.Marshal(autoscalingv1.Scale{ Spec: autoscalingv1.ScaleSpec{ @@ -339,7 +339,7 @@ var _ = SIGDescribe("ReplicationController", func() { ginkgo.By("fetching ReplicationController; ensuring that it's patched") rc, err := f.ClientSet.CoreV1().ReplicationControllers(testRcNamespace).Get(ctx, testRcName, metav1.GetOptions{}) framework.ExpectNoError(err, "failed to fetch ReplicationController") - framework.ExpectEqual(rc.ObjectMeta.Labels["test-rc"], "patched", "ReplicationController is missing a label from earlier patch") + gomega.Expect(rc.ObjectMeta.Labels).To(gomega.HaveKeyWithValue("test-rc", "patched"), "ReplicationController is missing a label from earlier patch") rcStatusUpdatePayload := rc rcStatusUpdatePayload.Status.AvailableReplicas = 1 @@ -439,7 +439,7 @@ var _ = SIGDescribe("ReplicationController", func() { ginkgo.By(fmt.Sprintf("Getting scale subresource for ReplicationController %q", rcName)) scale, err := rcClient.GetScale(ctx, rcName, metav1.GetOptions{}) framework.ExpectNoError(err, "Failed to get scale subresource: %v", err) - framework.ExpectEqual(scale.Status.Replicas, initialRCReplicaCount, "Failed to get the current replica count") + gomega.Expect(scale.Status.Replicas).To(gomega.Equal(initialRCReplicaCount), "Failed to get the current replica count") ginkgo.By("Updating a scale subresource") scale.ResourceVersion = "" // indicate the scale update should be unconditional @@ -525,7 +525,7 @@ func TestReplicationControllerServeImageOrFail(ctx context.Context, f *framework } // Sanity check - framework.ExpectEqual(running, replicas, "unexpected number of running and ready pods: %+v", pods.Items) + gomega.Expect(running).To(gomega.Equal(replicas), "unexpected number of running and ready pods: %+v", pods.Items) // Verify that something is listening. framework.Logf("Trying to dial the pod") diff --git a/test/e2e/apps/replica_set.go b/test/e2e/apps/replica_set.go index e72f40a1b70..a88b165d03b 100644 --- a/test/e2e/apps/replica_set.go +++ b/test/e2e/apps/replica_set.go @@ -45,10 +45,11 @@ import ( e2epod "k8s.io/kubernetes/test/e2e/framework/pod" e2ereplicaset "k8s.io/kubernetes/test/e2e/framework/replicaset" e2eskipper "k8s.io/kubernetes/test/e2e/framework/skipper" + imageutils "k8s.io/kubernetes/test/utils/image" admissionapi "k8s.io/pod-security-admission/api" "github.com/onsi/ginkgo/v2" - imageutils "k8s.io/kubernetes/test/utils/image" + "github.com/onsi/gomega" ) const ( @@ -221,7 +222,7 @@ func testReplicaSetServeImageOrFail(ctx context.Context, f *framework.Framework, } // Sanity check - framework.ExpectEqual(running, replicas, "unexpected number of running pods: %+v", pods.Items) + gomega.Expect(running).To(gomega.Equal(replicas), "unexpected number of running pods: %+v", pods.Items) // Verify that something is listening. framework.Logf("Trying to dial the pod") @@ -423,8 +424,8 @@ func testRSScaleSubresources(ctx context.Context, f *framework.Framework) { if err != nil { framework.Failf("Failed to get scale subresource: %v", err) } - framework.ExpectEqual(scale.Spec.Replicas, int32(1)) - framework.ExpectEqual(scale.Status.Replicas, int32(1)) + gomega.Expect(scale.Spec.Replicas).To(gomega.Equal(int32(1))) + gomega.Expect(scale.Status.Replicas).To(gomega.Equal(int32(1))) ginkgo.By("updating a scale subresource") scale.ResourceVersion = "" // indicate the scale update should be unconditional @@ -433,14 +434,14 @@ func testRSScaleSubresources(ctx context.Context, f *framework.Framework) { if err != nil { framework.Failf("Failed to put scale subresource: %v", err) } - framework.ExpectEqual(scaleResult.Spec.Replicas, int32(2)) + gomega.Expect(scaleResult.Spec.Replicas).To(gomega.Equal(int32(2))) ginkgo.By("verifying the replicaset Spec.Replicas was modified") rs, err = c.AppsV1().ReplicaSets(ns).Get(ctx, rsName, metav1.GetOptions{}) if err != nil { framework.Failf("Failed to get statefulset resource: %v", err) } - framework.ExpectEqual(*(rs.Spec.Replicas), int32(2)) + gomega.Expect(*(rs.Spec.Replicas)).To(gomega.Equal(int32(2))) ginkgo.By("Patch a scale subresource") scale.ResourceVersion = "" // indicate the scale update should be unconditional @@ -457,8 +458,7 @@ func testRSScaleSubresources(ctx context.Context, f *framework.Framework) { rs, err = c.AppsV1().ReplicaSets(ns).Get(ctx, rsName, metav1.GetOptions{}) framework.ExpectNoError(err, "Failed to get replicaset resource: %v", err) - framework.ExpectEqual(*(rs.Spec.Replicas), int32(4), "replicaset should have 4 replicas") - + gomega.Expect(*(rs.Spec.Replicas)).To(gomega.Equal(int32(4)), "replicaset should have 4 replicas") } // ReplicaSet Replace and Patch tests @@ -585,7 +585,7 @@ func listRSDeleteCollection(ctx context.Context, f *framework.Framework) { ginkgo.By("Listing all ReplicaSets") rsList, err := c.AppsV1().ReplicaSets("").List(ctx, metav1.ListOptions{LabelSelector: "e2e=" + e2eValue}) framework.ExpectNoError(err, "failed to list ReplicaSets") - framework.ExpectEqual(len(rsList.Items), 1, "filtered list wasn't found") + gomega.Expect(rsList.Items).To(gomega.HaveLen(1), "filtered list wasn't found") ginkgo.By("DeleteCollection of the ReplicaSets") err = rsClient.DeleteCollection(ctx, metav1.DeleteOptions{GracePeriodSeconds: &one}, metav1.ListOptions{LabelSelector: "e2e=" + e2eValue}) @@ -594,7 +594,7 @@ func listRSDeleteCollection(ctx context.Context, f *framework.Framework) { ginkgo.By("After DeleteCollection verify that ReplicaSets have been deleted") rsList, err = c.AppsV1().ReplicaSets("").List(ctx, metav1.ListOptions{LabelSelector: "e2e=" + e2eValue}) framework.ExpectNoError(err, "failed to list ReplicaSets") - framework.ExpectEqual(len(rsList.Items), 0, "filtered list should have no replicas") + gomega.Expect(rsList.Items).To(gomega.BeEmpty(), "filtered list should have no replicas") } func testRSStatus(ctx context.Context, f *framework.Framework) { diff --git a/test/e2e/apps/statefulset.go b/test/e2e/apps/statefulset.go index d97e127f41e..79807414f36 100644 --- a/test/e2e/apps/statefulset.go +++ b/test/e2e/apps/statefulset.go @@ -204,9 +204,9 @@ var _ = SIGDescribe("StatefulSet", func() { pod := pods.Items[0] controllerRef := metav1.GetControllerOf(&pod) gomega.Expect(controllerRef).ToNot(gomega.BeNil()) - framework.ExpectEqual(controllerRef.Kind, ss.Kind) - framework.ExpectEqual(controllerRef.Name, ss.Name) - framework.ExpectEqual(controllerRef.UID, ss.UID) + gomega.Expect(controllerRef.Kind).To(gomega.Equal(ss.Kind)) + gomega.Expect(controllerRef.Name).To(gomega.Equal(ss.Name)) + gomega.Expect(controllerRef.UID).To(gomega.Equal(ss.UID)) ginkgo.By("Orphaning one of the stateful set's pods") e2epod.NewPodClient(f).Update(ctx, pod.Name, func(pod *v1.Pod) { @@ -343,15 +343,15 @@ var _ = SIGDescribe("StatefulSet", func() { e2estatefulset.WaitForRunningAndReady(ctx, c, *ss.Spec.Replicas, ss) ss = waitForStatus(ctx, c, ss) currentRevision, updateRevision := ss.Status.CurrentRevision, ss.Status.UpdateRevision - framework.ExpectEqual(currentRevision, updateRevision, fmt.Sprintf("StatefulSet %s/%s created with update revision %s not equal to current revision %s", - ss.Namespace, ss.Name, updateRevision, currentRevision)) + gomega.Expect(currentRevision).To(gomega.Equal(updateRevision), "StatefulSet %s/%s created with update revision %s not equal to current revision %s", + ss.Namespace, ss.Name, updateRevision, currentRevision) pods := e2estatefulset.GetPodList(ctx, c, ss) for i := range pods.Items { - framework.ExpectEqual(pods.Items[i].Labels[appsv1.StatefulSetRevisionLabel], currentRevision, fmt.Sprintf("Pod %s/%s revision %s is not equal to currentRevision %s", + gomega.Expect(pods.Items[i].Labels).To(gomega.HaveKeyWithValue(appsv1.StatefulSetRevisionLabel, currentRevision), "Pod %s/%s revision %s is not equal to currentRevision %s", pods.Items[i].Namespace, pods.Items[i].Name, pods.Items[i].Labels[appsv1.StatefulSetRevisionLabel], - currentRevision)) + currentRevision) } newImage := NewWebserverImage oldImage := ss.Spec.Template.Spec.Containers[0].Image @@ -370,16 +370,16 @@ var _ = SIGDescribe("StatefulSet", func() { ginkgo.By("Not applying an update when the partition is greater than the number of replicas") for i := range pods.Items { - framework.ExpectEqual(pods.Items[i].Spec.Containers[0].Image, oldImage, fmt.Sprintf("Pod %s/%s has image %s not equal to current image %s", + gomega.Expect(pods.Items[i].Spec.Containers[0].Image).To(gomega.Equal(oldImage), "Pod %s/%s has image %s not equal to current image %s", pods.Items[i].Namespace, pods.Items[i].Name, pods.Items[i].Spec.Containers[0].Image, - oldImage)) - framework.ExpectEqual(pods.Items[i].Labels[appsv1.StatefulSetRevisionLabel], currentRevision, fmt.Sprintf("Pod %s/%s has revision %s not equal to current revision %s", + oldImage) + gomega.Expect(pods.Items[i].Labels).To(gomega.HaveKeyWithValue(appsv1.StatefulSetRevisionLabel, currentRevision), "Pod %s/%s has revision %s not equal to current revision %s", pods.Items[i].Namespace, pods.Items[i].Name, pods.Items[i].Labels[appsv1.StatefulSetRevisionLabel], - currentRevision)) + currentRevision) } ginkgo.By("Performing a canary update") @@ -405,27 +405,27 @@ var _ = SIGDescribe("StatefulSet", func() { ss, pods = waitForPartitionedRollingUpdate(ctx, c, ss) for i := range pods.Items { if i < int(*ss.Spec.UpdateStrategy.RollingUpdate.Partition) { - framework.ExpectEqual(pods.Items[i].Spec.Containers[0].Image, oldImage, fmt.Sprintf("Pod %s/%s has image %s not equal to current image %s", + gomega.Expect(pods.Items[i].Spec.Containers[0].Image).To(gomega.Equal(oldImage), "Pod %s/%s has image %s not equal to current image %s", pods.Items[i].Namespace, pods.Items[i].Name, pods.Items[i].Spec.Containers[0].Image, - oldImage)) - framework.ExpectEqual(pods.Items[i].Labels[appsv1.StatefulSetRevisionLabel], currentRevision, fmt.Sprintf("Pod %s/%s has revision %s not equal to current revision %s", + oldImage) + gomega.Expect(pods.Items[i].Labels).To(gomega.HaveKeyWithValue(appsv1.StatefulSetRevisionLabel, currentRevision), "Pod %s/%s has revision %s not equal to current revision %s", pods.Items[i].Namespace, pods.Items[i].Name, pods.Items[i].Labels[appsv1.StatefulSetRevisionLabel], - currentRevision)) + currentRevision) } else { - framework.ExpectEqual(pods.Items[i].Spec.Containers[0].Image, newImage, fmt.Sprintf("Pod %s/%s has image %s not equal to new image %s", + gomega.Expect(pods.Items[i].Spec.Containers[0].Image).To(gomega.Equal(newImage), "Pod %s/%s has image %s not equal to new image %s", pods.Items[i].Namespace, pods.Items[i].Name, pods.Items[i].Spec.Containers[0].Image, - newImage)) - framework.ExpectEqual(pods.Items[i].Labels[appsv1.StatefulSetRevisionLabel], updateRevision, fmt.Sprintf("Pod %s/%s has revision %s not equal to new revision %s", + newImage) + gomega.Expect(pods.Items[i].Labels).To(gomega.HaveKeyWithValue(appsv1.StatefulSetRevisionLabel, updateRevision), "Pod %s/%s has revision %s not equal to new revision %s", pods.Items[i].Namespace, pods.Items[i].Name, pods.Items[i].Labels[appsv1.StatefulSetRevisionLabel], - updateRevision)) + updateRevision) } } @@ -437,27 +437,27 @@ var _ = SIGDescribe("StatefulSet", func() { pods = e2estatefulset.GetPodList(ctx, c, ss) for i := range pods.Items { if i < int(*ss.Spec.UpdateStrategy.RollingUpdate.Partition) { - framework.ExpectEqual(pods.Items[i].Spec.Containers[0].Image, oldImage, fmt.Sprintf("Pod %s/%s has image %s not equal to current image %s", + gomega.Expect(pods.Items[i].Spec.Containers[0].Image).To(gomega.Equal(oldImage), "Pod %s/%s has image %s not equal to current image %s", pods.Items[i].Namespace, pods.Items[i].Name, pods.Items[i].Spec.Containers[0].Image, - oldImage)) - framework.ExpectEqual(pods.Items[i].Labels[appsv1.StatefulSetRevisionLabel], currentRevision, fmt.Sprintf("Pod %s/%s has revision %s not equal to current revision %s", + oldImage) + gomega.Expect(pods.Items[i].Labels).To(gomega.HaveKeyWithValue(appsv1.StatefulSetRevisionLabel, currentRevision), "Pod %s/%s has revision %s not equal to current revision %s", pods.Items[i].Namespace, pods.Items[i].Name, pods.Items[i].Labels[appsv1.StatefulSetRevisionLabel], - currentRevision)) + currentRevision) } else { - framework.ExpectEqual(pods.Items[i].Spec.Containers[0].Image, newImage, fmt.Sprintf("Pod %s/%s has image %s not equal to new image %s", + gomega.Expect(pods.Items[i].Spec.Containers[0].Image).To(gomega.Equal(newImage), "Pod %s/%s has image %s not equal to new image %s", pods.Items[i].Namespace, pods.Items[i].Name, pods.Items[i].Spec.Containers[0].Image, - newImage)) - framework.ExpectEqual(pods.Items[i].Labels[appsv1.StatefulSetRevisionLabel], updateRevision, fmt.Sprintf("Pod %s/%s has revision %s not equal to new revision %s", + newImage) + gomega.Expect(pods.Items[i].Labels).To(gomega.HaveKeyWithValue(appsv1.StatefulSetRevisionLabel, updateRevision), "Pod %s/%s has revision %s not equal to new revision %s", pods.Items[i].Namespace, pods.Items[i].Name, pods.Items[i].Labels[appsv1.StatefulSetRevisionLabel], - updateRevision)) + updateRevision) } } @@ -478,35 +478,35 @@ var _ = SIGDescribe("StatefulSet", func() { ss, pods = waitForPartitionedRollingUpdate(ctx, c, ss) for i := range pods.Items { if i < int(*ss.Spec.UpdateStrategy.RollingUpdate.Partition) { - framework.ExpectEqual(pods.Items[i].Spec.Containers[0].Image, oldImage, fmt.Sprintf("Pod %s/%s has image %s not equal to current image %s", + gomega.Expect(pods.Items[i].Spec.Containers[0].Image).To(gomega.Equal(oldImage), "Pod %s/%s has image %s not equal to current image %s", pods.Items[i].Namespace, pods.Items[i].Name, pods.Items[i].Spec.Containers[0].Image, - oldImage)) - framework.ExpectEqual(pods.Items[i].Labels[appsv1.StatefulSetRevisionLabel], currentRevision, fmt.Sprintf("Pod %s/%s has revision %s not equal to current revision %s", + oldImage) + gomega.Expect(pods.Items[i].Labels).To(gomega.HaveKeyWithValue(appsv1.StatefulSetRevisionLabel, currentRevision), "Pod %s/%s has revision %s not equal to current revision %s", pods.Items[i].Namespace, pods.Items[i].Name, pods.Items[i].Labels[appsv1.StatefulSetRevisionLabel], - currentRevision)) + currentRevision) } else { - framework.ExpectEqual(pods.Items[i].Spec.Containers[0].Image, newImage, fmt.Sprintf("Pod %s/%s has image %s not equal to new image %s", + gomega.Expect(pods.Items[i].Spec.Containers[0].Image).To(gomega.Equal(newImage), "Pod %s/%s has image %s not equal to new image %s", pods.Items[i].Namespace, pods.Items[i].Name, pods.Items[i].Spec.Containers[0].Image, - newImage)) - framework.ExpectEqual(pods.Items[i].Labels[appsv1.StatefulSetRevisionLabel], updateRevision, fmt.Sprintf("Pod %s/%s has revision %s not equal to new revision %s", + newImage) + gomega.Expect(pods.Items[i].Labels).To(gomega.HaveKeyWithValue(appsv1.StatefulSetRevisionLabel, updateRevision), "Pod %s/%s has revision %s not equal to new revision %s", pods.Items[i].Namespace, pods.Items[i].Name, pods.Items[i].Labels[appsv1.StatefulSetRevisionLabel], - updateRevision)) + updateRevision) } } } - framework.ExpectEqual(ss.Status.CurrentRevision, updateRevision, fmt.Sprintf("StatefulSet %s/%s current revision %s does not equal update revision %s on update completion", + gomega.Expect(ss.Status.CurrentRevision).To(gomega.Equal(updateRevision), "StatefulSet %s/%s current revision %s does not equal update revision %s on update completion", ss.Namespace, ss.Name, ss.Status.CurrentRevision, - updateRevision)) + updateRevision) }) @@ -524,15 +524,15 @@ var _ = SIGDescribe("StatefulSet", func() { e2estatefulset.WaitForRunningAndReady(ctx, c, *ss.Spec.Replicas, ss) ss = waitForStatus(ctx, c, ss) currentRevision, updateRevision := ss.Status.CurrentRevision, ss.Status.UpdateRevision - framework.ExpectEqual(currentRevision, updateRevision, fmt.Sprintf("StatefulSet %s/%s created with update revision %s not equal to current revision %s", - ss.Namespace, ss.Name, updateRevision, currentRevision)) + gomega.Expect(currentRevision).To(gomega.Equal(updateRevision), "StatefulSet %s/%s created with update revision %s not equal to current revision %s", + ss.Namespace, ss.Name, updateRevision, currentRevision) pods := e2estatefulset.GetPodList(ctx, c, ss) for i := range pods.Items { - framework.ExpectEqual(pods.Items[i].Labels[appsv1.StatefulSetRevisionLabel], currentRevision, fmt.Sprintf("Pod %s/%s revision %s is not equal to current revision %s", + gomega.Expect(pods.Items[i].Labels).To(gomega.HaveKeyWithValue(appsv1.StatefulSetRevisionLabel, currentRevision), "Pod %s/%s revision %s is not equal to current revision %s", pods.Items[i].Namespace, pods.Items[i].Name, pods.Items[i].Labels[appsv1.StatefulSetRevisionLabel], - currentRevision)) + currentRevision) } ginkgo.By("Restoring Pods to the current revision") @@ -543,11 +543,11 @@ var _ = SIGDescribe("StatefulSet", func() { ss = getStatefulSet(ctx, c, ss.Namespace, ss.Name) pods = e2estatefulset.GetPodList(ctx, c, ss) for i := range pods.Items { - framework.ExpectEqual(pods.Items[i].Labels[appsv1.StatefulSetRevisionLabel], currentRevision, fmt.Sprintf("Pod %s/%s revision %s is not equal to current revision %s", + gomega.Expect(pods.Items[i].Labels).To(gomega.HaveKeyWithValue(appsv1.StatefulSetRevisionLabel, currentRevision), "Pod %s/%s revision %s is not equal to current revision %s", pods.Items[i].Namespace, pods.Items[i].Name, pods.Items[i].Labels[appsv1.StatefulSetRevisionLabel], - currentRevision)) + currentRevision) } newImage := NewWebserverImage oldImage := ss.Spec.Template.Spec.Containers[0].Image @@ -572,16 +572,16 @@ var _ = SIGDescribe("StatefulSet", func() { ss = getStatefulSet(ctx, c, ss.Namespace, ss.Name) pods = e2estatefulset.GetPodList(ctx, c, ss) for i := range pods.Items { - framework.ExpectEqual(pods.Items[i].Spec.Containers[0].Image, newImage, fmt.Sprintf("Pod %s/%s has image %s not equal to new image %s", + gomega.Expect(pods.Items[i].Spec.Containers[0].Image).To(gomega.Equal(newImage), "Pod %s/%s has image %s not equal to new image %s", pods.Items[i].Namespace, pods.Items[i].Name, pods.Items[i].Spec.Containers[0].Image, - newImage)) - framework.ExpectEqual(pods.Items[i].Labels[appsv1.StatefulSetRevisionLabel], updateRevision, fmt.Sprintf("Pod %s/%s has revision %s not equal to current revision %s", + newImage) + gomega.Expect(pods.Items[i].Labels).To(gomega.HaveKeyWithValue(appsv1.StatefulSetRevisionLabel, updateRevision), "Pod %s/%s has revision %s not equal to current revision %s", pods.Items[i].Namespace, pods.Items[i].Name, pods.Items[i].Labels[appsv1.StatefulSetRevisionLabel], - updateRevision)) + updateRevision) } }) @@ -865,8 +865,8 @@ var _ = SIGDescribe("StatefulSet", func() { if err != nil { framework.Failf("Failed to get scale subresource: %v", err) } - framework.ExpectEqual(scale.Spec.Replicas, int32(1)) - framework.ExpectEqual(scale.Status.Replicas, int32(1)) + gomega.Expect(scale.Spec.Replicas).To(gomega.Equal(int32(1))) + gomega.Expect(scale.Status.Replicas).To(gomega.Equal(int32(1))) ginkgo.By("updating a scale subresource") scale.ResourceVersion = "" // indicate the scale update should be unconditional @@ -875,14 +875,14 @@ var _ = SIGDescribe("StatefulSet", func() { if err != nil { framework.Failf("Failed to put scale subresource: %v", err) } - framework.ExpectEqual(scaleResult.Spec.Replicas, int32(2)) + gomega.Expect(scaleResult.Spec.Replicas).To(gomega.Equal(int32(2))) ginkgo.By("verifying the statefulset Spec.Replicas was modified") ss, err = c.AppsV1().StatefulSets(ns).Get(ctx, ssName, metav1.GetOptions{}) if err != nil { framework.Failf("Failed to get statefulset resource: %v", err) } - framework.ExpectEqual(*(ss.Spec.Replicas), int32(2)) + gomega.Expect(*(ss.Spec.Replicas)).To(gomega.Equal(int32(2))) ginkgo.By("Patch a scale subresource") scale.ResourceVersion = "" // indicate the scale update should be unconditional @@ -900,7 +900,7 @@ var _ = SIGDescribe("StatefulSet", func() { ginkgo.By("verifying the statefulset Spec.Replicas was modified") ss, err = c.AppsV1().StatefulSets(ns).Get(ctx, ssName, metav1.GetOptions{}) framework.ExpectNoError(err, "Failed to get statefulset resource: %v", err) - framework.ExpectEqual(*(ss.Spec.Replicas), int32(4), "statefulset should have 4 replicas") + gomega.Expect(*(ss.Spec.Replicas)).To(gomega.Equal(int32(4)), "statefulset should have 4 replicas") }) /* @@ -953,15 +953,15 @@ var _ = SIGDescribe("StatefulSet", func() { framework.ExpectNoError(err, "failed to patch Set") ss, err = c.AppsV1().StatefulSets(ns).Get(ctx, ssName, metav1.GetOptions{}) framework.ExpectNoError(err, "Failed to get statefulset resource: %v", err) - framework.ExpectEqual(*(ss.Spec.Replicas), ssPatchReplicas, "statefulset should have 2 replicas") - framework.ExpectEqual(ss.Spec.Template.Spec.Containers[0].Image, ssPatchImage, "statefulset not using ssPatchImage. Is using %v", ss.Spec.Template.Spec.Containers[0].Image) + gomega.Expect(*(ss.Spec.Replicas)).To(gomega.Equal(ssPatchReplicas), "statefulset should have 2 replicas") + gomega.Expect(ss.Spec.Template.Spec.Containers[0].Image).To(gomega.Equal(ssPatchImage), "statefulset not using ssPatchImage. Is using %v", ss.Spec.Template.Spec.Containers[0].Image) e2estatefulset.WaitForRunningAndReady(ctx, c, *ss.Spec.Replicas, ss) waitForStatus(ctx, c, ss) ginkgo.By("Listing all StatefulSets") ssList, err := c.AppsV1().StatefulSets("").List(ctx, metav1.ListOptions{LabelSelector: "test-ss=patched"}) framework.ExpectNoError(err, "failed to list StatefulSets") - framework.ExpectEqual(len(ssList.Items), 1, "filtered list wasn't found") + gomega.Expect(ssList.Items).To(gomega.HaveLen(1), "filtered list wasn't found") ginkgo.By("Delete all of the StatefulSets") err = c.AppsV1().StatefulSets(ns).DeleteCollection(ctx, metav1.DeleteOptions{GracePeriodSeconds: &one}, metav1.ListOptions{LabelSelector: "test-ss=patched"}) @@ -970,7 +970,7 @@ var _ = SIGDescribe("StatefulSet", func() { ginkgo.By("Verify that StatefulSets have been deleted") ssList, err = c.AppsV1().StatefulSets("").List(ctx, metav1.ListOptions{LabelSelector: "test-ss=patched"}) framework.ExpectNoError(err, "failed to list StatefulSets") - framework.ExpectEqual(len(ssList.Items), 0, "filtered list should have no Statefulsets") + gomega.Expect(ssList.Items).To(gomega.BeEmpty(), "filtered list should have no Statefulsets") }) /* @@ -1401,7 +1401,7 @@ var _ = SIGDescribe("StatefulSet", func() { framework.ExpectNoError(err) nodeName := pod.Spec.NodeName - framework.ExpectEqual(nodeName, readyNode.Name) + gomega.Expect(nodeName).To(gomega.Equal(readyNode.Name)) node, err := c.CoreV1().Nodes().Get(ctx, nodeName, metav1.GetOptions{}) framework.ExpectNoError(err) @@ -1441,7 +1441,7 @@ var _ = SIGDescribe("StatefulSet", func() { pvcList, err := c.CoreV1().PersistentVolumeClaims(ns).List(ctx, metav1.ListOptions{LabelSelector: klabels.Everything().String()}) framework.ExpectNoError(err) - framework.ExpectEqual(len(pvcList.Items), 1) + gomega.Expect(pvcList.Items).To(gomega.HaveLen(1)) pvcName := pvcList.Items[0].Name ginkgo.By("Deleting PVC") @@ -1459,7 +1459,7 @@ var _ = SIGDescribe("StatefulSet", func() { e2estatefulset.WaitForStatusReadyReplicas(ctx, c, ss, 1) pod, err = c.CoreV1().Pods(ns).Get(ctx, podName, metav1.GetOptions{}) framework.ExpectNoError(err) - framework.ExpectEqual(pod.Spec.NodeName, readyNode.Name) // confirm the pod was scheduled back to the original node + gomega.Expect(pod.Spec.NodeName).To(gomega.Equal(readyNode.Name)) // confirm the pod was scheduled back to the original node }) }) @@ -1851,15 +1851,15 @@ func rollbackTest(ctx context.Context, c clientset.Interface, ns string, ss *app e2estatefulset.WaitForRunningAndReady(ctx, c, *ss.Spec.Replicas, ss) ss = waitForStatus(ctx, c, ss) currentRevision, updateRevision := ss.Status.CurrentRevision, ss.Status.UpdateRevision - framework.ExpectEqual(currentRevision, updateRevision, fmt.Sprintf("StatefulSet %s/%s created with update revision %s not equal to current revision %s", - ss.Namespace, ss.Name, updateRevision, currentRevision)) + gomega.Expect(currentRevision).To(gomega.Equal(updateRevision), "StatefulSet %s/%s created with update revision %s not equal to current revision %s", + ss.Namespace, ss.Name, updateRevision, currentRevision) pods := e2estatefulset.GetPodList(ctx, c, ss) for i := range pods.Items { - framework.ExpectEqual(pods.Items[i].Labels[appsv1.StatefulSetRevisionLabel], currentRevision, fmt.Sprintf("Pod %s/%s revision %s is not equal to current revision %s", + gomega.Expect(pods.Items[i].Labels).To(gomega.HaveKeyWithValue(appsv1.StatefulSetRevisionLabel, currentRevision), "Pod %s/%s revision %s is not equal to current revision %s", pods.Items[i].Namespace, pods.Items[i].Name, pods.Items[i].Labels[appsv1.StatefulSetRevisionLabel], - currentRevision)) + currentRevision) } e2estatefulset.SortStatefulPods(pods) err = breakPodHTTPProbe(ss, &pods.Items[1]) @@ -1887,22 +1887,22 @@ func rollbackTest(ctx context.Context, c clientset.Interface, ns string, ss *app framework.ExpectNoError(err) ss, _ = e2estatefulset.WaitForPodReady(ctx, c, ss, pods.Items[1].Name) ss, pods = waitForRollingUpdate(ctx, c, ss) - framework.ExpectEqual(ss.Status.CurrentRevision, updateRevision, fmt.Sprintf("StatefulSet %s/%s current revision %s does not equal update revision %s on update completion", + gomega.Expect(ss.Status.CurrentRevision).To(gomega.Equal(updateRevision), "StatefulSet %s/%s current revision %s does not equal update revision %s on update completion", ss.Namespace, ss.Name, ss.Status.CurrentRevision, - updateRevision)) + updateRevision) for i := range pods.Items { - framework.ExpectEqual(pods.Items[i].Spec.Containers[0].Image, newImage, fmt.Sprintf(" Pod %s/%s has image %s not have new image %s", + gomega.Expect(pods.Items[i].Spec.Containers[0].Image).To(gomega.Equal(newImage), "Pod %s/%s has image %s not have new image %s", pods.Items[i].Namespace, pods.Items[i].Name, pods.Items[i].Spec.Containers[0].Image, - newImage)) - framework.ExpectEqual(pods.Items[i].Labels[appsv1.StatefulSetRevisionLabel], updateRevision, fmt.Sprintf("Pod %s/%s revision %s is not equal to update revision %s", + newImage) + gomega.Expect(pods.Items[i].Labels).To(gomega.HaveKeyWithValue(appsv1.StatefulSetRevisionLabel, updateRevision), "Pod %s/%s revision %s is not equal to update revision %s", pods.Items[i].Namespace, pods.Items[i].Name, pods.Items[i].Labels[appsv1.StatefulSetRevisionLabel], - updateRevision)) + updateRevision) } ginkgo.By("Rolling back to a previous revision") @@ -1916,7 +1916,7 @@ func rollbackTest(ctx context.Context, c clientset.Interface, ns string, ss *app framework.ExpectNoError(err) ss = waitForStatus(ctx, c, ss) currentRevision, updateRevision = ss.Status.CurrentRevision, ss.Status.UpdateRevision - framework.ExpectEqual(priorRevision, updateRevision, "Prior revision should equal update revision during roll back") + gomega.Expect(priorRevision).To(gomega.Equal(updateRevision), "Prior revision should equal update revision during roll back") gomega.Expect(currentRevision).NotTo(gomega.Equal(updateRevision), "Current revision should not equal update revision during roll back") ginkgo.By("Rolling back update in reverse ordinal order") @@ -1925,23 +1925,23 @@ func rollbackTest(ctx context.Context, c clientset.Interface, ns string, ss *app restorePodHTTPProbe(ss, &pods.Items[1]) ss, _ = e2estatefulset.WaitForPodReady(ctx, c, ss, pods.Items[1].Name) ss, pods = waitForRollingUpdate(ctx, c, ss) - framework.ExpectEqual(ss.Status.CurrentRevision, priorRevision, fmt.Sprintf("StatefulSet %s/%s current revision %s does not equal prior revision %s on rollback completion", + gomega.Expect(ss.Status.CurrentRevision).To(gomega.Equal(priorRevision), "StatefulSet %s/%s current revision %s does not equal prior revision %s on rollback completion", ss.Namespace, ss.Name, ss.Status.CurrentRevision, - updateRevision)) + updateRevision) for i := range pods.Items { - framework.ExpectEqual(pods.Items[i].Spec.Containers[0].Image, oldImage, fmt.Sprintf("Pod %s/%s has image %s not equal to previous image %s", + gomega.Expect(pods.Items[i].Spec.Containers[0].Image).To(gomega.Equal(oldImage), "Pod %s/%s has image %s not equal to previous image %s", pods.Items[i].Namespace, pods.Items[i].Name, pods.Items[i].Spec.Containers[0].Image, - oldImage)) - framework.ExpectEqual(pods.Items[i].Labels[appsv1.StatefulSetRevisionLabel], priorRevision, fmt.Sprintf("Pod %s/%s revision %s is not equal to prior revision %s", + oldImage) + gomega.Expect(pods.Items[i].Labels).To(gomega.HaveKeyWithValue(appsv1.StatefulSetRevisionLabel, priorRevision), "Pod %s/%s revision %s is not equal to prior revision %s", pods.Items[i].Namespace, pods.Items[i].Name, pods.Items[i].Labels[appsv1.StatefulSetRevisionLabel], - priorRevision)) + priorRevision) } }