Skip to content

Commit 412adb8

Browse files
committed
add unit test for initPolicyFromFile
1 parent 49c4c6f commit 412adb8

File tree

1 file changed

+93
-0
lines changed

1 file changed

+93
-0
lines changed

pkg/scheduler/scheduler_test.go

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ package scheduler
1919
import (
2020
"errors"
2121
"fmt"
22+
"io/ioutil"
23+
"os"
24+
"path"
2225
"reflect"
2326
"testing"
2427
"time"
@@ -43,6 +46,7 @@ import (
4346
"k8s.io/kubernetes/pkg/scheduler/algorithm/predicates"
4447
"k8s.io/kubernetes/pkg/scheduler/algorithm/priorities"
4548
"k8s.io/kubernetes/pkg/scheduler/api"
49+
schedulerapi "k8s.io/kubernetes/pkg/scheduler/api"
4650
kubeschedulerconfig "k8s.io/kubernetes/pkg/scheduler/apis/config"
4751
"k8s.io/kubernetes/pkg/scheduler/core"
4852
"k8s.io/kubernetes/pkg/scheduler/factory"
@@ -935,3 +939,92 @@ func TestSchedulerWithVolumeBinding(t *testing.T) {
935939
})
936940
}
937941
}
942+
943+
func TestInitPolicyFromFile(t *testing.T) {
944+
dir, err := ioutil.TempDir(os.TempDir(), "policy")
945+
if err != nil {
946+
t.Errorf("unexpected error: %v", err)
947+
}
948+
defer os.RemoveAll(dir)
949+
950+
for i, test := range []struct {
951+
policy string
952+
expectedPredicates sets.String
953+
expectedPrioritizers sets.String
954+
}{
955+
// Test json format policy file
956+
{
957+
policy: `{
958+
"kind" : "Policy",
959+
"apiVersion" : "v1",
960+
"predicates" : [
961+
{"name" : "PredicateOne"},
962+
{"name" : "PredicateTwo"}
963+
],
964+
"priorities" : [
965+
{"name" : "PriorityOne", "weight" : 1},
966+
{"name" : "PriorityTwo", "weight" : 5}
967+
]
968+
}`,
969+
expectedPredicates: sets.NewString(
970+
"PredicateOne",
971+
"PredicateTwo",
972+
),
973+
expectedPrioritizers: sets.NewString(
974+
"PriorityOne",
975+
"PriorityTwo",
976+
),
977+
},
978+
// Test yaml format policy file
979+
{
980+
policy: `apiVersion: v1
981+
kind: Policy
982+
predicates:
983+
- name: PredicateOne
984+
- name: PredicateTwo
985+
priorities:
986+
- name: PriorityOne
987+
weight: 1
988+
- name: PriorityTwo
989+
weight: 5
990+
`,
991+
expectedPredicates: sets.NewString(
992+
"PredicateOne",
993+
"PredicateTwo",
994+
),
995+
expectedPrioritizers: sets.NewString(
996+
"PriorityOne",
997+
"PriorityTwo",
998+
),
999+
},
1000+
} {
1001+
file := fmt.Sprintf("scheduler-policy-config-file-%d", i)
1002+
fullPath := path.Join(dir, file)
1003+
1004+
if err := ioutil.WriteFile(fullPath, []byte(test.policy), 0644); err != nil {
1005+
t.Fatalf("Failed writing a policy config file: %v", err)
1006+
}
1007+
1008+
policy := &schedulerapi.Policy{}
1009+
1010+
if err := initPolicyFromFile(fullPath, policy); err != nil {
1011+
t.Fatalf("Failed writing a policy config file: %v", err)
1012+
}
1013+
1014+
// Verify that the policy is initialized correctly.
1015+
schedPredicates := sets.NewString()
1016+
for _, p := range policy.Predicates {
1017+
schedPredicates.Insert(p.Name)
1018+
}
1019+
schedPrioritizers := sets.NewString()
1020+
for _, p := range policy.Priorities {
1021+
schedPrioritizers.Insert(p.Name)
1022+
}
1023+
if !schedPredicates.Equal(test.expectedPredicates) {
1024+
t.Errorf("Expected predicates %v, got %v", test.expectedPredicates, schedPredicates)
1025+
}
1026+
if !schedPrioritizers.Equal(test.expectedPrioritizers) {
1027+
t.Errorf("Expected priority functions %v, got %v", test.expectedPrioritizers, schedPrioritizers)
1028+
}
1029+
}
1030+
}

0 commit comments

Comments
 (0)