add unit test
This commit is contained in:
parent
692f8aab27
commit
997cefc9da
@ -111,7 +111,7 @@ func TestNewManagerImplStartProbeMode(t *testing.T) {
|
|||||||
socketDir, socketName, pluginSocketName, err := tmpSocketDir()
|
socketDir, socketName, pluginSocketName, err := tmpSocketDir()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
defer os.RemoveAll(socketDir)
|
defer os.RemoveAll(socketDir)
|
||||||
m, _, p, _ := setupInProbeMode(t, []*pluginapi.Device{}, func(n string, d []pluginapi.Device) {}, socketName, pluginSocketName)
|
m, _, p, _ := setupInProbeMode(t, []*pluginapi.Device{}, func(n string, d []pluginapi.Device) {}, socketName, pluginSocketName, nil)
|
||||||
cleanup(t, m, p)
|
cleanup(t, m, p)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -201,7 +201,7 @@ func TestDevicePluginReRegistrationProbeMode(t *testing.T) {
|
|||||||
{ID: "Dev3", Health: pluginapi.Healthy},
|
{ID: "Dev3", Health: pluginapi.Healthy},
|
||||||
}
|
}
|
||||||
|
|
||||||
m, ch, p1, _ := setupInProbeMode(t, devs, nil, socketName, pluginSocketName)
|
m, ch, p1, _ := setupInProbeMode(t, devs, nil, socketName, pluginSocketName, nil)
|
||||||
|
|
||||||
// Wait for the first callback to be issued.
|
// Wait for the first callback to be issued.
|
||||||
select {
|
select {
|
||||||
@ -252,9 +252,10 @@ func TestDevicePluginReRegistrationProbeMode(t *testing.T) {
|
|||||||
cleanup(t, m, p1)
|
cleanup(t, m, p1)
|
||||||
}
|
}
|
||||||
|
|
||||||
func setupDeviceManager(t *testing.T, devs []*pluginapi.Device, callback monitorCallback, socketName string) (Manager, <-chan interface{}) {
|
func setupDeviceManager(t *testing.T, devs []*pluginapi.Device, callback monitorCallback, socketName string,
|
||||||
|
topology []cadvisorapi.Node) (Manager, <-chan interface{}) {
|
||||||
topologyStore := topologymanager.NewFakeManager()
|
topologyStore := topologymanager.NewFakeManager()
|
||||||
m, err := newManagerImpl(socketName, nil, topologyStore)
|
m, err := newManagerImpl(socketName, topology, topologyStore)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
updateChan := make(chan interface{})
|
updateChan := make(chan interface{})
|
||||||
|
|
||||||
@ -302,13 +303,13 @@ func runPluginManager(pluginManager pluginmanager.PluginManager) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func setup(t *testing.T, devs []*pluginapi.Device, callback monitorCallback, socketName string, pluginSocketName string) (Manager, <-chan interface{}, *plugin.Stub) {
|
func setup(t *testing.T, devs []*pluginapi.Device, callback monitorCallback, socketName string, pluginSocketName string) (Manager, <-chan interface{}, *plugin.Stub) {
|
||||||
m, updateChan := setupDeviceManager(t, devs, callback, socketName)
|
m, updateChan := setupDeviceManager(t, devs, callback, socketName, nil)
|
||||||
p := setupDevicePlugin(t, devs, pluginSocketName)
|
p := setupDevicePlugin(t, devs, pluginSocketName)
|
||||||
return m, updateChan, p
|
return m, updateChan, p
|
||||||
}
|
}
|
||||||
|
|
||||||
func setupInProbeMode(t *testing.T, devs []*pluginapi.Device, callback monitorCallback, socketName string, pluginSocketName string) (Manager, <-chan interface{}, *plugin.Stub, pluginmanager.PluginManager) {
|
func setupInProbeMode(t *testing.T, devs []*pluginapi.Device, callback monitorCallback, socketName string, pluginSocketName string, topology []cadvisorapi.Node) (Manager, <-chan interface{}, *plugin.Stub, pluginmanager.PluginManager) {
|
||||||
m, updateChan := setupDeviceManager(t, devs, callback, socketName)
|
m, updateChan := setupDeviceManager(t, devs, callback, socketName, topology)
|
||||||
p := setupDevicePlugin(t, devs, pluginSocketName)
|
p := setupDevicePlugin(t, devs, pluginSocketName)
|
||||||
pm := setupPluginManager(t, pluginSocketName, m)
|
pm := setupPluginManager(t, pluginSocketName, m)
|
||||||
return m, updateChan, p, pm
|
return m, updateChan, p, pm
|
||||||
@ -1403,3 +1404,44 @@ func TestReadPreNUMACheckpoint(t *testing.T) {
|
|||||||
err = m.readCheckpoint()
|
err = m.readCheckpoint()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGetTopologyHintsWithUpdates(t *testing.T) {
|
||||||
|
socketDir, socketName, pluginSocketName, err := tmpSocketDir()
|
||||||
|
defer os.RemoveAll(socketDir)
|
||||||
|
testPod := makePod(v1.ResourceList{
|
||||||
|
testResourceName: *resource.NewQuantity(int64(1), resource.DecimalSI)})
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
devs := []*pluginapi.Device{}
|
||||||
|
for i := 0; i < 5000; i++ {
|
||||||
|
devs = append(devs, &pluginapi.Device{
|
||||||
|
ID: fmt.Sprintf("dev-%d", i),
|
||||||
|
Health: pluginapi.Healthy,
|
||||||
|
Topology: &pluginapi.TopologyInfo{
|
||||||
|
Nodes: []*pluginapi.NUMANode{
|
||||||
|
{ID: 0},
|
||||||
|
},
|
||||||
|
}})
|
||||||
|
}
|
||||||
|
topology := []cadvisorapi.Node{
|
||||||
|
{Id: 0},
|
||||||
|
}
|
||||||
|
m, ch, p1, _ := setupInProbeMode(t, devs, nil, socketName, pluginSocketName, topology)
|
||||||
|
|
||||||
|
<-ch
|
||||||
|
go func() {
|
||||||
|
p1.Update(devs)
|
||||||
|
}()
|
||||||
|
|
||||||
|
updated := false
|
||||||
|
for i := 0; i < 5000 && !updated; i++ {
|
||||||
|
m.GetTopologyHints(testPod, &testPod.Spec.Containers[0])
|
||||||
|
select {
|
||||||
|
case <-ch:
|
||||||
|
updated = true
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cleanup(t, m, p1)
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user