From b00b1994ce986754ccd78a136eb72b61896f6fe0 Mon Sep 17 00:00:00 2001 From: Arunprasad Rajkumar Date: Fri, 8 Oct 2021 16:16:56 +0530 Subject: [PATCH] test: Improve coverage for persistentvolume annotation/label related metrics Signed-off-by: Arunprasad Rajkumar --- internal/store/persistentvolume_test.go | 70 ++++++++++++++++++++++++- 1 file changed, 68 insertions(+), 2 deletions(-) diff --git a/internal/store/persistentvolume_test.go b/internal/store/persistentvolume_test.go index c9b3e61f..4093e54a 100644 --- a/internal/store/persistentvolume_test.go +++ b/internal/store/persistentvolume_test.go @@ -480,10 +480,76 @@ func TestPersistentVolumeStore(t *testing.T) { `, MetricNames: []string{"kube_persistentvolume_capacity_bytes"}, }, + { + AllowAnnotationsList: []string{ + "app.k8s.io/owner", + }, + AllowLabelsList: []string{ + "app", + }, + Obj: &v1.PersistentVolume{ + ObjectMeta: metav1.ObjectMeta{ + Name: "test-allowlisted-labels-annotations", + Annotations: map[string]string{ + "app.k8s.io/owner": "mysql-server", + "foo": "bar", + }, + Labels: map[string]string{ + "app": "mysql-server", + "hello": "world", + }, + }, + Status: v1.PersistentVolumeStatus{ + Phase: v1.VolumePending, + }, + }, + Want: ` + # HELP kube_persistentvolume_annotations Kubernetes annotations converted to Prometheus labels. + # HELP kube_persistentvolume_labels Kubernetes labels converted to Prometheus labels. + # TYPE kube_persistentvolume_annotations gauge + # TYPE kube_persistentvolume_labels gauge + kube_persistentvolume_annotations{annotation_app_k8s_io_owner="mysql-server",persistentvolume="test-allowlisted-labels-annotations"} 1 + kube_persistentvolume_labels{label_app="mysql-server",persistentvolume="test-allowlisted-labels-annotations"} 1 +`, + MetricNames: []string{ + "kube_persistentvolume_annotations", + "kube_persistentvolume_labels", + }, + }, + { + Obj: &v1.PersistentVolume{ + ObjectMeta: metav1.ObjectMeta{ + Name: "test-defaul-labels-annotations", + Annotations: map[string]string{ + "app.k8s.io/owner": "mysql-server", + "foo": "bar", + }, + Labels: map[string]string{ + "app": "mysql-server", + "hello": "world", + }, + }, + Status: v1.PersistentVolumeStatus{ + Phase: v1.VolumePending, + }, + }, + Want: ` + # HELP kube_persistentvolume_annotations Kubernetes annotations converted to Prometheus labels. + # HELP kube_persistentvolume_labels Kubernetes labels converted to Prometheus labels. + # TYPE kube_persistentvolume_annotations gauge + # TYPE kube_persistentvolume_labels gauge + kube_persistentvolume_annotations{persistentvolume="test-defaul-labels-annotations"} 1 + kube_persistentvolume_labels{persistentvolume="test-defaul-labels-annotations"} 1 +`, + MetricNames: []string{ + "kube_persistentvolume_annotations", + "kube_persistentvolume_labels", + }, + }, } for i, c := range cases { - c.Func = generator.ComposeMetricGenFuncs(persistentVolumeMetricFamilies(nil, nil)) - c.Headers = generator.ExtractMetricFamilyHeaders(persistentVolumeMetricFamilies(nil, nil)) + c.Func = generator.ComposeMetricGenFuncs(persistentVolumeMetricFamilies(c.AllowAnnotationsList, c.AllowLabelsList)) + c.Headers = generator.ExtractMetricFamilyHeaders(persistentVolumeMetricFamilies(c.AllowAnnotationsList, c.AllowLabelsList)) if err := c.run(); err != nil { t.Errorf("unexpected collecting result in %vth run:\n%s", i, err) }