add a reusable fakeTopologyManagerWithHint{}

This commit is contained in:
kikimo
2021-05-19 09:33:51 +08:00
parent 2ef1f81076
commit 893ebf3a1c

View File

@@ -44,6 +44,7 @@ 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"
)
@@ -720,8 +721,13 @@ func TestFilterByAffinity(t *testing.T) {
},
}
fakeAffinity, _ := bitmask.NewBitMask(2)
fakeHint := topologymanager.TopologyHint{
NUMANodeAffinity: fakeAffinity,
Preferred: true,
}
testManager := ManagerImpl{
topologyAffinityStore: newFakeTopologyManager(),
topologyAffinityStore: NewFakeTopologyManagerWithHint(t, &fakeHint),
allDevices: allDevices,
}
@@ -753,23 +759,45 @@ func TestFilterByAffinity(t *testing.T) {
}
}
type fakeTopologyManager struct {
topologymanager.Manager
type fakeTopologyManagerWithHint struct {
t *testing.T
hint *topologymanager.TopologyHint
}
func newFakeTopologyManager() topologymanager.Manager {
return &fakeTopologyManager{}
}
func (m *fakeTopologyManager) GetAffinity(podUID string, containerName string) topologymanager.TopologyHint {
// return hint with numa2 set
affinity, _ := bitmask.NewBitMask(2)
return topologymanager.TopologyHint{
NUMANodeAffinity: affinity,
Preferred: true,
// 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, containerID string) error {
m.t.Logf("[fake topologymanager] AddContainer pod: %v container id: %v", format.Pod(pod), containerID)
return nil
}
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",