From e679b63a28f640bf27c7f00d5a009d4b13af66f7 Mon Sep 17 00:00:00 2001 From: AllenZMC Date: Tue, 9 Aug 2022 22:25:01 +0800 Subject: [PATCH] add ut for binding Signed-off-by: AllenZMC --- pkg/util/helper/binding_test.go | 107 ++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) diff --git a/pkg/util/helper/binding_test.go b/pkg/util/helper/binding_test.go index f053e280d..4275bfc00 100644 --- a/pkg/util/helper/binding_test.go +++ b/pkg/util/helper/binding_test.go @@ -1,8 +1,11 @@ package helper import ( + "reflect" "testing" + "k8s.io/apimachinery/pkg/util/sets" + workv1alpha2 "github.com/karmada-io/karmada/pkg/apis/work/v1alpha2" ) @@ -73,3 +76,107 @@ func TestHasScheduledReplica(t *testing.T) { }) } } + +func TestObtainBindingSpecExistingClusters(t *testing.T) { + tests := []struct { + name string + bindingSpec workv1alpha2.ResourceBindingSpec + want sets.String + }{ + { + name: "unique cluster name without GracefulEvictionTasks field", + bindingSpec: workv1alpha2.ResourceBindingSpec{ + Clusters: []workv1alpha2.TargetCluster{ + { + Name: "member1", + Replicas: 2, + }, + { + Name: "member2", + Replicas: 3, + }, + }, + RequiredBy: []workv1alpha2.BindingSnapshot{ + { + Clusters: []workv1alpha2.TargetCluster{ + { + Name: "member3", + Replicas: 2, + }, + }, + }, + }, + }, + want: sets.NewString("member1", "member2", "member3"), + }, + { + name: "all spec fields do not contain duplicate cluster names", + bindingSpec: workv1alpha2.ResourceBindingSpec{ + Clusters: []workv1alpha2.TargetCluster{ + { + Name: "member1", + Replicas: 2, + }, + { + Name: "member2", + Replicas: 3, + }, + }, + RequiredBy: []workv1alpha2.BindingSnapshot{ + { + Clusters: []workv1alpha2.TargetCluster{ + { + Name: "member3", + Replicas: 2, + }, + }, + }, + }, + GracefulEvictionTasks: []workv1alpha2.GracefulEvictionTask{ + { + FromCluster: "member4", + }, + }, + }, + want: sets.NewString("member1", "member2", "member3", "member4"), + }, + { + name: "duplicate cluster name", + bindingSpec: workv1alpha2.ResourceBindingSpec{ + Clusters: []workv1alpha2.TargetCluster{ + { + Name: "member1", + Replicas: 2, + }, + { + Name: "member2", + Replicas: 3, + }, + }, + RequiredBy: []workv1alpha2.BindingSnapshot{ + { + Clusters: []workv1alpha2.TargetCluster{ + { + Name: "member3", + Replicas: 2, + }, + }, + }, + }, + GracefulEvictionTasks: []workv1alpha2.GracefulEvictionTask{ + { + FromCluster: "member3", + }, + }, + }, + want: sets.NewString("member1", "member2", "member3"), + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := ObtainBindingSpecExistingClusters(tt.bindingSpec); !reflect.DeepEqual(got, tt.want) { + t.Errorf("ObtainBindingSpecExistingClusters() = %v, want %v", got, tt.want) + } + }) + } +}