k9s/internal/resource/pod_int_test.go

118 lines
1.9 KiB
Go

package resource
import (
"testing"
"github.com/stretchr/testify/assert"
v1 "k8s.io/api/core/v1"
)
func TestPodStatuses(t *testing.T) {
type counts struct {
ready, terminated, restarts int
}
uu := []struct {
s []v1.ContainerStatus
e counts
}{
{
[]v1.ContainerStatus{
{
Name: "c1",
Ready: true,
State: v1.ContainerState{
Running: &v1.ContainerStateRunning{},
},
},
{
Name: "c2",
Ready: false,
RestartCount: 10,
State: v1.ContainerState{
Terminated: &v1.ContainerStateTerminated{},
},
},
},
counts{1, 1, 10},
},
}
var p Pod
for _, u := range uu {
cr, ct, cs := p.statuses(u.s)
assert.Equal(t, u.e.ready, cr)
assert.Equal(t, u.e.terminated, ct)
assert.Equal(t, u.e.restarts, cs)
}
}
func TestPodPhase(t *testing.T) {
uu := []struct {
s v1.PodStatus
e string
}{
{
v1.PodStatus{
ContainerStatuses: []v1.ContainerStatus{
{
Name: "c1",
State: v1.ContainerState{
Running: &v1.ContainerStateRunning{},
},
},
},
},
"Running",
},
{
v1.PodStatus{
ContainerStatuses: []v1.ContainerStatus{
{
Name: "c1",
State: v1.ContainerState{
Waiting: &v1.ContainerStateWaiting{
Reason: "blee",
},
},
},
},
},
"blee",
},
{
v1.PodStatus{
ContainerStatuses: []v1.ContainerStatus{
{
Name: "c1",
State: v1.ContainerState{
Terminated: &v1.ContainerStateTerminated{},
},
},
},
},
"Terminating",
},
{
v1.PodStatus{
ContainerStatuses: []v1.ContainerStatus{
{
Name: "c1",
State: v1.ContainerState{
Terminated: &v1.ContainerStateTerminated{
Reason: "blee",
},
},
},
},
},
"blee",
},
}
var p Pod
for _, u := range uu {
assert.Equal(t, u.e, p.phase(u.s))
}
}