From debe2f7b4385f26500a17766e007a84134cb6c08 Mon Sep 17 00:00:00 2001 From: RainbowMango Date: Wed, 9 Oct 2019 14:50:45 +0800 Subject: [PATCH 1/2] Refactor TestRunningPodAndContainerCount with metrics testutil --- pkg/kubelet/metrics/metrics.go | 5 +++ pkg/kubelet/pleg/generic_test.go | 55 +++++++++++++++++++++----------- 2 files changed, 42 insertions(+), 18 deletions(-) diff --git a/pkg/kubelet/metrics/metrics.go b/pkg/kubelet/metrics/metrics.go index 48b7beef00c..ea98206496b 100644 --- a/pkg/kubelet/metrics/metrics.go +++ b/pkg/kubelet/metrics/metrics.go @@ -530,6 +530,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()) diff --git a/pkg/kubelet/pleg/generic_test.go b/pkg/kubelet/pleg/generic_test.go index 46da6e39ed7..0107dfd4be6 100644 --- a/pkg/kubelet/pleg/generic_test.go +++ b/pkg/kubelet/pleg/generic_test.go @@ -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) + } + }) + } } From 6099d4904698fbc3572a75b0ea01bc180b683fd6 Mon Sep 17 00:00:00 2001 From: RainbowMango Date: Wed, 9 Oct 2019 15:12:21 +0800 Subject: [PATCH 2/2] Deal with auto-generated files. - Update bazel by hack/update-bazel.sh --- pkg/kubelet/pleg/BUILD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/kubelet/pleg/BUILD b/pkg/kubelet/pleg/BUILD index c6bf885ce8a..1f3a3be0fdd 100644 --- a/pkg/kubelet/pleg/BUILD +++ b/pkg/kubelet/pleg/BUILD @@ -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", ], )