Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 94 additions & 0 deletions pkg/device/pod_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -299,6 +299,100 @@ func TestAddPod(t *testing.T) {
}
}

func TestAddPod_UpdateExistingDevices(t *testing.T) {
podManager := NewPodManager()

pod := &corev1.Pod{
ObjectMeta: metav1.ObjectMeta{
Namespace: "default",
Name: "pod1",
UID: k8stypes.UID("uid1"),
},
}

added := podManager.AddPod(pod, "node1", PodDevices{"device1": {{}}})
assert.True(t, added, "AddPod should report true for a new pod")

updatedAgain := podManager.AddPod(pod, "node2", PodDevices{"device1": {{{UUID: "GPU-1"}}}})
assert.False(t, updatedAgain, "AddPod should report false when the pod already exists")

pi, ok := podManager.GetPod(pod)
assert.True(t, ok)
assert.Equal(t, "node1", pi.NodeID, "NodeID should be unchanged on update")
assert.Equal(t, PodDevices{"device1": {{{UUID: "GPU-1"}}}}, pi.Devices, "Devices should be replaced with the new value")
}

func TestDelPod(t *testing.T) {
podManager := NewPodManager()

pod := &corev1.Pod{
ObjectMeta: metav1.ObjectMeta{
Namespace: "default",
Name: "pod1",
UID: k8stypes.UID("uid1"),
},
}
podManager.AddPod(pod, "node1", PodDevices{"device1": {{}}})

_, ok := podManager.GetPod(pod)
assert.True(t, ok, "pod should be present before deletion")

podManager.DelPod(pod)
_, ok = podManager.GetPod(pod)
assert.False(t, ok, "pod should be absent after deletion")

assert.NotPanics(t, func() {
podManager.DelPod(pod)
})

unknownPod := &corev1.Pod{
ObjectMeta: metav1.ObjectMeta{
Namespace: "default",
Name: "ghost-pod",
UID: k8stypes.UID("uid-ghost"),
},
}
assert.NotPanics(t, func() {
podManager.DelPod(unknownPod)
})
}

func TestListPodsUID(t *testing.T) {
podManager := NewPodManager()

uids, err := podManager.ListPodsUID()
assert.NoError(t, err)
assert.Empty(t, uids, "expected no pods when the manager is empty")

pod1 := &corev1.Pod{
ObjectMeta: metav1.ObjectMeta{
Namespace: "default",
Name: "pod1",
UID: k8stypes.UID("uid1"),
},
}
pod2 := &corev1.Pod{
ObjectMeta: metav1.ObjectMeta{
Namespace: "default",
Name: "pod2",
UID: k8stypes.UID("uid2"),
},
}
podManager.AddPod(pod1, "node1", PodDevices{"device1": {{}}})
podManager.AddPod(pod2, "node2", PodDevices{"device2": {{}}})

uids, err = podManager.ListPodsUID()
assert.NoError(t, err)
assert.Len(t, uids, 2, "expected one entry per tracked pod")

gotUIDs := make(map[k8stypes.UID]bool, len(uids))
for _, p := range uids {
gotUIDs[p.UID] = true
}
assert.True(t, gotUIDs[pod1.UID], "expected pod1's UID to be present")
assert.True(t, gotUIDs[pod2.UID], "expected pod2's UID to be present")
}

func TestUpdatePod(t *testing.T) {
podManager := NewPodManager()

Expand Down
Loading