Merge pull request #5338 from anujagrawal699/improveTestCoverage-pkg/util/eventfilter

Added new test cases and improved test coverage of pkg/util/eventfilter
This commit is contained in:
karmada-bot 2024-08-13 10:31:33 +08:00 committed by GitHub
commit 62c5d8bca2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 181 additions and 0 deletions

View File

@ -26,6 +26,7 @@ import (
"k8s.io/utils/ptr"
workloadv1alpha1 "github.com/karmada-io/karmada/examples/customresourceinterpreter/apis/workload/v1alpha1"
policyv1alpha1 "github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1"
"github.com/karmada-io/karmada/pkg/util/helper"
)
@ -196,6 +197,104 @@ func TestSpecificationChanged(t *testing.T) {
},
wantChange: true,
},
{
name: "No change in Service",
oldObj: &corev1.Service{
ObjectMeta: metav1.ObjectMeta{
ResourceVersion: "123456",
ManagedFields: []metav1.ManagedFieldsEntry{{}},
},
Spec: corev1.ServiceSpec{
Ports: []corev1.ServicePort{{Port: 80}},
},
},
newObj: &corev1.Service{
ObjectMeta: metav1.ObjectMeta{
ResourceVersion: "123457",
ManagedFields: []metav1.ManagedFieldsEntry{{}, {}},
},
Spec: corev1.ServiceSpec{
Ports: []corev1.ServicePort{{Port: 80}},
},
},
wantChange: false,
},
{
name: "Change in Service ports",
oldObj: &corev1.Service{
ObjectMeta: metav1.ObjectMeta{
ResourceVersion: "123456",
ManagedFields: []metav1.ManagedFieldsEntry{{}},
},
Spec: corev1.ServiceSpec{
Ports: []corev1.ServicePort{{Port: 80}},
},
},
newObj: &corev1.Service{
ObjectMeta: metav1.ObjectMeta{
ResourceVersion: "123457",
ManagedFields: []metav1.ManagedFieldsEntry{{}, {}},
},
Spec: corev1.ServiceSpec{
Ports: []corev1.ServicePort{{Port: 8080}},
},
},
wantChange: true,
},
{
name: "Change in labels",
oldObj: &corev1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
ResourceVersion: "123456",
Labels: map[string]string{"app": "v1"},
},
Data: map[string]string{"key": "value"},
},
newObj: &corev1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
ResourceVersion: "123457",
Labels: map[string]string{"app": "v2"},
},
Data: map[string]string{"key": "value"},
},
wantChange: true,
},
{
name: "Change in annotations",
oldObj: &corev1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
ResourceVersion: "123456",
Annotations: map[string]string{"note": "v1"},
},
Data: map[string]string{"key": "value"},
},
newObj: &corev1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
ResourceVersion: "123457",
Annotations: map[string]string{"note": "v2"},
},
Data: map[string]string{"key": "value"},
},
wantChange: true,
},
{
name: "Change with user Karmada labels",
oldObj: &corev1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
ResourceVersion: "123456",
Labels: map[string]string{policyv1alpha1.NamespaceSkipAutoPropagationLabel: "true"},
},
Data: map[string]string{"key": "value"},
},
newObj: &corev1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
ResourceVersion: "123457",
Labels: map[string]string{policyv1alpha1.NamespaceSkipAutoPropagationLabel: "false"},
},
Data: map[string]string{"key": "value"},
},
wantChange: true,
},
}
for _, tt := range tests {
@ -219,3 +318,85 @@ func TestSpecificationChanged(t *testing.T) {
})
}
}
func TestResourceChangeByKarmada(t *testing.T) {
tests := []struct {
name string
oldObj interface{}
newObj interface{}
wantChangeByKarmada bool
}{
{
name: "Change by Karmada",
oldObj: &corev1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
ResourceVersion: "123456",
Labels: map[string]string{"app.karmada.io/managed": "true"},
},
Data: map[string]string{"key": "value"},
},
newObj: &corev1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
ResourceVersion: "123457",
Labels: map[string]string{"app.karmada.io/managed": "false"},
},
Data: map[string]string{"key": "value"},
},
wantChangeByKarmada: true,
},
{
name: "Change not by Karmada",
oldObj: &corev1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
ResourceVersion: "123456",
Labels: map[string]string{"app": "v1"},
},
Data: map[string]string{"key": "value"},
},
newObj: &corev1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
ResourceVersion: "123457",
Labels: map[string]string{"app": "v2"},
},
Data: map[string]string{"key": "value"},
},
wantChangeByKarmada: false,
},
{
name: "Change in Karmada annotations",
oldObj: &corev1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
ResourceVersion: "123456",
Annotations: map[string]string{"note.karmada.io/managed": "true"},
},
Data: map[string]string{"key": "value"},
},
newObj: &corev1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
ResourceVersion: "123457",
Annotations: map[string]string{"note.karmada.io/managed": "false"},
},
Data: map[string]string{"key": "value"},
},
wantChangeByKarmada: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
oldUnstructured, err := helper.ToUnstructured(tt.oldObj)
if err != nil {
t.Fatalf("Failed to convert oldObj to unstructured: %v", err)
}
newUnstructured, err := helper.ToUnstructured(tt.newObj)
if err != nil {
t.Fatalf("Failed to convert newObj to unstructured: %v", err)
}
got := ResourceChangeByKarmada(oldUnstructured, newUnstructured)
if got != tt.wantChangeByKarmada {
t.Errorf("ResourceChangeByKarmada() = %v, want %v", got, tt.wantChangeByKarmada)
}
})
}
}