Merge pull request #2303 from AllenZMC/improve_test
add ut for binding/common
This commit is contained in:
commit
735001ba3c
|
@ -4,7 +4,12 @@ import (
|
|||
"reflect"
|
||||
"testing"
|
||||
|
||||
v1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||
|
||||
workv1alpha2 "github.com/karmada-io/karmada/pkg/apis/work/v1alpha2"
|
||||
"github.com/karmada-io/karmada/pkg/util/names"
|
||||
)
|
||||
|
||||
func Test_mergeTargetClusters(t *testing.T) {
|
||||
|
@ -122,3 +127,180 @@ func Test_transScheduleResultToMap(t *testing.T) {
|
|||
})
|
||||
}
|
||||
}
|
||||
|
||||
func Test_getReplicaInfos(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
targetClusters []workv1alpha2.TargetCluster
|
||||
wantBool bool
|
||||
wantRes map[string]int64
|
||||
}{
|
||||
{
|
||||
name: "a cluster with replicas",
|
||||
targetClusters: []workv1alpha2.TargetCluster{
|
||||
{
|
||||
Name: "foo",
|
||||
Replicas: 1,
|
||||
},
|
||||
},
|
||||
wantBool: true,
|
||||
wantRes: map[string]int64{
|
||||
"foo": 1,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "none of the clusters have replicas",
|
||||
targetClusters: []workv1alpha2.TargetCluster{
|
||||
{
|
||||
Name: "foo",
|
||||
},
|
||||
},
|
||||
wantBool: false,
|
||||
wantRes: nil,
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got, got1 := getReplicaInfos(tt.targetClusters)
|
||||
if got != tt.wantBool {
|
||||
t.Errorf("getReplicaInfos() got = %v, want %v", got, tt.wantBool)
|
||||
}
|
||||
if !reflect.DeepEqual(got1, tt.wantRes) {
|
||||
t.Errorf("getReplicaInfos() got1 = %v, want %v", got1, tt.wantRes)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func Test_mergeLabel(t *testing.T) {
|
||||
namespace := "fake-ns"
|
||||
bindingName := "fake-bindingName"
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
workload *unstructured.Unstructured
|
||||
workNamespace string
|
||||
binding metav1.Object
|
||||
scope v1.ResourceScope
|
||||
want map[string]string
|
||||
}{
|
||||
{
|
||||
name: "NamespaceScoped",
|
||||
workload: &unstructured.Unstructured{
|
||||
Object: map[string]interface{}{
|
||||
"apiVersion": "apps/v1",
|
||||
"kind": "Deployment",
|
||||
"metadata": map[string]interface{}{
|
||||
"name": "demo-deployment",
|
||||
"namespace": namespace,
|
||||
},
|
||||
},
|
||||
},
|
||||
workNamespace: namespace,
|
||||
binding: &workv1alpha2.ClusterResourceBinding{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: bindingName,
|
||||
Namespace: namespace,
|
||||
},
|
||||
},
|
||||
scope: v1.NamespaceScoped,
|
||||
want: map[string]string{
|
||||
workv1alpha2.ResourceBindingReferenceKey: names.GenerateBindingReferenceKey(namespace, bindingName),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "ClusterScoped",
|
||||
workload: &unstructured.Unstructured{
|
||||
Object: map[string]interface{}{
|
||||
"apiVersion": "v1",
|
||||
"kind": "Namespace",
|
||||
"metadata": map[string]interface{}{
|
||||
"name": "demo-ns",
|
||||
},
|
||||
},
|
||||
},
|
||||
binding: &workv1alpha2.ClusterResourceBinding{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: bindingName,
|
||||
},
|
||||
},
|
||||
scope: v1.ClusterScoped,
|
||||
want: map[string]string{
|
||||
workv1alpha2.ClusterResourceBindingReferenceKey: names.GenerateBindingReferenceKey("", bindingName),
|
||||
},
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
if got := mergeLabel(tt.workload, tt.workNamespace, tt.binding, tt.scope); !reflect.DeepEqual(got, tt.want) {
|
||||
t.Errorf("mergeLabel() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func Test_mergeAnnotations(t *testing.T) {
|
||||
namespace := "fake-ns"
|
||||
bindingName := "fake-bindingName"
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
workload *unstructured.Unstructured
|
||||
binding metav1.Object
|
||||
scope v1.ResourceScope
|
||||
want map[string]string
|
||||
}{
|
||||
{
|
||||
name: "NamespaceScoped",
|
||||
workload: &unstructured.Unstructured{
|
||||
Object: map[string]interface{}{
|
||||
"apiVersion": "apps/v1",
|
||||
"kind": "Deployment",
|
||||
"metadata": map[string]interface{}{
|
||||
"name": "demo-deployment",
|
||||
"namespace": namespace,
|
||||
},
|
||||
},
|
||||
},
|
||||
binding: &workv1alpha2.ClusterResourceBinding{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: bindingName,
|
||||
Namespace: namespace,
|
||||
},
|
||||
},
|
||||
scope: v1.NamespaceScoped,
|
||||
want: map[string]string{
|
||||
workv1alpha2.ResourceBindingNamespaceAnnotationKey: namespace,
|
||||
workv1alpha2.ResourceBindingNameAnnotationKey: bindingName,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "ClusterScoped",
|
||||
workload: &unstructured.Unstructured{
|
||||
Object: map[string]interface{}{
|
||||
"apiVersion": "v1",
|
||||
"kind": "Namespace",
|
||||
"metadata": map[string]interface{}{
|
||||
"name": "demo-ns",
|
||||
},
|
||||
},
|
||||
},
|
||||
binding: &workv1alpha2.ClusterResourceBinding{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: bindingName,
|
||||
},
|
||||
},
|
||||
scope: v1.ClusterScoped,
|
||||
want: map[string]string{
|
||||
workv1alpha2.ClusterResourceBindingAnnotationKey: bindingName,
|
||||
},
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
if got := mergeAnnotations(tt.workload, tt.binding, tt.scope); !reflect.DeepEqual(got, tt.want) {
|
||||
t.Errorf("mergeAnnotations() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue