From 6df25948877849da0bae99eab59d58dc8d5cd0d2 Mon Sep 17 00:00:00 2001 From: Hao Chen Date: Thu, 30 Jun 2022 20:08:29 +0800 Subject: [PATCH] add more test cases for prometheus module --- metric/prometheus_test.go | 69 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/metric/prometheus_test.go b/metric/prometheus_test.go index 7b241903..721577bb 100644 --- a/metric/prometheus_test.go +++ b/metric/prometheus_test.go @@ -20,6 +20,7 @@ package metric import ( "testing" + "bou.ke/monkey" "github.com/stretchr/testify/assert" ) @@ -73,3 +74,71 @@ func TestNewMetrics(t *testing.T) { assert.NotNil(t, GetName("namespace_subsystem_gauge_metric")) assert.NotNil(t, Gauge("namespace_subsystem_gauge_metric")) } + +func TestName(t *testing.T) { + + assert.False(t, ValidMetricName("")) + assert.False(t, ValidMetricName(" ")) + assert.False(t, ValidMetricName("\n")) + assert.False(t, ValidMetricName("5name")) + assert.False(t, ValidMetricName("name%")) + assert.False(t, ValidMetricName("hello-world")) + assert.False(t, ValidMetricName("hello-world@")) + + assert.True(t, ValidMetricName("name5")) + assert.True(t, ValidMetricName(":name")) + assert.True(t, ValidMetricName("hello_world:name")) + assert.True(t, ValidMetricName("_hello_world:name")) + assert.True(t, ValidMetricName(":_hello_world:name")) + assert.True(t, ValidMetricName("namespace_name_metric")) + + assert.False(t, ValidLabelName("")) + assert.False(t, ValidLabelName(" ")) + assert.False(t, ValidLabelName("\n")) + assert.False(t, ValidLabelName("5name")) + assert.False(t, ValidLabelName("name%")) + assert.False(t, ValidLabelName("hello-world")) + assert.False(t, ValidLabelName("hello-world@")) + + assert.True(t, ValidLabelName("_name5")) + assert.True(t, ValidLabelName("name_")) + assert.True(t, ValidLabelName("name5")) + assert.True(t, ValidLabelName("hello_world")) + assert.True(t, ValidLabelName("_hello_world_")) + assert.True(t, ValidLabelName("_hello_world_1_")) +} + +func TestDuplicateName(t *testing.T) { + counter1 := NewCounter("namespace", "subsystem", "counter", "metric", + "help", []string{}) + counter2 := NewCounter("namespace", "subsystem", "counter", "metric", + "help", []string{}) + assert.Equal(t, counter1, counter2) + + gauge1 := NewGauge("namespace", "subsystem", "gauge", "metric", + "help", []string{}) + gauge2 := NewGauge("namespace", "subsystem", "gauge", "metric", + "help", []string{}) + assert.Equal(t, gauge1, gauge2) +} + +func TestInvalidName(t *testing.T) { + + //label errors + counter := NewCounter("namespace", "subsystem", "counter", "metric", + "help", []string{"label-1", "label:2"}) + assert.Nil(t, counter) + + gauge := NewGauge("namespace", "subsystem", "gauge", "metric", + "help", []string{"label-1", "label:2"}) + assert.Nil(t, gauge) + + monkey.Patch(ValidMetricName, func(name string) bool { + return false + }) + counter = NewCounter("namespace", "subsystem", "counter", "metric", + "help", []string{}) + assert.Nil(t, counter) + + monkey.UnpatchAll() +}