mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 03:41:45 +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.
|
// SinceInMicroseconds gets the time since the specified start in microseconds.
|
||||||
func SinceInMicroseconds(start time.Time) float64 {
|
func SinceInMicroseconds(start time.Time) float64 {
|
||||||
return float64(time.Since(start).Nanoseconds() / time.Microsecond.Nanoseconds())
|
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/types:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/clock: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",
|
"//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",
|
"//vendor/github.com/stretchr/testify/assert:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
@ -21,14 +21,16 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
"sort"
|
"sort"
|
||||||
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
dto "github.com/prometheus/client_model/go"
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
"k8s.io/apimachinery/pkg/util/clock"
|
"k8s.io/apimachinery/pkg/util/clock"
|
||||||
"k8s.io/apimachinery/pkg/util/diff"
|
"k8s.io/apimachinery/pkg/util/diff"
|
||||||
|
"k8s.io/component-base/metrics/testutil"
|
||||||
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
|
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
|
||||||
containertest "k8s.io/kubernetes/pkg/kubelet/container/testing"
|
containertest "k8s.io/kubernetes/pkg/kubelet/container/testing"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/metrics"
|
"k8s.io/kubernetes/pkg/kubelet/metrics"
|
||||||
@ -672,22 +674,39 @@ func TestRunningPodAndContainerCount(t *testing.T) {
|
|||||||
|
|
||||||
pleg.relist()
|
pleg.relist()
|
||||||
|
|
||||||
// assert for container count with label "running"
|
tests := []struct {
|
||||||
actualMetricRunningContainerCount := &dto.Metric{}
|
name string
|
||||||
expectedMetricRunningContainerCount := float64(1)
|
metricsName string
|
||||||
metrics.RunningContainerCount.WithLabelValues(string(kubecontainer.ContainerStateRunning)).Write(actualMetricRunningContainerCount)
|
wants string
|
||||||
assert.Equal(t, expectedMetricRunningContainerCount, actualMetricRunningContainerCount.GetGauge().GetValue())
|
}{
|
||||||
|
{
|
||||||
// assert for container count with label "unknown"
|
name: "test container count",
|
||||||
actualMetricUnknownContainerCount := &dto.Metric{}
|
metricsName: "kubelet_running_container_count",
|
||||||
expectedMetricUnknownContainerCount := float64(2)
|
wants: `
|
||||||
metrics.RunningContainerCount.WithLabelValues(string(kubecontainer.ContainerStateUnknown)).Write(actualMetricUnknownContainerCount)
|
# HELP kubelet_running_container_count [ALPHA] Number of containers currently running
|
||||||
assert.Equal(t, expectedMetricUnknownContainerCount, actualMetricUnknownContainerCount.GetGauge().GetValue())
|
# TYPE kubelet_running_container_count gauge
|
||||||
|
kubelet_running_container_count{container_state="exited"} 1
|
||||||
// assert for running pod count
|
kubelet_running_container_count{container_state="running"} 1
|
||||||
actualMetricRunningPodCount := &dto.Metric{}
|
kubelet_running_container_count{container_state="unknown"} 2
|
||||||
metrics.RunningPodCount.Write(actualMetricRunningPodCount)
|
`,
|
||||||
expectedMetricRunningPodCount := float64(2)
|
},
|
||||||
assert.Equal(t, expectedMetricRunningPodCount, actualMetricRunningPodCount.GetGauge().GetValue())
|
{
|
||||||
|
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