From 20c02357cadfc67ee542ca9e7ed96338ab82d496 Mon Sep 17 00:00:00 2001 From: kikimo Date: Sat, 22 May 2021 15:29:08 +0800 Subject: [PATCH 1/4] Add hint to fake topology manager. --- .../topologymanager/fake_topology_manager.go | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/pkg/kubelet/cm/topologymanager/fake_topology_manager.go b/pkg/kubelet/cm/topologymanager/fake_topology_manager.go index 1e7a831108d..cf71a71b36e 100644 --- a/pkg/kubelet/cm/topologymanager/fake_topology_manager.go +++ b/pkg/kubelet/cm/topologymanager/fake_topology_manager.go @@ -17,12 +17,14 @@ limitations under the License. package topologymanager import ( - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" "k8s.io/klog/v2" "k8s.io/kubernetes/pkg/kubelet/lifecycle" ) -type fakeManager struct{} +type fakeManager struct { + hint *TopologyHint +} //NewFakeManager returns an instance of FakeManager func NewFakeManager() Manager { @@ -30,9 +32,21 @@ func NewFakeManager() Manager { return &fakeManager{} } +// NewFakeManagerWithHint returns an instance of fake topology manager with specified topology hints +func NewFakeManagerWithHint(hint *TopologyHint) Manager { + klog.InfoS("NewFakeManagerWithHint") + return &fakeManager{ + hint: hint, + } +} + func (m *fakeManager) GetAffinity(podUID string, containerName string) TopologyHint { klog.InfoS("GetAffinity", "podUID", podUID, "containerName", containerName) - return TopologyHint{} + if m.hint == nil { + return TopologyHint{} + } + + return *m.hint } func (m *fakeManager) AddHintProvider(h HintProvider) { From 8b3162d67b2a3dcca1c50b428a2f53628083017d Mon Sep 17 00:00:00 2001 From: kikimo Date: Wed, 2 Jun 2021 01:17:04 +0800 Subject: [PATCH 2/4] clean code --- pkg/kubelet/cm/topologymanager/fake_topology_manager.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/kubelet/cm/topologymanager/fake_topology_manager.go b/pkg/kubelet/cm/topologymanager/fake_topology_manager.go index cf71a71b36e..407691e98f0 100644 --- a/pkg/kubelet/cm/topologymanager/fake_topology_manager.go +++ b/pkg/kubelet/cm/topologymanager/fake_topology_manager.go @@ -17,7 +17,7 @@ limitations under the License. package topologymanager import ( - v1 "k8s.io/api/core/v1" + "k8s.io/api/core/v1" "k8s.io/klog/v2" "k8s.io/kubernetes/pkg/kubelet/lifecycle" ) From 9d2135f703f997dfac8f4198a5317ccb46433936 Mon Sep 17 00:00:00 2001 From: kikimo Date: Wed, 2 Jun 2021 01:35:00 +0800 Subject: [PATCH 3/4] reuse fake topology manager --- pkg/kubelet/cm/devicemanager/manager_test.go | 36 +--------------- .../cm/memorymanager/policy_static_test.go | 42 +------------------ 2 files changed, 2 insertions(+), 76 deletions(-) diff --git a/pkg/kubelet/cm/devicemanager/manager_test.go b/pkg/kubelet/cm/devicemanager/manager_test.go index 61031c728e1..bde61550836 100644 --- a/pkg/kubelet/cm/devicemanager/manager_test.go +++ b/pkg/kubelet/cm/devicemanager/manager_test.go @@ -44,7 +44,6 @@ import ( "k8s.io/kubernetes/pkg/kubelet/config" "k8s.io/kubernetes/pkg/kubelet/lifecycle" "k8s.io/kubernetes/pkg/kubelet/pluginmanager" - "k8s.io/kubernetes/pkg/kubelet/util/format" schedulerframework "k8s.io/kubernetes/pkg/scheduler/framework" ) @@ -727,7 +726,7 @@ func TestFilterByAffinity(t *testing.T) { Preferred: true, } testManager := ManagerImpl{ - topologyAffinityStore: NewFakeTopologyManagerWithHint(t, &fakeHint), + topologyAffinityStore: topologymanager.NewFakeManagerWithHint(&fakeHint), allDevices: allDevices, } @@ -764,39 +763,6 @@ type fakeTopologyManagerWithHint struct { hint *topologymanager.TopologyHint } -// NewFakeTopologyManagerWithHint returns an instance of fake topology manager with specified topology hints -func NewFakeTopologyManagerWithHint(t *testing.T, hint *topologymanager.TopologyHint) topologymanager.Manager { - return &fakeTopologyManagerWithHint{ - t: t, - hint: hint, - } -} - -func (m *fakeTopologyManagerWithHint) AddHintProvider(h topologymanager.HintProvider) { - m.t.Logf("[fake topologymanager] AddHintProvider HintProvider: %v", h) -} - -func (m *fakeTopologyManagerWithHint) AddContainer(pod *v1.Pod, container *v1.Container, containerID string) { - m.t.Logf("[fake topologymanager] AddContainer pod: %v container name: %v container id: %v", format.Pod(pod), container.Name, containerID) -} - -func (m *fakeTopologyManagerWithHint) RemoveContainer(containerID string) error { - m.t.Logf("[fake topologymanager] RemoveContainer container id: %v", containerID) - return nil -} - -func (m *fakeTopologyManagerWithHint) Admit(attrs *lifecycle.PodAdmitAttributes) lifecycle.PodAdmitResult { - m.t.Logf("[fake topologymanager] Topology Admit Handler") - return lifecycle.PodAdmitResult{ - Admit: true, - } -} - -func (m *fakeTopologyManagerWithHint) GetAffinity(podUID string, containerName string) topologymanager.TopologyHint { - m.t.Logf("[fake topologymanager] GetAffinity podUID: %v container name: %v", podUID, containerName) - return *m.hint -} - func TestPodContainerDeviceAllocation(t *testing.T) { res1 := TestResource{ resourceName: "domain1.com/resource1", diff --git a/pkg/kubelet/cm/memorymanager/policy_static_test.go b/pkg/kubelet/cm/memorymanager/policy_static_test.go index ef30457215c..d583437be65 100644 --- a/pkg/kubelet/cm/memorymanager/policy_static_test.go +++ b/pkg/kubelet/cm/memorymanager/policy_static_test.go @@ -28,8 +28,6 @@ import ( "k8s.io/kubernetes/pkg/kubelet/cm/memorymanager/state" "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/bitmask" - "k8s.io/kubernetes/pkg/kubelet/lifecycle" - "k8s.io/kubernetes/pkg/kubelet/util/format" ) const ( @@ -66,44 +64,6 @@ var ( } ) -type fakeTopologyManagerWithHint struct { - t *testing.T - hint *topologymanager.TopologyHint -} - -// NewFakeTopologyManagerWithHint returns an instance of fake topology manager with specified topology hints -func NewFakeTopologyManagerWithHint(t *testing.T, hint *topologymanager.TopologyHint) topologymanager.Manager { - return &fakeTopologyManagerWithHint{ - t: t, - hint: hint, - } -} - -func (m *fakeTopologyManagerWithHint) AddHintProvider(h topologymanager.HintProvider) { - m.t.Logf("[fake topologymanager] AddHintProvider HintProvider: %v", h) -} - -func (m *fakeTopologyManagerWithHint) AddContainer(pod *v1.Pod, container *v1.Container, containerID string) { - m.t.Logf("[fake topologymanager] AddContainer pod: %v container name: %v container id: %v", format.Pod(pod), container.Name, containerID) -} - -func (m *fakeTopologyManagerWithHint) RemoveContainer(containerID string) error { - m.t.Logf("[fake topologymanager] RemoveContainer container id: %v", containerID) - return nil -} - -func (m *fakeTopologyManagerWithHint) Admit(attrs *lifecycle.PodAdmitAttributes) lifecycle.PodAdmitResult { - m.t.Logf("[fake topologymanager] Topology Admit Handler") - return lifecycle.PodAdmitResult{ - Admit: true, - } -} - -func (m *fakeTopologyManagerWithHint) GetAffinity(podUID string, containerName string) topologymanager.TopologyHint { - m.t.Logf("[fake topologymanager] GetAffinity podUID: %v container name: %v", podUID, containerName) - return *m.hint -} - func areMemoryBlocksEqual(mb1, mb2 []state.Block) bool { if len(mb1) != len(mb2) { return false @@ -171,7 +131,7 @@ type testStaticPolicy struct { func initTests(t *testing.T, testCase *testStaticPolicy, hint *topologymanager.TopologyHint) (Policy, state.State, error) { manager := topologymanager.NewFakeManager() if hint != nil { - manager = NewFakeTopologyManagerWithHint(t, hint) + manager = topologymanager.NewFakeManagerWithHint(hint) } p, err := NewPolicyStatic(testCase.machineInfo, testCase.systemReserved, manager) From 86d68effc21c9d9e9d4e47d26322cc16c85412ec Mon Sep 17 00:00:00 2001 From: kikimo Date: Wed, 2 Jun 2021 09:07:53 +0800 Subject: [PATCH 4/4] clean code --- pkg/kubelet/cm/devicemanager/manager_test.go | 5 ----- 1 file changed, 5 deletions(-) diff --git a/pkg/kubelet/cm/devicemanager/manager_test.go b/pkg/kubelet/cm/devicemanager/manager_test.go index bde61550836..0f74dd5a488 100644 --- a/pkg/kubelet/cm/devicemanager/manager_test.go +++ b/pkg/kubelet/cm/devicemanager/manager_test.go @@ -758,11 +758,6 @@ func TestFilterByAffinity(t *testing.T) { } } -type fakeTopologyManagerWithHint struct { - t *testing.T - hint *topologymanager.TopologyHint -} - func TestPodContainerDeviceAllocation(t *testing.T) { res1 := TestResource{ resourceName: "domain1.com/resource1",