1
0

summary_test.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package metric
  2. import (
  3. "strings"
  4. "testing"
  5. "github.com/prometheus/client_golang/prometheus/testutil"
  6. "github.com/stretchr/testify/assert"
  7. "github.com/wuntsong-org/go-zero-plus/core/proc"
  8. )
  9. func TestNewSummaryVec(t *testing.T) {
  10. summaryVec := NewSummaryVec(&SummaryVecOpts{
  11. VecOpt: VectorOpts{
  12. Namespace: "http_server",
  13. Subsystem: "requests",
  14. Name: "duration_quantiles",
  15. Help: "rpc client requests duration(ms) φ quantiles ",
  16. Labels: []string{"method"},
  17. },
  18. Objectives: map[float64]float64{
  19. 0.5: 0.01,
  20. 0.9: 0.01,
  21. },
  22. })
  23. defer summaryVec.close()
  24. summaryVecNil := NewSummaryVec(nil)
  25. assert.NotNil(t, summaryVec)
  26. assert.Nil(t, summaryVecNil)
  27. }
  28. func TestSummaryObserve(t *testing.T) {
  29. startAgent()
  30. summaryVec := NewSummaryVec(&SummaryVecOpts{
  31. VecOpt: VectorOpts{
  32. Namespace: "http_server",
  33. Subsystem: "requests",
  34. Name: "duration_quantiles",
  35. Help: "rpc client requests duration(ms) φ quantiles ",
  36. Labels: []string{"method"},
  37. },
  38. Objectives: map[float64]float64{
  39. 0.3: 0.01,
  40. 0.6: 0.01,
  41. 1: 0.01,
  42. },
  43. })
  44. defer summaryVec.close()
  45. sv := summaryVec.(*promSummaryVec)
  46. sv.Observe(100, "GET")
  47. sv.Observe(200, "GET")
  48. sv.Observe(300, "GET")
  49. metadata := `
  50. # HELP http_server_requests_duration_quantiles rpc client requests duration(ms) φ quantiles
  51. # TYPE http_server_requests_duration_quantiles summary
  52. `
  53. val := `
  54. http_server_requests_duration_quantiles{method="GET",quantile="0.3"} 100
  55. http_server_requests_duration_quantiles{method="GET",quantile="0.6"} 200
  56. http_server_requests_duration_quantiles{method="GET",quantile="1"} 300
  57. http_server_requests_duration_quantiles_sum{method="GET"} 600
  58. http_server_requests_duration_quantiles_count{method="GET"} 3
  59. `
  60. err := testutil.CollectAndCompare(sv.summary, strings.NewReader(metadata+val))
  61. assert.Nil(t, err)
  62. proc.Shutdown()
  63. }