Skip to content

Commit 58b12a0

Browse files
committed
Add process_start_time_seconds metric into csi metric lib
1 parent fb645ec commit 58b12a0

File tree

2 files changed

+21
-12
lines changed

2 files changed

+21
-12
lines changed

metrics/metrics.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,7 @@ func VerifyMetricsMatch(expectedMetrics, actualMetrics string, metricToIgnore st
357357
wantScanner.Scan()
358358
wantLine := strings.TrimSpace(wantScanner.Text())
359359
gotLine := strings.TrimSpace(gotScanner.Text())
360-
if wantLine != gotLine && (metricToIgnore == "" || !strings.HasPrefix(gotLine, metricToIgnore)) {
360+
if wantLine != gotLine && (metricToIgnore == "" || !strings.HasPrefix(gotLine, metricToIgnore)) && !strings.HasPrefix(gotLine, "#") {
361361
return fmt.Errorf("\r\nMetric Want: %q\r\nMetric Got: %q\r\n", wantLine, gotLine)
362362
}
363363
}
@@ -366,6 +366,7 @@ func VerifyMetricsMatch(expectedMetrics, actualMetrics string, metricToIgnore st
366366
}
367367

368368
func (cmm *csiMetricsManager) registerMetrics() {
369+
metrics.RegisterProcessStartTime(cmm.registry.Register)
369370
cmm.registry.MustRegister(cmm.csiOperationsLatencyMetric)
370371
}
371372

metrics/metrics_test.go

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ import (
2929
"k8s.io/component-base/metrics/testutil"
3030
)
3131

32+
const (
33+
SidecarOperationMetric = "csi_sidecar_operations_seconds"
34+
ProcessStartTimeMetric = "process_start_time_seconds"
35+
)
36+
3237
func TestRecordMetrics(t *testing.T) {
3338
testcases := map[string]struct {
3439
subsystem string
@@ -102,15 +107,17 @@ func testRecordMetrics(t *testing.T, subsystem string, stabilityLevel metrics.St
102107
csi_sidecar_operations_seconds_sum{driver_name="fake.csi.driver.io",grpc_status_code="OK",method_name="/csi.v1.Controller/ControllerGetCapabilities"} 20
103108
csi_sidecar_operations_seconds_count{driver_name="fake.csi.driver.io",grpc_status_code="OK",method_name="/csi.v1.Controller/ControllerGetCapabilities"} 1
104109
`
110+
metricName := SidecarOperationMetric
105111
if subsystem != "" {
106112
expectedMetrics = strings.Replace(expectedMetrics, "csi_sidecar", subsystem, -1)
113+
metricName = strings.Replace(metricName, "csi_sidecar", subsystem, -1)
107114
}
108115
if stabilityLevel != "" {
109116
expectedMetrics = strings.Replace(expectedMetrics, "ALPHA", string(stabilityLevel), -1)
110117
}
111118

112119
if err := testutil.GatherAndCompare(
113-
cmm.GetRegistry(), strings.NewReader(expectedMetrics)); err != nil {
120+
cmm.GetRegistry(), strings.NewReader(expectedMetrics), metricName); err != nil {
114121
t.Fatal(err)
115122
}
116123
}
@@ -150,8 +157,9 @@ func TestFixedLabels(t *testing.T) {
150157
csi_sidecar_operations_seconds_count{a="111",b="222",driver_name="unknown-driver",grpc_status_code="OK",method_name="myOperation"} 1
151158
`
152159

160+
time.Sleep(1000)
153161
if err := testutil.GatherAndCompare(
154-
cmm.GetRegistry(), strings.NewReader(expectedMetrics)); err != nil {
162+
cmm.GetRegistry(), strings.NewReader(expectedMetrics), SidecarOperationMetric); err != nil {
155163
t.Fatal(err)
156164
}
157165
}
@@ -200,7 +208,7 @@ func TestVaryingLabels(t *testing.T) {
200208
`
201209

202210
if err := testutil.GatherAndCompare(
203-
cmm.GetRegistry(), strings.NewReader(expectedMetrics)); err != nil {
211+
cmm.GetRegistry(), strings.NewReader(expectedMetrics), SidecarOperationMetric); err != nil {
204212
t.Fatal(err)
205213
}
206214
}
@@ -273,7 +281,7 @@ func TestTwoVaryingLabels(t *testing.T) {
273281
`
274282

275283
if err := testutil.GatherAndCompare(
276-
cmm.GetRegistry(), strings.NewReader(expectedMetrics)); err != nil {
284+
cmm.GetRegistry(), strings.NewReader(expectedMetrics), SidecarOperationMetric); err != nil {
277285
t.Fatal(err)
278286
}
279287
}
@@ -318,7 +326,7 @@ func TestVaryingLabelsBackfill(t *testing.T) {
318326
`
319327

320328
if err := testutil.GatherAndCompare(
321-
cmm.GetRegistry(), strings.NewReader(expectedMetrics)); err != nil {
329+
cmm.GetRegistry(), strings.NewReader(expectedMetrics), SidecarOperationMetric); err != nil {
322330
t.Fatal(err)
323331
}
324332
}
@@ -392,7 +400,7 @@ func TestCombinedLabels(t *testing.T) {
392400
`
393401

394402
if err := testutil.GatherAndCompare(
395-
cmm.GetRegistry(), strings.NewReader(expectedMetrics)); err != nil {
403+
cmm.GetRegistry(), strings.NewReader(expectedMetrics), SidecarOperationMetric); err != nil {
396404
t.Fatal(err)
397405
}
398406
}
@@ -431,7 +439,7 @@ func TestRecordMetrics_NoDriverName(t *testing.T) {
431439
`
432440

433441
if err := testutil.GatherAndCompare(
434-
cmm.GetRegistry(), strings.NewReader(expectedMetrics)); err != nil {
442+
cmm.GetRegistry(), strings.NewReader(expectedMetrics), SidecarOperationMetric); err != nil {
435443
t.Fatal(err)
436444
}
437445
}
@@ -469,7 +477,7 @@ func TestRecordMetrics_Negative(t *testing.T) {
469477
csi_sidecar_operations_seconds_count{driver_name="fake.csi.driver.io",grpc_status_code="InvalidArgument",method_name="myOperation"} 1
470478
`
471479
if err := testutil.GatherAndCompare(
472-
cmm.GetRegistry(), strings.NewReader(expectedMetrics)); err != nil {
480+
cmm.GetRegistry(), strings.NewReader(expectedMetrics), SidecarOperationMetric); err != nil {
473481
t.Fatal(err)
474482
}
475483
}
@@ -488,7 +496,7 @@ func TestStartMetricsEndPoint_Noop(t *testing.T) {
488496
operationDuration /* operationDuration */)
489497

490498
// Assert
491-
request, err := http.NewRequest("GET", "http://localhost:8080/metrics", strings.NewReader(""))
499+
request, err := http.NewRequest("GET", "http://localhost:8080/metrics?"+SidecarOperationMetric, strings.NewReader(""))
492500
if err != nil {
493501
t.Fatalf("Creating request for metrics endpoint failed: %v", err)
494502
}
@@ -524,10 +532,10 @@ func TestStartMetricsEndPoint_Noop(t *testing.T) {
524532
csi_sidecar_operations_seconds_bucket{driver_name="fake.csi.driver.io",grpc_status_code="OK",method_name="/csi.v1.Controller/ControllerGetCapabilities",le="+Inf"} 1
525533
csi_sidecar_operations_seconds_sum{driver_name="fake.csi.driver.io",grpc_status_code="OK",method_name="/csi.v1.Controller/ControllerGetCapabilities"} 20
526534
csi_sidecar_operations_seconds_count{driver_name="fake.csi.driver.io",grpc_status_code="OK",method_name="/csi.v1.Controller/ControllerGetCapabilities"} 1
527-
`
535+
`
528536

529537
actualMetrics := string(contentBytes)
530-
if err := VerifyMetricsMatch(expectedMetrics, actualMetrics, ""); err != nil {
538+
if err := VerifyMetricsMatch(expectedMetrics, actualMetrics, ProcessStartTimeMetric); err != nil {
531539
t.Fatalf("Metrics returned by end point do not match expectation: %v", err)
532540
}
533541
}

0 commit comments

Comments
 (0)