Skip to content

Commit

Permalink
Merge pull request #4354 from jwcesign/cleanup-mcs-e2e
Browse files Browse the repository at this point in the history
cleanup: cleanup e2e of mcs
  • Loading branch information
karmada-bot authored Dec 2, 2023
2 parents ed07dad + 35d7ddd commit 24d5573
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 101 deletions.
91 changes: 15 additions & 76 deletions test/e2e/mcs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -539,25 +539,17 @@ var _ = ginkgo.Describe("CrossCluster MultiClusterService testing", func() {
}
framework.CreateMultiClusterService(karmadaClient, mcs)
framework.CreatePropagationPolicy(karmadaClient, policy)

curlPod := helper.NewCurlPod(testNamespace, deploymentName)
framework.CreatePod(member2Client, curlPod)
})

ginkgo.AfterEach(func() {
framework.RemoveMultiClusterService(karmadaClient, testNamespace, mcsName)
framework.RemovePropagationPolicy(karmadaClient, testNamespace, policyName)
framework.RemovePod(member2Client, testNamespace, deploymentName)

framework.WaitServiceDisappearOnCluster(member1Name, testNamespace, serviceName)
framework.WaitServiceDisappearOnCluster(member2Name, testNamespace, serviceName)
})

ginkgo.It("Test request the service", func() {
framework.WaitPodPresentOnClusterFitWith(member2Name, testNamespace, deploymentName, func(pod *corev1.Pod) bool {
return pod.Status.Phase == corev1.PodRunning
})

ginkgo.It("Test dispatch EndpointSlice from the provision clusters to the consumption clusters", func() {
framework.WaitDeploymentPresentOnClustersFitWith([]string{member1Name}, testNamespace, deploymentName, func(deployment *appsv1.Deployment) bool {
return deployment.Status.ReadyReplicas == *deployment.Spec.Replicas
})
Expand All @@ -583,25 +575,17 @@ var _ = ginkgo.Describe("CrossCluster MultiClusterService testing", func() {
}
framework.CreateMultiClusterService(karmadaClient, mcs)
framework.CreatePropagationPolicy(karmadaClient, policy)

curlPod := helper.NewCurlPod(testNamespace, deploymentName)
framework.CreatePod(member2Client, curlPod)
})

ginkgo.AfterEach(func() {
framework.RemoveMultiClusterService(karmadaClient, testNamespace, mcsName)
framework.RemovePropagationPolicy(karmadaClient, testNamespace, policyName)
framework.RemovePod(member2Client, testNamespace, deploymentName)

framework.WaitServiceDisappearOnCluster(member1Name, testNamespace, serviceName)
framework.WaitServiceDisappearOnCluster(member2Name, testNamespace, serviceName)
})

ginkgo.It("Test request the service", func() {
framework.WaitPodPresentOnClustersFitWith([]string{member2Name}, testNamespace, deploymentName, func(pod *corev1.Pod) bool {
return pod.Status.Phase == corev1.PodRunning
})

ginkgo.It("Test dispatch EndpointSlice from the provision clusters to the consumption clusters", func() {
framework.WaitDeploymentPresentOnClustersFitWith([]string{member1Name, member2Name}, testNamespace, deploymentName, func(deployment *appsv1.Deployment) bool {
return deployment.Status.ReadyReplicas == *deployment.Spec.Replicas
})
Expand Down Expand Up @@ -629,25 +613,17 @@ var _ = ginkgo.Describe("CrossCluster MultiClusterService testing", func() {
}
framework.CreateMultiClusterService(karmadaClient, mcs)
framework.CreatePropagationPolicy(karmadaClient, policy)

curlPod := helper.NewCurlPod(testNamespace, deploymentName)
framework.CreatePod(member2Client, curlPod)
})

ginkgo.AfterEach(func() {
framework.RemoveMultiClusterService(karmadaClient, testNamespace, mcsName)
framework.RemovePropagationPolicy(karmadaClient, testNamespace, policyName)
framework.RemovePod(member2Client, testNamespace, deploymentName)

framework.WaitServiceDisappearOnCluster(member1Name, testNamespace, serviceName)
framework.WaitServiceDisappearOnCluster(member2Name, testNamespace, serviceName)
})

ginkgo.It("Test request the service", func() {
framework.WaitPodPresentOnClustersFitWith([]string{member2Name}, testNamespace, deploymentName, func(pod *corev1.Pod) bool {
return pod.Status.Phase == corev1.PodRunning
})

ginkgo.It("Test dispatch EndpointSlice from the provision clusters to the consumption clusters", func() {
framework.WaitDeploymentPresentOnClustersFitWith([]string{member1Name, member2Name}, testNamespace, deploymentName, func(deployment *appsv1.Deployment) bool {
return deployment.Status.ReadyReplicas == *deployment.Spec.Replicas
})
Expand All @@ -660,14 +636,13 @@ var _ = ginkgo.Describe("CrossCluster MultiClusterService testing", func() {
return checkEndpointSliceWithMultiClusterService(testNamespace, mcsName, mcs.Spec.ServiceProvisionClusters, mcs.Spec.ServiceConsumptionClusters)
}, pollTimeout, pollInterval).Should(gomega.BeTrue())

svcName := fmt.Sprintf("http://%s.%s", serviceName, testNamespace)
cmd := framework.NewKarmadactlCommand(kubeconfig, karmadaContext, karmadactlPath, testNamespace, karmadactlTimeout, "exec", deploymentName, "-C", member2Name, "--", "curl", svcName)
_, err := cmd.ExecOrDie()
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())

mcs.Spec.ServiceProvisionClusters = []string{member2Name}
mcs.Spec.ServiceConsumptionClusters = []string{member1Name}
framework.UpdateMultiClusterService(karmadaClient, mcs)

framework.WaitMultiClusterServicePresentOnClustersFitWith(karmadaClient, testNamespace, mcsName, func(mcs *networkingv1alpha1.MultiClusterService) bool {
return meta.IsStatusConditionTrue(mcs.Status.Conditions, networkingv1alpha1.EndpointSliceDispatched)
})
})
})

Expand All @@ -682,24 +657,16 @@ var _ = ginkgo.Describe("CrossCluster MultiClusterService testing", func() {
}
framework.CreateMultiClusterService(karmadaClient, mcs)
framework.CreatePropagationPolicy(karmadaClient, policy)

curlPod := helper.NewCurlPod(testNamespace, deploymentName)
framework.CreatePod(member2Client, curlPod)
})

ginkgo.AfterEach(func() {
framework.RemoveMultiClusterService(karmadaClient, testNamespace, mcsName)
framework.RemovePropagationPolicy(karmadaClient, testNamespace, policyName)
framework.RemovePod(member2Client, testNamespace, deploymentName)

framework.WaitServiceDisappearOnCluster(member2Name, testNamespace, serviceName)
})

ginkgo.It("Test request the service", func() {
framework.WaitPodPresentOnClustersFitWith([]string{member2Name}, testNamespace, deploymentName, func(pod *corev1.Pod) bool {
return pod.Status.Phase == corev1.PodRunning
})

ginkgo.It("Test dispatch EndpointSlice from the provision clusters to the consumption clusters", func() {
framework.WaitDeploymentPresentOnClustersFitWith([]string{member1Name}, testNamespace, deploymentName, func(deployment *appsv1.Deployment) bool {
return deployment.Status.ReadyReplicas == *deployment.Spec.Replicas
})
Expand All @@ -725,24 +692,17 @@ var _ = ginkgo.Describe("CrossCluster MultiClusterService testing", func() {
}
framework.CreateMultiClusterService(karmadaClient, mcs)
framework.CreatePropagationPolicy(karmadaClient, policy)

createCurlPod([]string{member1Name, member2Name}, testNamespace, deploymentName)
})

ginkgo.AfterEach(func() {
framework.RemoveMultiClusterService(karmadaClient, testNamespace, mcsName)
framework.RemovePropagationPolicy(karmadaClient, testNamespace, policyName)
deleteCurlPod([]string{member1Name, member2Name}, testNamespace, deploymentName)

framework.WaitServiceDisappearOnCluster(member1Name, testNamespace, serviceName)
framework.WaitServiceDisappearOnCluster(member2Name, testNamespace, serviceName)
})

ginkgo.It("Test request the service", func() {
framework.WaitPodPresentOnClustersFitWith([]string{member1Name, member2Name}, testNamespace, deploymentName, func(pod *corev1.Pod) bool {
return pod.Status.Phase == corev1.PodRunning
})

ginkgo.It("Test dispatch EndpointSlice from the provision clusters to the consumption clusters", func() {
framework.WaitDeploymentPresentOnClustersFitWith([]string{member1Name}, testNamespace, deploymentName, func(deployment *appsv1.Deployment) bool {
return deployment.Status.ReadyReplicas == *deployment.Spec.Replicas
})
Expand All @@ -768,24 +728,17 @@ var _ = ginkgo.Describe("CrossCluster MultiClusterService testing", func() {
}
framework.CreateMultiClusterService(karmadaClient, mcs)
framework.CreatePropagationPolicy(karmadaClient, policy)

createCurlPod([]string{member1Name, member2Name}, testNamespace, deploymentName)
})

ginkgo.AfterEach(func() {
framework.RemoveMultiClusterService(karmadaClient, testNamespace, mcsName)
framework.RemovePropagationPolicy(karmadaClient, testNamespace, policyName)
deleteCurlPod([]string{member1Name, member2Name}, testNamespace, deploymentName)

framework.WaitServiceDisappearOnCluster(member1Name, testNamespace, serviceName)
framework.WaitServiceDisappearOnCluster(member2Name, testNamespace, serviceName)
})

ginkgo.It("Test request the service", func() {
framework.WaitPodPresentOnClustersFitWith([]string{member1Name, member2Name}, testNamespace, deploymentName, func(pod *corev1.Pod) bool {
return pod.Status.Phase == corev1.PodRunning
})

ginkgo.It("Test dispatch EndpointSlice from the provision clusters to the consumption clusters", func() {
framework.WaitDeploymentPresentOnClustersFitWith([]string{member1Name}, testNamespace, deploymentName, func(deployment *appsv1.Deployment) bool {
return deployment.Status.ReadyReplicas == *deployment.Spec.Replicas
})
Expand Down Expand Up @@ -841,36 +794,22 @@ func checkEndpointSliceSynced(provisionEPSList, consumptionEPSList *discoveryv1.
return true
}

synced := false
for _, item := range provisionEPSList.Items {
if item.GetLabels()[discoveryv1.LabelManagedBy] == util.EndpointSliceDispatchControllerLabelValue {
continue
}
synced := false
for _, consumptionItem := range consumptionEPSList.Items {
if consumptionItem.Name == provisonCluster+"-"+item.Name && len(consumptionItem.Endpoints) == len(item.Endpoints) {
synced = true
break
}
synced = false
}
if !synced {
return false
}
}

return synced
}

func createCurlPod(clusters []string, podNamespace, podName string) {
for _, clusterName := range clusters {
client := framework.GetClusterClient(clusterName)
gomega.Expect(client).ShouldNot(gomega.BeNil())
curlPod := helper.NewCurlPod(podNamespace, podName)
framework.CreatePod(client, curlPod)
}
}

func deleteCurlPod(clusters []string, podNamespace, podName string) {
for _, clusterName := range clusters {
client := framework.GetClusterClient(clusterName)
gomega.Expect(client).ShouldNot(gomega.BeNil())
framework.RemovePod(client, podNamespace, podName)
}
return true
}
25 changes: 0 additions & 25 deletions test/helper/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -381,31 +381,6 @@ func NewPod(namespace string, name string) *corev1.Pod {
}
}

func NewCurlPod(namespace string, name string) *corev1.Pod {
return &corev1.Pod{
TypeMeta: metav1.TypeMeta{
APIVersion: "v1",
Kind: "Pod",
},
ObjectMeta: metav1.ObjectMeta{
Namespace: namespace,
Name: name,
},
Spec: corev1.PodSpec{
Containers: []corev1.Container{
{
Name: "mycurlpod",
Image: "curlimages/curl",
Command: []string{
"sleep",
"3600",
},
},
},
},
}
}

// NewCustomResourceDefinition will build a CRD object.
func NewCustomResourceDefinition(group string, specNames apiextensionsv1.CustomResourceDefinitionNames, scope apiextensionsv1.ResourceScope) *apiextensionsv1.CustomResourceDefinition {
return &apiextensionsv1.CustomResourceDefinition{
Expand Down

0 comments on commit 24d5573

Please sign in to comment.