243 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			243 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Go
		
	
	
	
package util
 | 
						|
 | 
						|
import (
 | 
						|
	"testing"
 | 
						|
 | 
						|
	"k8s.io/apimachinery/pkg/runtime/schema"
 | 
						|
)
 | 
						|
 | 
						|
func TestSkippedResourceConfigGVKParse(t *testing.T) {
 | 
						|
	tests := []struct {
 | 
						|
		input string
 | 
						|
		out   []schema.GroupVersionKind
 | 
						|
	}{
 | 
						|
		{
 | 
						|
			input: "v1/Node,Pod;networking.k8s.io/v1beta1/Ingress,IngressClass",
 | 
						|
			out: []schema.GroupVersionKind{
 | 
						|
				{
 | 
						|
					Group:   "",
 | 
						|
					Version: "v1",
 | 
						|
					Kind:    "Node",
 | 
						|
				},
 | 
						|
				{
 | 
						|
					Group:   "",
 | 
						|
					Version: "v1",
 | 
						|
					Kind:    "Pod",
 | 
						|
				},
 | 
						|
				{
 | 
						|
					Group:   "networking.k8s.io",
 | 
						|
					Version: "v1beta1",
 | 
						|
					Kind:    "Ingress",
 | 
						|
				},
 | 
						|
				{
 | 
						|
					Group:   "networking.k8s.io",
 | 
						|
					Version: "v1beta1",
 | 
						|
					Kind:    "IngressClass",
 | 
						|
				},
 | 
						|
			}},
 | 
						|
	}
 | 
						|
	for _, test := range tests {
 | 
						|
		r := NewSkippedResourceConfig()
 | 
						|
		if err := r.Parse(test.input); err != nil {
 | 
						|
			t.Fatalf("Unexpected error: %v", err)
 | 
						|
		}
 | 
						|
		for i, o := range test.out {
 | 
						|
			ok := r.GroupVersionKindDisabled(o)
 | 
						|
			if !ok {
 | 
						|
				t.Errorf("%d: unexpected error: %v", i, o)
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
func TestResourceConfigGVParse(t *testing.T) {
 | 
						|
	tests := []struct {
 | 
						|
		input string
 | 
						|
		out   []schema.GroupVersion
 | 
						|
	}{
 | 
						|
		{
 | 
						|
			input: "networking.k8s.io/v1;test/v1beta1",
 | 
						|
			out: []schema.GroupVersion{
 | 
						|
				{
 | 
						|
					Group:   "networking.k8s.io",
 | 
						|
					Version: "v1",
 | 
						|
				},
 | 
						|
				{
 | 
						|
					Group:   "networking.k8s.io",
 | 
						|
					Version: "v1",
 | 
						|
				},
 | 
						|
				{
 | 
						|
					Group:   "test",
 | 
						|
					Version: "v1beta1",
 | 
						|
				},
 | 
						|
				{
 | 
						|
					Group:   "test",
 | 
						|
					Version: "v1beta1",
 | 
						|
				},
 | 
						|
			}},
 | 
						|
	}
 | 
						|
	for _, test := range tests {
 | 
						|
		r := NewSkippedResourceConfig()
 | 
						|
		if err := r.Parse(test.input); err != nil {
 | 
						|
			t.Fatalf("Unexpected error: %v", err)
 | 
						|
		}
 | 
						|
		for i, o := range test.out {
 | 
						|
			ok := r.GroupVersionDisabled(o)
 | 
						|
			if !ok {
 | 
						|
				t.Errorf("%d: unexpected error: %v", i, o)
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestSkippedResourceConfigGroupParse(t *testing.T) {
 | 
						|
	tests := []struct {
 | 
						|
		input string
 | 
						|
		out   []string
 | 
						|
	}{
 | 
						|
		{
 | 
						|
			input: "networking.k8s.io;test",
 | 
						|
			out: []string{
 | 
						|
				"networking.k8s.io", "test",
 | 
						|
			}},
 | 
						|
	}
 | 
						|
	for _, test := range tests {
 | 
						|
		r := NewSkippedResourceConfig()
 | 
						|
		if err := r.Parse(test.input); err != nil {
 | 
						|
			t.Fatalf("Unexpected error: %v", err)
 | 
						|
		}
 | 
						|
		for i, o := range test.out {
 | 
						|
			ok := r.GroupDisabled(o)
 | 
						|
			if !ok {
 | 
						|
				t.Errorf("%d: unexpected error: %v", i, o)
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestSkippedResourceConfigMixedParse(t *testing.T) {
 | 
						|
	tests := []struct {
 | 
						|
		input string
 | 
						|
		out   SkippedResourceConfig
 | 
						|
	}{
 | 
						|
		{
 | 
						|
			input: "v1/Node,Pod;networking.k8s.io/v1beta1/Ingress,IngressClass;networking.k8s.io;test.com/v1",
 | 
						|
			out: SkippedResourceConfig{
 | 
						|
				Groups: map[string]struct{}{
 | 
						|
					"networking.k8s.io": {},
 | 
						|
				},
 | 
						|
				GroupVersions: map[schema.GroupVersion]struct{}{
 | 
						|
					{
 | 
						|
						Group:   "test.com",
 | 
						|
						Version: "v1",
 | 
						|
					}: {},
 | 
						|
				},
 | 
						|
				GroupVersionKinds: map[schema.GroupVersionKind]struct{}{
 | 
						|
					{
 | 
						|
						Group:   "",
 | 
						|
						Version: "v1",
 | 
						|
						Kind:    "Node",
 | 
						|
					}: {},
 | 
						|
					{
 | 
						|
						Group:   "",
 | 
						|
						Version: "v1",
 | 
						|
						Kind:    "Pod",
 | 
						|
					}: {},
 | 
						|
					{
 | 
						|
						Group:   "networking.k8s.io",
 | 
						|
						Version: "v1beta1",
 | 
						|
						Kind:    "Ingress",
 | 
						|
					}: {},
 | 
						|
					{
 | 
						|
						Group:   "networking.k8s.io",
 | 
						|
						Version: "v1beta1",
 | 
						|
						Kind:    "IngressClass",
 | 
						|
					}: {},
 | 
						|
				},
 | 
						|
			}},
 | 
						|
	}
 | 
						|
	for i, test := range tests {
 | 
						|
		r := NewSkippedResourceConfig()
 | 
						|
		if err := r.Parse(test.input); err != nil {
 | 
						|
			t.Fatalf("Unexpected error: %v", err)
 | 
						|
		}
 | 
						|
		for g := range r.Groups {
 | 
						|
			ok := r.GroupDisabled(g)
 | 
						|
			if !ok {
 | 
						|
				t.Errorf("%d: unexpected error: %v", i, g)
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		for gv := range r.GroupVersions {
 | 
						|
			ok := r.GroupVersionDisabled(gv)
 | 
						|
			if !ok {
 | 
						|
				t.Errorf("%d: unexpected error: %v", i, gv)
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		for gvk := range r.GroupVersionKinds {
 | 
						|
			ok := r.GroupVersionKindDisabled(gvk)
 | 
						|
			if !ok {
 | 
						|
				t.Errorf("%d: unexpected error: %v", i, gvk)
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestDefaultSkippedResourceConfigGroupParse(t *testing.T) {
 | 
						|
	tests := []struct {
 | 
						|
		input string
 | 
						|
		out   []string
 | 
						|
	}{
 | 
						|
		{
 | 
						|
			input: "",
 | 
						|
			out: []string{
 | 
						|
				"cluster.karmada.io", "policy.karmada.io", "work.karmada.io", "config.karmada.io", "events.k8s.io",
 | 
						|
			}},
 | 
						|
	}
 | 
						|
	for _, test := range tests {
 | 
						|
		r := NewSkippedResourceConfig()
 | 
						|
		if err := r.Parse(test.input); err != nil {
 | 
						|
			t.Fatalf("Unexpected error: %v", err)
 | 
						|
		}
 | 
						|
		for i, o := range test.out {
 | 
						|
			ok := r.GroupDisabled(o)
 | 
						|
			if !ok {
 | 
						|
				t.Errorf("%d: unexpected error: %v", i, o)
 | 
						|
			}
 | 
						|
		}
 | 
						|
		ok := r.GroupDisabled("")
 | 
						|
		if ok {
 | 
						|
			t.Error("unexpected error: v1")
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestDefaultSkippedResourceConfigGroupVersionKindParse(t *testing.T) {
 | 
						|
	tests := []struct {
 | 
						|
		input string
 | 
						|
		out   []schema.GroupVersionKind
 | 
						|
	}{
 | 
						|
		{
 | 
						|
			input: "",
 | 
						|
			out: []schema.GroupVersionKind{
 | 
						|
				corev1EventGVK,
 | 
						|
			}},
 | 
						|
	}
 | 
						|
	for _, test := range tests {
 | 
						|
		r := NewSkippedResourceConfig()
 | 
						|
		if err := r.Parse(test.input); err != nil {
 | 
						|
			t.Fatalf("Unexpected error: %v", err)
 | 
						|
		}
 | 
						|
		for i, o := range test.out {
 | 
						|
			ok := r.GroupVersionKindDisabled(o)
 | 
						|
			if !ok {
 | 
						|
				t.Errorf("%d: unexpected error: %v", i, o)
 | 
						|
			}
 | 
						|
		}
 | 
						|
		ok := r.GroupDisabled("")
 | 
						|
		if ok {
 | 
						|
			t.Error("unexpected error: v1")
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |