@@ -321,3 +321,112 @@ var _ = ginkgo.Describe("[cluster joined] reschedule testing", func() {
321321 })
322322 })
323323})
324+
325+ // reschedule testing while policy matches, triggered by label changes.
326+ var _ = ginkgo .Describe ("[cluster labels changed] reschedule testing while policy matches" , func () {
327+ var deployment * appsv1.Deployment
328+ var targetMember string
329+ var labelKey string
330+ var policyNamespace string
331+ var policyName string
332+
333+ ginkgo .BeforeEach (func () {
334+ targetMember = framework .ClusterNames ()[0 ]
335+ policyNamespace = testNamespace
336+ policyName = deploymentNamePrefix + rand .String (RandomStrLength )
337+ labelKey = "cluster" + rand .String (RandomStrLength )
338+
339+ deployment = testhelper .NewDeployment (testNamespace , policyName )
340+ framework .CreateDeployment (kubeClient , deployment )
341+
342+ labels := map [string ]string {labelKey : "ok" }
343+ framework .UpdateClusterLabels (karmadaClient , targetMember , labels )
344+
345+ ginkgo .DeferCleanup (func () {
346+ framework .RemoveDeployment (kubeClient , deployment .Namespace , deployment .Name )
347+ framework .DeleteClusterLabels (karmadaClient , targetMember , labels )
348+ })
349+ })
350+
351+ ginkgo .Context ("Changes cluster labels to test reschedule while pp matches" , func () {
352+ var policy * policyv1alpha1.PropagationPolicy
353+
354+ ginkgo .BeforeEach (func () {
355+ policy = testhelper .NewPropagationPolicy (policyNamespace , policyName , []policyv1alpha1.ResourceSelector {
356+ {
357+ APIVersion : deployment .APIVersion ,
358+ Kind : deployment .Kind ,
359+ Name : deployment .Name ,
360+ }}, policyv1alpha1.Placement {
361+ ClusterAffinity : & policyv1alpha1.ClusterAffinity {
362+ LabelSelector : & metav1.LabelSelector {
363+ MatchLabels : map [string ]string {labelKey : "ok" },
364+ },
365+ },
366+ })
367+ })
368+
369+ ginkgo .BeforeEach (func () {
370+ framework .CreatePropagationPolicy (karmadaClient , policy )
371+
372+ ginkgo .DeferCleanup (func () {
373+ framework .RemovePropagationPolicy (karmadaClient , policy .Namespace , policy .Name )
374+ })
375+
376+ framework .WaitDeploymentPresentOnClusterFitWith (targetMember , deployment .Namespace , deployment .Name ,
377+ func (deployment * appsv1.Deployment ) bool { return true })
378+ })
379+
380+ ginkgo .It ("change labels to testing deployment reschedule" , func () {
381+ labelsUpdate := map [string ]string {labelKey : "not_ok" }
382+ framework .UpdateClusterLabels (karmadaClient , targetMember , labelsUpdate )
383+ framework .WaitDeploymentDisappearOnCluster (targetMember , deployment .Namespace , deployment .Name )
384+
385+ labelsUpdate = map [string ]string {labelKey : "ok" }
386+ framework .UpdateClusterLabels (karmadaClient , targetMember , labelsUpdate )
387+ framework .WaitDeploymentPresentOnClusterFitWith (targetMember , deployment .Namespace , deployment .Name ,
388+ func (deployment * appsv1.Deployment ) bool { return true })
389+ })
390+ })
391+
392+ ginkgo .Context ("Changes cluster labels to test reschedule while cpp matches" , func () {
393+ var policy * policyv1alpha1.ClusterPropagationPolicy
394+
395+ ginkgo .BeforeEach (func () {
396+ policy = testhelper .NewClusterPropagationPolicy (policyName , []policyv1alpha1.ResourceSelector {
397+ {
398+ APIVersion : deployment .APIVersion ,
399+ Kind : deployment .Kind ,
400+ Name : deployment .Name ,
401+ }}, policyv1alpha1.Placement {
402+ ClusterAffinity : & policyv1alpha1.ClusterAffinity {
403+ LabelSelector : & metav1.LabelSelector {
404+ MatchLabels : map [string ]string {labelKey : "ok" },
405+ },
406+ },
407+ })
408+ })
409+
410+ ginkgo .BeforeEach (func () {
411+ framework .CreateClusterPropagationPolicy (karmadaClient , policy )
412+
413+ ginkgo .DeferCleanup (func () {
414+ framework .RemoveClusterPropagationPolicy (karmadaClient , policy .Name )
415+ })
416+
417+ framework .WaitDeploymentPresentOnClusterFitWith (targetMember , deployment .Namespace , deployment .Name ,
418+ func (deployment * appsv1.Deployment ) bool { return true })
419+ })
420+
421+ ginkgo .It ("change labels to testing deployment reschedule" , func () {
422+ labelsUpdate := map [string ]string {labelKey : "not_ok" }
423+ framework .UpdateClusterLabels (karmadaClient , targetMember , labelsUpdate )
424+ framework .WaitDeploymentDisappearOnCluster (targetMember , deployment .Namespace , deployment .Name )
425+
426+ labelsUpdate = map [string ]string {labelKey : "ok" }
427+ framework .UpdateClusterLabels (karmadaClient , targetMember , labelsUpdate )
428+ framework .WaitDeploymentPresentOnClusterFitWith (targetMember , deployment .Namespace , deployment .Name ,
429+ func (deployment * appsv1.Deployment ) bool { return true })
430+ })
431+ })
432+ })
0 commit comments