diff --git a/pkg/kubelet/kubelet_test.go b/pkg/kubelet/kubelet_test.go index d3d7940c7f3..75d16b86a79 100644 --- a/pkg/kubelet/kubelet_test.go +++ b/pkg/kubelet/kubelet_test.go @@ -1462,6 +1462,27 @@ func TestMakeEnvironmentVariables(t *testing.T) { } } +func waitingState(cName string) api.ContainerStatus { + return api.ContainerStatus{ + Name: cName, + State: api.ContainerState{ + Waiting: &api.ContainerStateWaiting{}, + }, + } +} +func waitingStateWithLastTermination(cName string) api.ContainerStatus { + return api.ContainerStatus{ + Name: cName, + State: api.ContainerState{ + Waiting: &api.ContainerStateWaiting{}, + }, + LastTerminationState: api.ContainerState{ + Terminated: &api.ContainerStateTerminated{ + ExitCode: 0, + }, + }, + } +} func runningState(cName string) api.ContainerStatus { return api.ContainerStatus{ Name: cName, @@ -1566,6 +1587,32 @@ func TestPodPhaseWithRestartAlways(t *testing.T) { api.PodPending, "mixed state #2 with restart always", }, + { + &api.Pod{ + Spec: desiredState, + Status: api.PodStatus{ + ContainerStatuses: []api.ContainerStatus{ + runningState("containerA"), + waitingState("containerB"), + }, + }, + }, + api.PodPending, + "mixed state #3 with restart always", + }, + { + &api.Pod{ + Spec: desiredState, + Status: api.PodStatus{ + ContainerStatuses: []api.ContainerStatus{ + runningState("containerA"), + waitingStateWithLastTermination("containerB"), + }, + }, + }, + api.PodRunning, + "backoff crashloop container with restart always", + }, } for _, test := range tests { if status := GetPhase(&test.pod.Spec, test.pod.Status.ContainerStatuses); status != test.status { @@ -1654,6 +1701,19 @@ func TestPodPhaseWithRestartNever(t *testing.T) { api.PodPending, "mixed state #2 with restart never", }, + { + &api.Pod{ + Spec: desiredState, + Status: api.PodStatus{ + ContainerStatuses: []api.ContainerStatus{ + runningState("containerA"), + waitingState("containerB"), + }, + }, + }, + api.PodPending, + "mixed state #3 with restart never", + }, } for _, test := range tests { if status := GetPhase(&test.pod.Spec, test.pod.Status.ContainerStatuses); status != test.status { @@ -1742,6 +1802,32 @@ func TestPodPhaseWithRestartOnFailure(t *testing.T) { api.PodPending, "mixed state #2 with restart onfailure", }, + { + &api.Pod{ + Spec: desiredState, + Status: api.PodStatus{ + ContainerStatuses: []api.ContainerStatus{ + runningState("containerA"), + waitingState("containerB"), + }, + }, + }, + api.PodPending, + "mixed state #3 with restart onfailure", + }, + { + &api.Pod{ + Spec: desiredState, + Status: api.PodStatus{ + ContainerStatuses: []api.ContainerStatus{ + runningState("containerA"), + waitingStateWithLastTermination("containerB"), + }, + }, + }, + api.PodRunning, + "backoff crashloop container with restart onfailure", + }, } for _, test := range tests { if status := GetPhase(&test.pod.Spec, test.pod.Status.ContainerStatuses); status != test.status {