k9s/internal/resource/container_test.go

111 lines
2.1 KiB
Go

package resource
import (
"testing"
"github.com/stretchr/testify/assert"
v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
)
func TestProbe(t *testing.T) {
uu := map[string]struct {
probe *v1.Probe
e string
}{
"defined": {&v1.Probe{}, "on"},
"undefined": {nil, "off"},
}
for k, u := range uu {
t.Run(k, func(t *testing.T) {
assert.Equal(t, u.e, probe(u.probe))
})
}
}
func TestAsMi(t *testing.T) {
uu := map[string]struct {
mem int64
e float64
}{
"zero": {0, 0},
"1Mb": {1024 * 1024, 1.048576e+06},
"10Mb": {10 * 1024 * 1024, 1.048576e+07},
}
for k, u := range uu {
t.Run(k, func(t *testing.T) {
assert.Equal(t, u.e, asMi(u.mem))
})
}
}
func TestToRes(t *testing.T) {
uu := map[string]struct {
res v1.ResourceList
ecpu, emem string
}{
"cool": {v1.ResourceList{
v1.ResourceCPU: toQty("10m"),
v1.ResourceMemory: toQty("20Mi"),
},
"10", "20"},
"noRes": {v1.ResourceList{},
"0", "0"},
}
for k, u := range uu {
t.Run(k, func(t *testing.T) {
cpu, mem := toRes(u.res)
assert.Equal(t, u.ecpu, cpu)
assert.Equal(t, u.emem, mem)
})
}
}
func TestToState(t *testing.T) {
uu := map[string]struct {
state v1.ContainerState
e string
}{
"empty": {v1.ContainerState{},
MissingValue},
"running": {
v1.ContainerState{Running: &v1.ContainerStateRunning{}},
"Running",
},
"waiting": {
v1.ContainerState{Waiting: &v1.ContainerStateWaiting{}},
"Waiting",
},
"waitingReason": {
v1.ContainerState{Waiting: &v1.ContainerStateWaiting{Reason: "blee"}},
"blee",
},
"terminated": {
v1.ContainerState{Terminated: &v1.ContainerStateTerminated{}},
"Terminated",
},
"terminatedReason": {
v1.ContainerState{Terminated: &v1.ContainerStateTerminated{Reason: "blee"}},
"blee",
},
}
for k, u := range uu {
t.Run(k, func(t *testing.T) {
assert.Equal(t, u.e, toState(u.state))
})
}
}
// ----------------------------------------------------------------------------
// Helpers...
func toQty(s string) resource.Quantity {
q, _ := resource.ParseQuantity(s)
return q
}