gauge_test.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package metric
  2. import (
  3. "testing"
  4. "github.com/prometheus/client_golang/prometheus/testutil"
  5. "github.com/stretchr/testify/assert"
  6. "github.com/wuntsong-org/go-zero-plus/core/proc"
  7. )
  8. func TestNewGaugeVec(t *testing.T) {
  9. gaugeVec := NewGaugeVec(&GaugeVecOpts{
  10. Namespace: "rpc_server",
  11. Subsystem: "requests",
  12. Name: "duration",
  13. Help: "rpc server requests duration(ms).",
  14. })
  15. defer gaugeVec.close()
  16. gaugeVecNil := NewGaugeVec(nil)
  17. assert.NotNil(t, gaugeVec)
  18. assert.Nil(t, gaugeVecNil)
  19. proc.Shutdown()
  20. }
  21. func TestGaugeInc(t *testing.T) {
  22. startAgent()
  23. gaugeVec := NewGaugeVec(&GaugeVecOpts{
  24. Namespace: "rpc_client2",
  25. Subsystem: "requests",
  26. Name: "duration_ms",
  27. Help: "rpc server requests duration(ms).",
  28. Labels: []string{"path"},
  29. })
  30. defer gaugeVec.close()
  31. gv, _ := gaugeVec.(*promGaugeVec)
  32. gv.Inc("/users")
  33. gv.Inc("/users")
  34. r := testutil.ToFloat64(gv.gauge)
  35. assert.Equal(t, float64(2), r)
  36. }
  37. func TestGaugeDec(t *testing.T) {
  38. startAgent()
  39. gaugeVec := NewGaugeVec(&GaugeVecOpts{
  40. Namespace: "rpc_client",
  41. Subsystem: "requests",
  42. Name: "duration_ms",
  43. Help: "rpc server requests duration(ms).",
  44. Labels: []string{"path"},
  45. })
  46. defer gaugeVec.close()
  47. gv, _ := gaugeVec.(*promGaugeVec)
  48. gv.Dec("/users")
  49. gv.Dec("/users")
  50. r := testutil.ToFloat64(gv.gauge)
  51. assert.Equal(t, float64(-2), r)
  52. }
  53. func TestGaugeAdd(t *testing.T) {
  54. startAgent()
  55. gaugeVec := NewGaugeVec(&GaugeVecOpts{
  56. Namespace: "rpc_client",
  57. Subsystem: "request",
  58. Name: "duration_ms",
  59. Help: "rpc server requests duration(ms).",
  60. Labels: []string{"path"},
  61. })
  62. defer gaugeVec.close()
  63. gv, _ := gaugeVec.(*promGaugeVec)
  64. gv.Add(-10, "/classroom")
  65. gv.Add(30, "/classroom")
  66. r := testutil.ToFloat64(gv.gauge)
  67. assert.Equal(t, float64(20), r)
  68. }
  69. func TestGaugeSub(t *testing.T) {
  70. startAgent()
  71. gaugeVec := NewGaugeVec(&GaugeVecOpts{
  72. Namespace: "rpc_client",
  73. Subsystem: "request",
  74. Name: "duration_ms",
  75. Help: "rpc server requests duration(ms).",
  76. Labels: []string{"path"},
  77. })
  78. defer gaugeVec.close()
  79. gv, _ := gaugeVec.(*promGaugeVec)
  80. gv.Sub(-100, "/classroom")
  81. gv.Sub(30, "/classroom")
  82. r := testutil.ToFloat64(gv.gauge)
  83. assert.Equal(t, float64(70), r)
  84. }
  85. func TestGaugeSet(t *testing.T) {
  86. startAgent()
  87. gaugeVec := NewGaugeVec(&GaugeVecOpts{
  88. Namespace: "http_client",
  89. Subsystem: "request",
  90. Name: "duration_ms",
  91. Help: "rpc server requests duration(ms).",
  92. Labels: []string{"path"},
  93. })
  94. gaugeVec.close()
  95. gv, _ := gaugeVec.(*promGaugeVec)
  96. gv.Set(666, "/users")
  97. r := testutil.ToFloat64(gv.gauge)
  98. assert.Equal(t, float64(666), r)
  99. }