k9s/internal/watch/helper_test.go

82 lines
1.8 KiB
Go

package watch
import (
"strconv"
"testing"
"gotest.tools/assert"
v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
mv1beta1 "k8s.io/metrics/pkg/apis/metrics/v1beta1"
)
func TestMetaFQN(t *testing.T) {
uu := map[string]struct {
m metav1.ObjectMeta
e string
}{
"full": {metav1.ObjectMeta{Namespace: "fred", Name: "blee"}, "fred/blee"},
}
for k, v := range uu {
t.Run(k, func(t *testing.T) {
assert.Equal(t, v.e, MetaFQN(v.m))
})
}
}
func TestMxResourceDiff(t *testing.T) {
uu := map[string]struct {
r1, r2 v1.ResourceList
e bool
}{
"same": {makeRes("0m", "0Mi"), makeRes("0m", "0Mi"), false},
"omem": {makeRes("0m", "10Mi"), makeRes("0m", "1Mi"), true},
"nmem": {makeRes("0m", "0Mi"), makeRes("0m", "1Mi"), true},
"ocpu": {makeRes("1m", "0Mi"), makeRes("0m", "0Mi"), true},
"ncpu": {makeRes("1m", "0Mi"), makeRes("2m", "0Mi"), true},
}
for k, v := range uu {
t.Run(k, func(t *testing.T) {
assert.Equal(t, v.e, resourceDiff(v.r1, v.r2))
})
}
}
// ----------------------------------------------------------------------------
// Helpers...
func makeRes(c, m string) v1.ResourceList {
cpu, _ := resource.ParseQuantity(c)
mem, _ := resource.ParseQuantity(m)
return v1.ResourceList{
v1.ResourceCPU: cpu,
v1.ResourceMemory: mem,
}
}
func makePodMxCo(name, cpu, mem string, co int) *mv1beta1.PodMetrics {
mx := makePodMx(name)
for i := 0; i < co; i++ {
mx.Containers = append(
mx.Containers,
mv1beta1.ContainerMetrics{
Name: "c" + strconv.Itoa(i),
Usage: makeRes(cpu, mem)})
}
return mx
}
func makePodMx(name string) *mv1beta1.PodMetrics {
return &mv1beta1.PodMetrics{
ObjectMeta: metav1.ObjectMeta{
Name: name,
Namespace: "default",
},
}
}