add unit test

This commit is contained in:
zhifei92 2024-05-16 22:38:32 +08:00
parent df87982950
commit 86e0ed1892

View File

@ -445,22 +445,32 @@ func shuffle(statuses []v1.ContainerStatus) []v1.ContainerStatus {
}
func TestStatusEquality(t *testing.T) {
pod := v1.Pod{
Spec: v1.PodSpec{},
}
containerStatus := []v1.ContainerStatus{}
for i := 0; i < 10; i++ {
s := v1.ContainerStatus{
Name: fmt.Sprintf("container%d", i),
getContainersAndStatuses := func() ([]v1.Container, []v1.ContainerStatus) {
var containers []v1.Container
var containerStatuses []v1.ContainerStatus
for i := 0; i < 10; i++ {
containerName := fmt.Sprintf("container%d", i)
containers = append(containers, v1.Container{Name: containerName})
containerStatuses = append(containerStatuses, v1.ContainerStatus{Name: containerName})
}
containerStatus = append(containerStatus, s)
return containers, containerStatuses
}
containers, containerStatuses := getContainersAndStatuses()
pod := v1.Pod{
Spec: v1.PodSpec{
InitContainers: containers,
},
}
podStatus := v1.PodStatus{
ContainerStatuses: containerStatus,
ContainerStatuses: containerStatuses,
InitContainerStatuses: containerStatuses,
EphemeralContainerStatuses: containerStatuses,
}
for i := 0; i < 10; i++ {
oldPodStatus := v1.PodStatus{
ContainerStatuses: shuffle(podStatus.ContainerStatuses),
ContainerStatuses: shuffle(podStatus.ContainerStatuses),
InitContainerStatuses: shuffle(podStatus.InitContainerStatuses),
EphemeralContainerStatuses: shuffle(podStatus.EphemeralContainerStatuses),
}
normalizeStatus(&pod, &oldPodStatus)
normalizeStatus(&pod, &podStatus)
@ -504,8 +514,9 @@ func TestStatusNormalizationEnforcesMaxBytes(t *testing.T) {
containerStatus = append(containerStatus, s)
}
podStatus := v1.PodStatus{
InitContainerStatuses: containerStatus[:24],
ContainerStatuses: containerStatus[24:],
InitContainerStatuses: containerStatus[:16],
ContainerStatuses: containerStatus[16:32],
EphemeralContainerStatuses: containerStatus[32:],
}
result := normalizeStatus(&pod, &podStatus)
count := 0
@ -521,6 +532,49 @@ func TestStatusNormalizationEnforcesMaxBytes(t *testing.T) {
}
}
func TestStatusNormalizeTimeStamp(t *testing.T) {
pod := v1.Pod{
Spec: v1.PodSpec{},
}
now := metav1.Now()
podStatus := v1.PodStatus{
ContainerStatuses: []v1.ContainerStatus{
{State: v1.ContainerState{Running: &v1.ContainerStateRunning{StartedAt: now}}},
{State: v1.ContainerState{Terminated: &v1.ContainerStateTerminated{StartedAt: now, FinishedAt: now}}},
},
InitContainerStatuses: []v1.ContainerStatus{
{State: v1.ContainerState{Running: &v1.ContainerStateRunning{StartedAt: now}}},
{State: v1.ContainerState{Terminated: &v1.ContainerStateTerminated{StartedAt: now, FinishedAt: now}}},
},
EphemeralContainerStatuses: []v1.ContainerStatus{
{State: v1.ContainerState{Running: &v1.ContainerStateRunning{StartedAt: now}}},
{State: v1.ContainerState{Terminated: &v1.ContainerStateTerminated{StartedAt: now, FinishedAt: now}}},
},
}
expectedTime := now.DeepCopy().Rfc3339Copy()
expectedPodStatus := v1.PodStatus{
ContainerStatuses: []v1.ContainerStatus{
{State: v1.ContainerState{Running: &v1.ContainerStateRunning{StartedAt: expectedTime}}},
{State: v1.ContainerState{Terminated: &v1.ContainerStateTerminated{StartedAt: expectedTime, FinishedAt: expectedTime}}},
},
InitContainerStatuses: []v1.ContainerStatus{
{State: v1.ContainerState{Running: &v1.ContainerStateRunning{StartedAt: expectedTime}}},
{State: v1.ContainerState{Terminated: &v1.ContainerStateTerminated{StartedAt: expectedTime, FinishedAt: expectedTime}}},
},
EphemeralContainerStatuses: []v1.ContainerStatus{
{State: v1.ContainerState{Running: &v1.ContainerStateRunning{StartedAt: expectedTime}}},
{State: v1.ContainerState{Terminated: &v1.ContainerStateTerminated{StartedAt: expectedTime, FinishedAt: expectedTime}}},
},
}
normalizedStatus := normalizeStatus(&pod, &podStatus)
if !isPodStatusByKubeletEqual(&expectedPodStatus, normalizedStatus) {
t.Fatalf("The timestamp is not correctly converted to RFC3339 format.")
}
}
func TestStaticPod(t *testing.T) {
staticPod := getTestPod()
staticPod.Annotations = map[string]string{kubetypes.ConfigSourceAnnotationKey: "file"}