From 4e503597b88ddd49cd522b7e87cb098640020a6d Mon Sep 17 00:00:00 2001 From: Sreemanti Ghosh Date: Thu, 28 Feb 2019 17:10:43 +0000 Subject: [PATCH] Unit test for Topology Manager policy_strict and policy_preferred --- .../topologymanager/policy_preferred_test.go | 52 ++++++++++++++++ .../cm/topologymanager/policy_strict_test.go | 61 +++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 pkg/kubelet/cm/topologymanager/policy_preferred_test.go create mode 100644 pkg/kubelet/cm/topologymanager/policy_strict_test.go diff --git a/pkg/kubelet/cm/topologymanager/policy_preferred_test.go b/pkg/kubelet/cm/topologymanager/policy_preferred_test.go new file mode 100644 index 00000000000..0cb0f220e03 --- /dev/null +++ b/pkg/kubelet/cm/topologymanager/policy_preferred_test.go @@ -0,0 +1,52 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package topologymanager + +import ( + "testing" +) + +func TestCanAdmitPodResult1(t *testing.T) { + tcases := []struct { + name string + affinity bool + expected bool + }{ + { + name: "Affinity is set to false in topology hints", + affinity: false, + expected: true, + }, + { + name: "Affinity is set to true in topology hints", + affinity: true, + expected: true, + }, + } + + for _, tc := range tcases { + policy := NewPreferredPolicy() + hints := TopologyHints{ + Affinity: tc.affinity, + } + result := policy.CanAdmitPodResult(hints) + + if result.Admit != tc.expected { + t.Errorf("Expected Admit field in result to be %t, got %t", tc.expected, result.Admit) + } + } +} diff --git a/pkg/kubelet/cm/topologymanager/policy_strict_test.go b/pkg/kubelet/cm/topologymanager/policy_strict_test.go new file mode 100644 index 00000000000..227f342dc4d --- /dev/null +++ b/pkg/kubelet/cm/topologymanager/policy_strict_test.go @@ -0,0 +1,61 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package topologymanager + +import ( + "testing" +) + +func TestCanAdmitPodResult(t *testing.T) { + tcases := []struct { + name string + affinity bool + expected bool + }{ + { + name: "Affinity is set to false in topology hints", + affinity: false, + expected: false, + }, + { + name: "Affinity is set to true in topology hints", + affinity: true, + expected: true, + }, + } + + for _, tc := range tcases { + policy := NewStrictPolicy() + hints := TopologyHints{ + Affinity: tc.affinity, + } + result := policy.CanAdmitPodResult(hints) + + if result.Admit != tc.expected { + t.Errorf("Expected Admit field in result to be %t, got %t", tc.expected, result.Admit) + } + + if tc.expected == false { + if len(result.Reason) == 0 { + t.Errorf("Expected Reason field to be not empty") + } + if len(result.Message) == 0 { + t.Errorf("Expected Message field to be not empty") + } + } + } +}