160 lines
3.4 KiB
Go
160 lines
3.4 KiB
Go
// SPDX-License-Identifier: Apache-2.0
|
|
// Copyright Authors of K9s
|
|
|
|
package render
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
v1 "k8s.io/api/core/v1"
|
|
"k8s.io/apimachinery/pkg/api/resource"
|
|
mv1beta1 "k8s.io/metrics/pkg/apis/metrics/v1beta1"
|
|
)
|
|
|
|
func Test_gatherContainerMX(t *testing.T) {
|
|
uu := map[string]struct {
|
|
container v1.Container
|
|
mx *mv1beta1.ContainerMetrics
|
|
c, r metric
|
|
}{
|
|
"empty": {},
|
|
|
|
"amd-request": {
|
|
container: v1.Container{
|
|
Name: "fred",
|
|
Image: "img",
|
|
Resources: v1.ResourceRequirements{
|
|
Requests: v1.ResourceList{
|
|
v1.ResourceCPU: resource.MustParse("10m"),
|
|
v1.ResourceMemory: resource.MustParse("20Mi"),
|
|
"nvidia.com/gpu": resource.MustParse("1"),
|
|
},
|
|
},
|
|
},
|
|
mx: &mv1beta1.ContainerMetrics{
|
|
Name: "fred",
|
|
Usage: v1.ResourceList{
|
|
v1.ResourceCPU: resource.MustParse("10m"),
|
|
v1.ResourceMemory: resource.MustParse("20Mi"),
|
|
},
|
|
},
|
|
c: metric{
|
|
cpu: 10,
|
|
mem: 20971520,
|
|
},
|
|
r: metric{
|
|
cpu: 10,
|
|
gpu: 1,
|
|
mem: 20971520,
|
|
},
|
|
},
|
|
|
|
"amd-both": {
|
|
container: v1.Container{
|
|
Name: "fred",
|
|
Image: "img",
|
|
Resources: v1.ResourceRequirements{
|
|
Requests: v1.ResourceList{
|
|
v1.ResourceCPU: resource.MustParse("10m"),
|
|
v1.ResourceMemory: resource.MustParse("20Mi"),
|
|
"nvidia.com/gpu": resource.MustParse("1"),
|
|
},
|
|
Limits: v1.ResourceList{
|
|
v1.ResourceCPU: resource.MustParse("50m"),
|
|
v1.ResourceMemory: resource.MustParse("100Mi"),
|
|
"nvidia.com/gpu": resource.MustParse("2"),
|
|
},
|
|
},
|
|
},
|
|
mx: &mv1beta1.ContainerMetrics{
|
|
Name: "fred",
|
|
Usage: v1.ResourceList{
|
|
v1.ResourceCPU: resource.MustParse("10m"),
|
|
v1.ResourceMemory: resource.MustParse("20Mi"),
|
|
},
|
|
},
|
|
c: metric{
|
|
cpu: 10,
|
|
mem: 20971520,
|
|
},
|
|
r: metric{
|
|
cpu: 10,
|
|
gpu: 1,
|
|
mem: 20971520,
|
|
lcpu: 50,
|
|
lgpu: 2,
|
|
lmem: 104857600,
|
|
},
|
|
},
|
|
|
|
"amd-limits": {
|
|
container: v1.Container{
|
|
Name: "fred",
|
|
Image: "img",
|
|
Resources: v1.ResourceRequirements{
|
|
Limits: v1.ResourceList{
|
|
v1.ResourceCPU: resource.MustParse("50m"),
|
|
v1.ResourceMemory: resource.MustParse("100Mi"),
|
|
"nvidia.com/gpu": resource.MustParse("2"),
|
|
},
|
|
},
|
|
},
|
|
mx: &mv1beta1.ContainerMetrics{
|
|
Name: "fred",
|
|
Usage: v1.ResourceList{
|
|
v1.ResourceCPU: resource.MustParse("10m"),
|
|
v1.ResourceMemory: resource.MustParse("20Mi"),
|
|
},
|
|
},
|
|
c: metric{
|
|
cpu: 10,
|
|
mem: 20971520,
|
|
},
|
|
r: metric{
|
|
cpu: 50,
|
|
gpu: 2,
|
|
mem: 104857600,
|
|
lcpu: 50,
|
|
lgpu: 2,
|
|
lmem: 104857600,
|
|
},
|
|
},
|
|
|
|
"amd-no-mx": {
|
|
container: v1.Container{
|
|
Name: "fred",
|
|
Image: "img",
|
|
Resources: v1.ResourceRequirements{
|
|
Requests: v1.ResourceList{
|
|
v1.ResourceCPU: resource.MustParse("10m"),
|
|
v1.ResourceMemory: resource.MustParse("20Mi"),
|
|
"nvidia.com/gpu": resource.MustParse("1"),
|
|
},
|
|
Limits: v1.ResourceList{
|
|
v1.ResourceCPU: resource.MustParse("50m"),
|
|
v1.ResourceMemory: resource.MustParse("100Mi"),
|
|
"nvidia.com/gpu": resource.MustParse("2"),
|
|
},
|
|
},
|
|
},
|
|
r: metric{
|
|
cpu: 10,
|
|
gpu: 1,
|
|
mem: 20971520,
|
|
lcpu: 50,
|
|
lgpu: 2,
|
|
lmem: 104857600,
|
|
},
|
|
},
|
|
}
|
|
|
|
for k, u := range uu {
|
|
t.Run(k, func(t *testing.T) {
|
|
c, r := gatherContainerMX(&u.container, u.mx)
|
|
assert.Equal(t, u.c, c)
|
|
assert.Equal(t, u.r, r)
|
|
})
|
|
}
|
|
}
|