@@ -28,6 +28,11 @@ import (
28
28
"k8s.io/component-base/metrics/testutil"
29
29
)
30
30
31
+ const (
32
+ SidecarOperationMetric = "csi_sidecar_operations_seconds"
33
+ ProcessStartTimeMetric = "process_start_time_seconds"
34
+ )
35
+
31
36
func TestRecordMetrics (t * testing.T ) {
32
37
// Arrange
33
38
cmm := NewCSIMetricsManager (
@@ -62,7 +67,7 @@ func TestRecordMetrics(t *testing.T) {
62
67
`
63
68
64
69
if err := testutil .GatherAndCompare (
65
- cmm .GetRegistry (), strings .NewReader (expectedMetrics )); err != nil {
70
+ cmm .GetRegistry (), strings .NewReader (expectedMetrics ), SidecarOperationMetric ); err != nil {
66
71
t .Fatal (err )
67
72
}
68
73
}
@@ -101,7 +106,7 @@ func TestRecordMetrics_NoDriverName(t *testing.T) {
101
106
`
102
107
103
108
if err := testutil .GatherAndCompare (
104
- cmm .GetRegistry (), strings .NewReader (expectedMetrics )); err != nil {
109
+ cmm .GetRegistry (), strings .NewReader (expectedMetrics ), SidecarOperationMetric ); err != nil {
105
110
t .Fatal (err )
106
111
}
107
112
}
@@ -139,7 +144,7 @@ func TestRecordMetrics_Negative(t *testing.T) {
139
144
csi_sidecar_operations_seconds_count{driver_name="fake.csi.driver.io",grpc_status_code="InvalidArgument",method_name="myOperation"} 1
140
145
`
141
146
if err := testutil .GatherAndCompare (
142
- cmm .GetRegistry (), strings .NewReader (expectedMetrics )); err != nil {
147
+ cmm .GetRegistry (), strings .NewReader (expectedMetrics ), SidecarOperationMetric ); err != nil {
143
148
t .Fatal (err )
144
149
}
145
150
}
@@ -197,7 +202,35 @@ func TestStartMetricsEndPoint_Noop(t *testing.T) {
197
202
`
198
203
199
204
actualMetrics := string (contentBytes )
200
- if err := VerifyMetricsMatch (expectedMetrics , actualMetrics , "" ); err != nil {
205
+ if err := VerifyMetricsMatch (expectedMetrics , actualMetrics , ProcessStartTimeMetric ); err != nil {
201
206
t .Fatalf ("Metrics returned by end point do not match expectation: %v" , err )
202
207
}
203
208
}
209
+
210
+ func TestProcessStartTimeMetricExist (t * testing.T ) {
211
+ // Arrange
212
+ cmm := NewCSIMetricsManager (
213
+ "fake.csi.driver.io" /* driverName */ )
214
+ operationDuration , _ := time .ParseDuration ("20s" )
215
+
216
+ // Act
217
+ cmm .RecordMetrics (
218
+ "/csi.v1.Controller/ControllerGetCapabilities" , /* operationName */
219
+ nil , /* operationErr */
220
+ operationDuration /* operationDuration */ )
221
+
222
+ // Assert
223
+ metricsFamilies , err := cmm .GetRegistry ().Gather ()
224
+ if err != nil {
225
+ t .Fatalf ("Error fetching metrics: %v" , err )
226
+ }
227
+
228
+ // check process_start_time_seconds exist
229
+ for _ , metricsFamily := range metricsFamilies {
230
+ if metricsFamily .GetName () == ProcessStartTimeMetric {
231
+ return
232
+ }
233
+ }
234
+
235
+ t .Fatalf ("Metrics does not contain %v. Scraped content: %v" , ProcessStartTimeMetric , metricsFamilies )
236
+ }
0 commit comments