Skip to content

Commit

Permalink
e2e for work suspension resume
Browse files Browse the repository at this point in the history
Signed-off-by: Amir Alavi <[email protected]>
  • Loading branch information
a7i committed Aug 13, 2024
1 parent 034b5d4 commit e932996
Showing 1 changed file with 69 additions and 15 deletions.
84 changes: 69 additions & 15 deletions test/e2e/propagationpolicy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1145,28 +1145,26 @@ var _ = ginkgo.Describe("[Suspend] PropagationPolicy testing", func() {
ClusterNames: []string{targetMember},
},
})
policy.Spec.Suspension = &policyv1alpha1.Suspension{
Dispatching: ptr.To(true),
}
})

ginkgo.BeforeEach(func() {
framework.CreatePropagationPolicy(karmadaClient, policy)
framework.CreateDeployment(kubeClient, deployment)
ginkgo.DeferCleanup(func() {
framework.RemoveDeployment(kubeClient, deployment.Namespace, deployment.Name)
})
})

ginkgo.Context("suspend the PropagationPolicy dispatching", func() {
ginkgo.BeforeEach(func() {
policy.Spec.Suspension = &policyv1alpha1.Suspension{
Dispatching: ptr.To(true),
}

framework.CreatePropagationPolicy(karmadaClient, policy)
ginkgo.AfterEach(func() {
framework.RemoveDeployment(kubeClient, deployment.Namespace, deployment.Name)
})

ginkgo.It("suspends ResourceBinding", func() {
framework.WaitResourceBindingFitWith(karmadaClient, deployment.Namespace, names.GenerateBindingName(deployment.Kind, deployment.Name), func(binding *workv1alpha2.ResourceBinding) bool {
return binding.Spec.Suspension != nil && ptr.Deref(binding.Spec.Suspension.Dispatching, false)
})
framework.WaitResourceBindingFitWith(karmadaClient, deployment.Namespace, names.GenerateBindingName(deployment.Kind, deployment.Name),
func(binding *workv1alpha2.ResourceBinding) bool {
return binding.Spec.Suspension != nil && ptr.Deref(binding.Spec.Suspension.Dispatching, false)
})
})

ginkgo.It("suspends Work", func() {
Expand Down Expand Up @@ -1196,9 +1194,65 @@ var _ = ginkgo.Describe("[Suspend] PropagationPolicy testing", func() {
ginkgo.It("adds dispatching event with suspend message", func() {
workName := names.GenerateWorkName(deployment.Kind, deployment.Name, deployment.Namespace)
esName := names.GenerateExecutionSpaceName(targetMember)
framework.WaitEventFitWith(kubeClient, esName, workName, func(event corev1.Event) bool {
return event.Reason == events.EventReasonWorkDispatching &&
event.Message == execution.WorkSuspendDispatchingConditionMessage
framework.WaitEventFitWith(kubeClient, esName, workName,
func(event corev1.Event) bool {
return event.Reason == events.EventReasonWorkDispatching &&
event.Message == execution.WorkSuspendDispatchingConditionMessage
})
})
})

ginkgo.Context("delete resource in the control plane", func() {
ginkgo.JustBeforeEach(func() {
framework.RemoveDeployment(kubeClient, deployment.Namespace, deployment.Name)
})

ginkgo.It("suspends deleting deployment in member cluster", func() {
framework.WaitDeploymentPresentOnClusterFitWith(targetMember, deployment.Namespace, deployment.Name,
func(*appsv1.Deployment) bool {
return true
})
})

ginkgo.When("propagation is resumed", func() {
ginkgo.JustBeforeEach(func() {
policy.Spec.Suspension = &policyv1alpha1.Suspension{}
framework.UpdatePropagationPolicyWithSpec(karmadaClient, policy.Namespace, policy.Name, policy.Spec)
})

ginkgo.It("deletes deployment in member cluster", func() {
framework.WaitDeploymentDisappearOnCluster(targetMember, deployment.Namespace, deployment.Name)
})
})
})

ginkgo.Context("update resource in the control plane", func() {
ginkgo.JustBeforeEach(func() {
framework.UpdateDeploymentReplicas(kubeClient, deployment, updateDeploymentReplicas)
})

ginkgo.AfterEach(func() {
framework.RemoveDeployment(kubeClient, deployment.Namespace, deployment.Name)
})

ginkgo.It("suspends updating deployment replicas in member cluster", func() {
framework.WaitDeploymentPresentOnClusterFitWith(targetMember, deployment.Namespace, deployment.Name,
func(d *appsv1.Deployment) bool {
return *d.Spec.Replicas != updateDeploymentReplicas
})
})

ginkgo.When("propagation is resumed", func() {
ginkgo.JustBeforeEach(func() {
policy.Spec.Suspension = &policyv1alpha1.Suspension{}
framework.UpdatePropagationPolicyWithSpec(karmadaClient, policy.Namespace, policy.Name, policy.Spec)
})

ginkgo.It("updates deployment replicas in member cluster", func() {
framework.WaitDeploymentPresentOnClusterFitWith(targetMember, deployment.Namespace, deployment.Name,
func(d *appsv1.Deployment) bool {
return *d.Spec.Replicas == updateDeploymentReplicas
})
})
})
})
Expand Down

0 comments on commit e932996

Please sign in to comment.