@@ -24,7 +24,6 @@ import (
24
24
"testing"
25
25
"time"
26
26
27
- dto "github.com/prometheus/client_model/go"
28
27
"github.com/stretchr/testify/assert"
29
28
30
29
corev1 "k8s.io/api/core/v1"
@@ -36,7 +35,7 @@ import (
36
35
"k8s.io/client-go/kubernetes/fake"
37
36
corelisters "k8s.io/client-go/listers/core/v1"
38
37
k8stesting "k8s.io/client-go/testing"
39
- compmetrics "k8s.io/component-base/metrics"
38
+ "k8s.io/component-base/metrics/testutil "
40
39
"k8s.io/kubernetes/pkg/controller"
41
40
"k8s.io/kubernetes/pkg/controller/endpointslice/metrics"
42
41
utilpointer "k8s.io/utils/pointer"
@@ -884,47 +883,61 @@ type expectedMetrics struct {
884
883
func expectMetrics (t * testing.T , em expectedMetrics ) {
885
884
t .Helper ()
886
885
887
- actualDesiredSlices := getGaugeMetricValue (t , metrics .DesiredEndpointSlices .WithLabelValues ())
886
+ actualDesiredSlices , err := testutil .GetGaugeMetricValue (metrics .DesiredEndpointSlices .WithLabelValues ())
887
+ handleErr (t , err , "desiredEndpointSlices" )
888
888
if actualDesiredSlices != float64 (em .desiredSlices ) {
889
889
t .Errorf ("Expected desiredEndpointSlices to be %d, got %v" , em .desiredSlices , actualDesiredSlices )
890
890
}
891
891
892
- actualNumSlices := getGaugeMetricValue (t , metrics .NumEndpointSlices .WithLabelValues ())
892
+ actualNumSlices , err := testutil .GetGaugeMetricValue (metrics .NumEndpointSlices .WithLabelValues ())
893
+ handleErr (t , err , "numEndpointSlices" )
893
894
if actualDesiredSlices != float64 (em .desiredSlices ) {
894
895
t .Errorf ("Expected numEndpointSlices to be %d, got %v" , em .actualSlices , actualNumSlices )
895
896
}
896
897
897
- actualEndpointsDesired := getGaugeMetricValue (t , metrics .EndpointsDesired .WithLabelValues ())
898
+ actualEndpointsDesired , err := testutil .GetGaugeMetricValue (metrics .EndpointsDesired .WithLabelValues ())
899
+ handleErr (t , err , "desiredEndpoints" )
898
900
if actualEndpointsDesired != float64 (em .desiredEndpoints ) {
899
901
t .Errorf ("Expected desiredEndpoints to be %d, got %v" , em .desiredEndpoints , actualEndpointsDesired )
900
902
}
901
903
902
- actualAddedPerSync := getHistogramMetricValue (t , metrics .EndpointsAddedPerSync .WithLabelValues ())
904
+ actualAddedPerSync , err := testutil .GetHistogramMetricValue (metrics .EndpointsAddedPerSync .WithLabelValues ())
905
+ handleErr (t , err , "endpointsAddedPerSync" )
903
906
if actualAddedPerSync != float64 (em .addedPerSync ) {
904
907
t .Errorf ("Expected endpointsAddedPerSync to be %d, got %v" , em .addedPerSync , actualAddedPerSync )
905
908
}
906
909
907
- actualRemovedPerSync := getHistogramMetricValue (t , metrics .EndpointsRemovedPerSync .WithLabelValues ())
910
+ actualRemovedPerSync , err := testutil .GetHistogramMetricValue (metrics .EndpointsRemovedPerSync .WithLabelValues ())
911
+ handleErr (t , err , "endpointsRemovedPerSync" )
908
912
if actualRemovedPerSync != float64 (em .removedPerSync ) {
909
913
t .Errorf ("Expected endpointsRemovedPerSync to be %d, got %v" , em .removedPerSync , actualRemovedPerSync )
910
914
}
911
915
912
- actualCreated := getCounterMetricValue (t , metrics .EndpointSliceChanges .WithLabelValues ("create" ))
916
+ actualCreated , err := testutil .GetCounterMetricValue (metrics .EndpointSliceChanges .WithLabelValues ("create" ))
917
+ handleErr (t , err , "endpointSliceChangesCreated" )
913
918
if actualCreated != float64 (em .numCreated ) {
914
919
t .Errorf ("Expected endpointSliceChangesCreated to be %d, got %v" , em .numCreated , actualCreated )
915
920
}
916
921
917
- actualUpdated := getCounterMetricValue (t , metrics .EndpointSliceChanges .WithLabelValues ("update" ))
922
+ actualUpdated , err := testutil .GetCounterMetricValue (metrics .EndpointSliceChanges .WithLabelValues ("update" ))
923
+ handleErr (t , err , "endpointSliceChangesUpdated" )
918
924
if actualUpdated != float64 (em .numUpdated ) {
919
925
t .Errorf ("Expected endpointSliceChangesUpdated to be %d, got %v" , em .numUpdated , actualUpdated )
920
926
}
921
927
922
- actualDeleted := getCounterMetricValue (t , metrics .EndpointSliceChanges .WithLabelValues ("delete" ))
928
+ actualDeleted , err := testutil .GetCounterMetricValue (metrics .EndpointSliceChanges .WithLabelValues ("delete" ))
929
+ handleErr (t , err , "desiredEndpointSlices" )
923
930
if actualDeleted != float64 (em .numDeleted ) {
924
931
t .Errorf ("Expected endpointSliceChangesDeleted to be %d, got %v" , em .numDeleted , actualDeleted )
925
932
}
926
933
}
927
934
935
+ func handleErr (t * testing.T , err error , metricName string ) {
936
+ if err != nil {
937
+ t .Errorf ("Failed to get %s value, err: %v" , metricName , err )
938
+ }
939
+ }
940
+
928
941
func setupMetrics () {
929
942
metrics .RegisterMetrics ()
930
943
metrics .NumEndpointSlices .Delete (map [string ]string {})
@@ -936,30 +949,3 @@ func setupMetrics() {
936
949
metrics .EndpointSliceChanges .Delete (map [string ]string {"operation" : "update" })
937
950
metrics .EndpointSliceChanges .Delete (map [string ]string {"operation" : "delete" })
938
951
}
939
-
940
- func getGaugeMetricValue (t * testing.T , metric compmetrics.GaugeMetric ) float64 {
941
- t .Helper ()
942
- metricProto := & dto.Metric {}
943
- if err := metric .Write (metricProto ); err != nil {
944
- t .Errorf ("Error writing metric: %v" , err )
945
- }
946
- return metricProto .Gauge .GetValue ()
947
- }
948
-
949
- func getCounterMetricValue (t * testing.T , metric compmetrics.CounterMetric ) float64 {
950
- t .Helper ()
951
- metricProto := & dto.Metric {}
952
- if err := metric .(compmetrics.Metric ).Write (metricProto ); err != nil {
953
- t .Errorf ("Error writing metric: %v" , err )
954
- }
955
- return metricProto .Counter .GetValue ()
956
- }
957
-
958
- func getHistogramMetricValue (t * testing.T , metric compmetrics.ObserverMetric ) float64 {
959
- t .Helper ()
960
- metricProto := & dto.Metric {}
961
- if err := metric .(compmetrics.Metric ).Write (metricProto ); err != nil {
962
- t .Errorf ("Error writing metric: %v" , err )
963
- }
964
- return metricProto .Histogram .GetSampleSum ()
965
- }
0 commit comments