From cb03a332fdf6fbd20905cd017ba821a298b61aad Mon Sep 17 00:00:00 2001 From: Lee Verberne Date: Fri, 23 Aug 2019 17:07:34 +0000 Subject: [PATCH] Add test for HTTPExtender.IsInterested --- pkg/scheduler/core/extender_test.go | 86 +++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) diff --git a/pkg/scheduler/core/extender_test.go b/pkg/scheduler/core/extender_test.go index 21c91c34728..4c52350a815 100644 --- a/pkg/scheduler/core/extender_test.go +++ b/pkg/scheduler/core/extender_test.go @@ -23,7 +23,9 @@ import ( "time" "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/kubernetes/pkg/scheduler/algorithm" "k8s.io/kubernetes/pkg/scheduler/algorithm/predicates" @@ -575,3 +577,87 @@ func TestGenericSchedulerWithExtenders(t *testing.T) { func createNode(name string) *v1.Node { return &v1.Node{ObjectMeta: metav1.ObjectMeta{Name: name}} } + +func TestIsInterested(t *testing.T) { + mem := &HTTPExtender{ + managedResources: sets.NewString(), + } + mem.managedResources.Insert("memory") + + for _, tc := range []struct { + label string + extender *HTTPExtender + pod *v1.Pod + want bool + }{ + { + label: "Empty managed resources", + extender: &HTTPExtender{ + managedResources: sets.NewString(), + }, + pod: &v1.Pod{}, + want: true, + }, + { + label: "Managed memory, empty resources", + extender: mem, + pod: &v1.Pod{ + Spec: v1.PodSpec{ + Containers: []v1.Container{ + { + Name: "app", + }, + }, + }, + }, + want: false, + }, + { + label: "Managed memory, container memory", + extender: mem, + pod: &v1.Pod{ + Spec: v1.PodSpec{ + Containers: []v1.Container{ + { + Name: "app", + Resources: v1.ResourceRequirements{ + Requests: v1.ResourceList{"memory": resource.Quantity{}}, + Limits: v1.ResourceList{"memory": resource.Quantity{}}, + }, + }, + }, + }, + }, + want: true, + }, + { + label: "Managed memory, init container memory", + extender: mem, + pod: &v1.Pod{ + Spec: v1.PodSpec{ + Containers: []v1.Container{ + { + Name: "app", + }, + }, + InitContainers: []v1.Container{ + { + Name: "init", + Resources: v1.ResourceRequirements{ + Requests: v1.ResourceList{"memory": resource.Quantity{}}, + Limits: v1.ResourceList{"memory": resource.Quantity{}}, + }, + }, + }, + }, + }, + want: true, + }, + } { + t.Run(tc.label, func(t *testing.T) { + if got := tc.extender.IsInterested(tc.pod); got != tc.want { + t.Fatalf("IsInterested(%v) = %v, wanted %v", tc.pod, got, tc.want) + } + }) + } +}