From 06bc3b48af129ac0b41ff2d592d988b496a544f9 Mon Sep 17 00:00:00 2001 From: Dave Chen Date: Mon, 8 Feb 2021 16:04:40 +0800 Subject: [PATCH] Improve test coverage for service affinity Pods that are filtered by the plugin should has UID associated, otherwise all those matching pods will be filtered out, this is the against of the spec of testcases. Signed-off-by: Dave Chen --- .../framework/plugins/serviceaffinity/BUILD | 1 + .../serviceaffinity/service_affinity_test.go | 33 ++++++++++--------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/pkg/scheduler/framework/plugins/serviceaffinity/BUILD b/pkg/scheduler/framework/plugins/serviceaffinity/BUILD index 61d975c6368..0f4bc1a5293 100644 --- a/pkg/scheduler/framework/plugins/serviceaffinity/BUILD +++ b/pkg/scheduler/framework/plugins/serviceaffinity/BUILD @@ -27,6 +27,7 @@ go_test( "//pkg/scheduler/internal/cache:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", ], ) diff --git a/pkg/scheduler/framework/plugins/serviceaffinity/service_affinity_test.go b/pkg/scheduler/framework/plugins/serviceaffinity/service_affinity_test.go index 8aeaf0b323e..cfddd24ad5e 100644 --- a/pkg/scheduler/framework/plugins/serviceaffinity/service_affinity_test.go +++ b/pkg/scheduler/framework/plugins/serviceaffinity/service_affinity_test.go @@ -25,6 +25,7 @@ import ( v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/types" "k8s.io/kubernetes/pkg/scheduler/apis/config" "k8s.io/kubernetes/pkg/scheduler/framework" fakeframework "k8s.io/kubernetes/pkg/scheduler/framework/fake" @@ -86,8 +87,8 @@ func TestServiceAffinity(t *testing.T) { }, { name: "service pod on same node", - pod: &v1.Pod{ObjectMeta: metav1.ObjectMeta{Labels: selector}}, - pods: []*v1.Pod{{Spec: v1.PodSpec{NodeName: "machine1"}, ObjectMeta: metav1.ObjectMeta{Labels: selector}}}, + pod: &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "pod1", Labels: selector, UID: types.UID("pod1")}}, + pods: []*v1.Pod{{Spec: v1.PodSpec{NodeName: "machine1"}, ObjectMeta: metav1.ObjectMeta{Name: "pod2", Labels: selector, UID: types.UID("pod2")}}}, node: &node1, services: []*v1.Service{{Spec: v1.ServiceSpec{Selector: selector}}}, labels: []string{"region"}, @@ -95,8 +96,8 @@ func TestServiceAffinity(t *testing.T) { }, { name: "service pod on different node, region match", - pod: &v1.Pod{ObjectMeta: metav1.ObjectMeta{Labels: selector}}, - pods: []*v1.Pod{{Spec: v1.PodSpec{NodeName: "machine2"}, ObjectMeta: metav1.ObjectMeta{Labels: selector}}}, + pod: &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "pod1", Labels: selector, UID: types.UID("pod1")}}, + pods: []*v1.Pod{{Spec: v1.PodSpec{NodeName: "machine2"}, ObjectMeta: metav1.ObjectMeta{Name: "pod2", Labels: selector, UID: types.UID("pod2")}}}, node: &node1, services: []*v1.Service{{Spec: v1.ServiceSpec{Selector: selector}}}, labels: []string{"region"}, @@ -104,8 +105,8 @@ func TestServiceAffinity(t *testing.T) { }, { name: "service pod on different node, region mismatch", - pod: &v1.Pod{ObjectMeta: metav1.ObjectMeta{Labels: selector}}, - pods: []*v1.Pod{{Spec: v1.PodSpec{NodeName: "machine3"}, ObjectMeta: metav1.ObjectMeta{Labels: selector}}}, + pod: &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "pod1", Labels: selector, UID: types.UID("pod1")}}, + pods: []*v1.Pod{{Spec: v1.PodSpec{NodeName: "machine3"}, ObjectMeta: metav1.ObjectMeta{Name: "pod2", Labels: selector, UID: types.UID("pod2")}}}, node: &node1, services: []*v1.Service{{Spec: v1.ServiceSpec{Selector: selector}}}, labels: []string{"region"}, @@ -113,8 +114,8 @@ func TestServiceAffinity(t *testing.T) { }, { name: "service in different namespace, region mismatch", - pod: &v1.Pod{ObjectMeta: metav1.ObjectMeta{Labels: selector, Namespace: "ns1"}}, - pods: []*v1.Pod{{Spec: v1.PodSpec{NodeName: "machine3"}, ObjectMeta: metav1.ObjectMeta{Labels: selector, Namespace: "ns1"}}}, + pod: &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "pod1", Labels: selector, Namespace: "ns1", UID: types.UID("pod1")}}, + pods: []*v1.Pod{{Spec: v1.PodSpec{NodeName: "machine3"}, ObjectMeta: metav1.ObjectMeta{Name: "pod2", Labels: selector, Namespace: "ns1", UID: types.UID("pod2")}}}, node: &node1, services: []*v1.Service{{Spec: v1.ServiceSpec{Selector: selector}, ObjectMeta: metav1.ObjectMeta{Namespace: "ns2"}}}, labels: []string{"region"}, @@ -122,8 +123,8 @@ func TestServiceAffinity(t *testing.T) { }, { name: "pod in different namespace, region mismatch", - pod: &v1.Pod{ObjectMeta: metav1.ObjectMeta{Labels: selector, Namespace: "ns1"}}, - pods: []*v1.Pod{{Spec: v1.PodSpec{NodeName: "machine3"}, ObjectMeta: metav1.ObjectMeta{Labels: selector, Namespace: "ns2"}}}, + pod: &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "pod1", Labels: selector, Namespace: "ns1", UID: types.UID("pod1")}}, + pods: []*v1.Pod{{Spec: v1.PodSpec{NodeName: "machine3"}, ObjectMeta: metav1.ObjectMeta{Name: "pod2", Labels: selector, Namespace: "ns2", UID: types.UID("pod2")}}}, node: &node1, services: []*v1.Service{{Spec: v1.ServiceSpec{Selector: selector}, ObjectMeta: metav1.ObjectMeta{Namespace: "ns1"}}}, labels: []string{"region"}, @@ -131,8 +132,8 @@ func TestServiceAffinity(t *testing.T) { }, { name: "service and pod in same namespace, region mismatch", - pod: &v1.Pod{ObjectMeta: metav1.ObjectMeta{Labels: selector, Namespace: "ns1"}}, - pods: []*v1.Pod{{Spec: v1.PodSpec{NodeName: "machine3"}, ObjectMeta: metav1.ObjectMeta{Labels: selector, Namespace: "ns1"}}}, + pod: &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "pod1", Labels: selector, Namespace: "ns1", UID: types.UID("pod1")}}, + pods: []*v1.Pod{{Spec: v1.PodSpec{NodeName: "machine3"}, ObjectMeta: metav1.ObjectMeta{Name: "pod2", Labels: selector, Namespace: "ns1", UID: types.UID("pod2")}}}, node: &node1, services: []*v1.Service{{Spec: v1.ServiceSpec{Selector: selector}, ObjectMeta: metav1.ObjectMeta{Namespace: "ns1"}}}, labels: []string{"region"}, @@ -140,8 +141,8 @@ func TestServiceAffinity(t *testing.T) { }, { name: "service pod on different node, multiple labels, not all match", - pod: &v1.Pod{ObjectMeta: metav1.ObjectMeta{Labels: selector}}, - pods: []*v1.Pod{{Spec: v1.PodSpec{NodeName: "machine2"}, ObjectMeta: metav1.ObjectMeta{Labels: selector}}}, + pod: &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "pod1", Labels: selector, UID: types.UID("pod1")}}, + pods: []*v1.Pod{{Spec: v1.PodSpec{NodeName: "machine2"}, ObjectMeta: metav1.ObjectMeta{Name: "pod2", Labels: selector, UID: types.UID("pod2")}}}, node: &node1, services: []*v1.Service{{Spec: v1.ServiceSpec{Selector: selector}}}, labels: []string{"region", "zone"}, @@ -149,8 +150,8 @@ func TestServiceAffinity(t *testing.T) { }, { name: "service pod on different node, multiple labels, all match", - pod: &v1.Pod{ObjectMeta: metav1.ObjectMeta{Labels: selector}}, - pods: []*v1.Pod{{Spec: v1.PodSpec{NodeName: "machine5"}, ObjectMeta: metav1.ObjectMeta{Labels: selector}}}, + pod: &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "pod1", Labels: selector, UID: types.UID("pod1")}}, + pods: []*v1.Pod{{Spec: v1.PodSpec{NodeName: "machine5"}, ObjectMeta: metav1.ObjectMeta{Name: "pod2", Labels: selector, UID: types.UID("pod2")}}}, node: &node4, services: []*v1.Service{{Spec: v1.ServiceSpec{Selector: selector}}}, labels: []string{"region", "zone"},