mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 19:31:44 +00:00
Merge pull request #83664 from RainbowMango/pr_refactor_kubelet_ut_with_metrics_testutil
Refactor kubelet ut with metrics testutil
This commit is contained in:
commit
9646bd9736
@ -545,6 +545,11 @@ func Register(containerCache kubecontainer.RuntimeCache, collectors ...metrics.C
|
||||
})
|
||||
}
|
||||
|
||||
// GetGather returns the gatherer. It used by test case outside current package.
|
||||
func GetGather() metrics.Gatherer {
|
||||
return legacyregistry.DefaultGatherer
|
||||
}
|
||||
|
||||
// SinceInMicroseconds gets the time since the specified start in microseconds.
|
||||
func SinceInMicroseconds(start time.Time) float64 {
|
||||
return float64(time.Since(start).Nanoseconds() / time.Microsecond.Nanoseconds())
|
||||
|
@ -37,7 +37,7 @@ go_test(
|
||||
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library",
|
||||
"//vendor/github.com/prometheus/client_model/go:go_default_library",
|
||||
"//staging/src/k8s.io/component-base/metrics/testutil:go_default_library",
|
||||
"//vendor/github.com/stretchr/testify/assert:go_default_library",
|
||||
],
|
||||
)
|
||||
|
@ -21,14 +21,16 @@ import (
|
||||
"fmt"
|
||||
"reflect"
|
||||
"sort"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
dto "github.com/prometheus/client_model/go"
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
"k8s.io/apimachinery/pkg/util/clock"
|
||||
"k8s.io/apimachinery/pkg/util/diff"
|
||||
"k8s.io/component-base/metrics/testutil"
|
||||
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
|
||||
containertest "k8s.io/kubernetes/pkg/kubelet/container/testing"
|
||||
"k8s.io/kubernetes/pkg/kubelet/metrics"
|
||||
@ -672,22 +674,39 @@ func TestRunningPodAndContainerCount(t *testing.T) {
|
||||
|
||||
pleg.relist()
|
||||
|
||||
// assert for container count with label "running"
|
||||
actualMetricRunningContainerCount := &dto.Metric{}
|
||||
expectedMetricRunningContainerCount := float64(1)
|
||||
metrics.RunningContainerCount.WithLabelValues(string(kubecontainer.ContainerStateRunning)).Write(actualMetricRunningContainerCount)
|
||||
assert.Equal(t, expectedMetricRunningContainerCount, actualMetricRunningContainerCount.GetGauge().GetValue())
|
||||
|
||||
// assert for container count with label "unknown"
|
||||
actualMetricUnknownContainerCount := &dto.Metric{}
|
||||
expectedMetricUnknownContainerCount := float64(2)
|
||||
metrics.RunningContainerCount.WithLabelValues(string(kubecontainer.ContainerStateUnknown)).Write(actualMetricUnknownContainerCount)
|
||||
assert.Equal(t, expectedMetricUnknownContainerCount, actualMetricUnknownContainerCount.GetGauge().GetValue())
|
||||
|
||||
// assert for running pod count
|
||||
actualMetricRunningPodCount := &dto.Metric{}
|
||||
metrics.RunningPodCount.Write(actualMetricRunningPodCount)
|
||||
expectedMetricRunningPodCount := float64(2)
|
||||
assert.Equal(t, expectedMetricRunningPodCount, actualMetricRunningPodCount.GetGauge().GetValue())
|
||||
tests := []struct {
|
||||
name string
|
||||
metricsName string
|
||||
wants string
|
||||
}{
|
||||
{
|
||||
name: "test container count",
|
||||
metricsName: "kubelet_running_container_count",
|
||||
wants: `
|
||||
# HELP kubelet_running_container_count [ALPHA] Number of containers currently running
|
||||
# TYPE kubelet_running_container_count gauge
|
||||
kubelet_running_container_count{container_state="exited"} 1
|
||||
kubelet_running_container_count{container_state="running"} 1
|
||||
kubelet_running_container_count{container_state="unknown"} 2
|
||||
`,
|
||||
},
|
||||
{
|
||||
name: "test pod count",
|
||||
metricsName: "kubelet_running_pod_count",
|
||||
wants: `
|
||||
# HELP kubelet_running_pod_count [ALPHA] Number of pods currently running
|
||||
# TYPE kubelet_running_pod_count gauge
|
||||
kubelet_running_pod_count 2
|
||||
`,
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
tc := test
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
if err := testutil.GatherAndCompare(metrics.GetGather(), strings.NewReader(tc.wants), tc.metricsName); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user