summaryrefslogtreecommitdiff
path: root/service/metrics/rpc_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'service/metrics/rpc_test.go')
-rw-r--r--service/metrics/rpc_test.go182
1 files changed, 182 insertions, 0 deletions
diff --git a/service/metrics/rpc_test.go b/service/metrics/rpc_test.go
index 3fe48818..2fc4bc32 100644
--- a/service/metrics/rpc_test.go
+++ b/service/metrics/rpc_test.go
@@ -240,6 +240,182 @@ func Test_Sub_RPC_Vector(t *testing.T) {
assert.Contains(t, out, `user_gauge{section="first",type="core"} 90`)
}
+func Test_Register_RPC_Histogram(t *testing.T) {
+ client, c := setup(
+ t,
+ `"user_gauge":{
+ "type": "gauge",
+ "labels": ["type", "section"]
+ }`,
+ "2319",
+ )
+ defer c.Stop()
+
+ var ok bool
+ assert.NoError(t, client.Call("metrics.Declare", &NamedCollector{
+ Name: "custom_histogram",
+ Collector: Collector{
+ Namespace: "test_histogram",
+ Subsystem: "test_histogram",
+ Type: Histogram,
+ Help: "test_histogram",
+ Labels: nil,
+ Buckets: []float64{0.1, 0.2, 0.5},
+ },
+ }, &ok))
+ assert.True(t, ok)
+
+ var ok2 bool
+ // histogram does not support Add, should be an error
+ assert.Error(t, client.Call("metrics.Add", Metric{
+ Name: "custom_histogram",
+ }, &ok2))
+ // ok should became false
+ assert.False(t, ok2)
+
+ out, _, err := get("http://localhost:2319/metrics")
+ assert.NoError(t, err)
+ assert.Contains(t, out, `TYPE test_histogram_test_histogram_custom_histogram histogram`)
+
+ // check buckets
+ assert.Contains(t, out, `test_histogram_test_histogram_custom_histogram_bucket{le="0.1"} 0`)
+ assert.Contains(t, out, `test_histogram_test_histogram_custom_histogram_bucket{le="0.2"} 0`)
+ assert.Contains(t, out, `test_histogram_test_histogram_custom_histogram_bucket{le="0.5"} 0`)
+}
+
+func Test_Register_RPC_Gauge(t *testing.T) {
+ // FOR register method, setup used just to init the rpc
+ client, c := setup(
+ t,
+ `"user_gauge":{
+ "type": "gauge",
+ "labels": ["type", "section"]
+ }`,
+ "2324",
+ )
+ defer c.Stop()
+
+ var ok bool
+ assert.NoError(t, client.Call("metrics.Declare", &NamedCollector{
+ Name: "custom_gauge",
+ Collector: Collector{
+ Namespace: "test_gauge",
+ Subsystem: "test_gauge",
+ Type: Gauge,
+ Help: "test_gauge",
+ Labels: []string{"type", "section"},
+ Buckets: nil,
+ },
+ }, &ok))
+ assert.True(t, ok)
+
+ var ok2 bool
+ // Add to custom_gauge
+ assert.NoError(t, client.Call("metrics.Add", Metric{
+ Name: "custom_gauge",
+ Value: 100.0,
+ Labels: []string{"core", "first"},
+ }, &ok2))
+ // ok should became true
+ assert.True(t, ok2)
+
+ // Subtract from custom runtime metric
+ var ok3 bool
+ assert.NoError(t, client.Call("metrics.Sub", Metric{
+ Name: "custom_gauge",
+ Value: 10.0,
+ Labels: []string{"core", "first"},
+ }, &ok3))
+ assert.True(t, ok3)
+
+ out, _, err := get("http://localhost:2324/metrics")
+ assert.NoError(t, err)
+ assert.Contains(t, out, `test_gauge_test_gauge_custom_gauge{section="first",type="core"} 90`)
+}
+
+func Test_Register_RPC_Counter(t *testing.T) {
+ // FOR register method, setup used just to init the rpc
+ client, c := setup(
+ t,
+ `"user_gauge":{
+ "type": "gauge",
+ "labels": ["type", "section"]
+ }`,
+ "2328",
+ )
+ defer c.Stop()
+
+ var ok bool
+ assert.NoError(t, client.Call("metrics.Declare", &NamedCollector{
+ Name: "custom_counter",
+ Collector: Collector{
+ Namespace: "test_counter",
+ Subsystem: "test_counter",
+ Type: Counter,
+ Help: "test_counter",
+ Labels: []string{"type", "section"},
+ Buckets: nil,
+ },
+ }, &ok))
+ assert.True(t, ok)
+
+ var ok2 bool
+ // Add to custom_counter
+ assert.NoError(t, client.Call("metrics.Add", Metric{
+ Name: "custom_counter",
+ Value: 100.0,
+ Labels: []string{"type2", "section2"},
+ }, &ok2))
+ // ok should became true
+ assert.True(t, ok2)
+
+ out, _, err := get("http://localhost:2328/metrics")
+ assert.NoError(t, err)
+ assert.Contains(t, out, `test_counter_test_counter_custom_counter{section="section2",type="type2"} 100`)
+}
+
+func Test_Register_RPC_Summary(t *testing.T) {
+ // FOR register method, setup used just to init the rpc
+ client, c := setup(
+ t,
+ `"user_gauge":{
+ "type": "gauge",
+ "labels": ["type", "section"]
+ }`,
+ "6666",
+ )
+ defer c.Stop()
+
+ var ok bool
+ assert.NoError(t, client.Call("metrics.Declare", &NamedCollector{
+ Name: "custom_summary",
+ Collector: Collector{
+ Namespace: "test_summary",
+ Subsystem: "test_summary",
+ Type: Summary,
+ Help: "test_summary",
+ Labels: nil,
+ Buckets: nil,
+ },
+ }, &ok))
+ assert.True(t, ok)
+
+ var ok2 bool
+ // Add to custom_summary is not supported
+ assert.Error(t, client.Call("metrics.Add", Metric{
+ Name: "custom_summary",
+ Value: 100.0,
+ Labels: []string{"type22", "section22"},
+ }, &ok2))
+ // ok should became false
+ assert.False(t, ok2)
+
+ out, _, err := get("http://localhost:6666/metrics")
+ assert.NoError(t, err)
+ assert.Contains(t, out, `test_summary_test_summary_custom_summary_sum 0`)
+ assert.Contains(t, out, `test_summary_test_summary_custom_summary_count 0`)
+}
+
func Test_Sub_RPC_CollectorError(t *testing.T) {
client, c := setup(
t,
@@ -621,6 +797,8 @@ func Test_Add_RPC_CollectorError(t *testing.T) {
Value: 100.0,
Labels: []string{"missing"},
}, &ok))
+
+ assert.False(t, ok)
}
func Test_Add_RPC_MetricError(t *testing.T) {
@@ -640,6 +818,8 @@ func Test_Add_RPC_MetricError(t *testing.T) {
Value: 100.0,
Labels: []string{"missing"},
}, &ok))
+
+ assert.False(t, ok)
}
func Test_Add_RPC_MetricError_2(t *testing.T) {
@@ -658,6 +838,8 @@ func Test_Add_RPC_MetricError_2(t *testing.T) {
Name: "user_gauge",
Value: 100.0,
}, &ok))
+
+ assert.False(t, ok)
}
func Test_Add_RPC_MetricError_3(t *testing.T) {