command_test.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package command_test
  2. import (
  3. "context"
  4. "testing"
  5. "v2ray.com/core/app/stats"
  6. . "v2ray.com/core/app/stats/command"
  7. "v2ray.com/core/common"
  8. . "v2ray.com/ext/assert"
  9. )
  10. func TestGetStats(t *testing.T) {
  11. assert := With(t)
  12. m, err := stats.NewManager(context.Background(), &stats.Config{})
  13. common.Must(err)
  14. sc, err := m.RegisterCounter("test_counter")
  15. common.Must(err)
  16. sc.Set(1)
  17. s := NewStatsServer(m)
  18. testCases := []struct {
  19. name string
  20. reset bool
  21. value int64
  22. err bool
  23. }{
  24. {
  25. name: "counterNotExist",
  26. err: true,
  27. },
  28. {
  29. name: "test_counter",
  30. reset: true,
  31. value: 1,
  32. },
  33. {
  34. name: "test_counter",
  35. value: 0,
  36. },
  37. }
  38. for _, tc := range testCases {
  39. resp, err := s.GetStats(context.Background(), &GetStatsRequest{
  40. Name: tc.name,
  41. Reset_: tc.reset,
  42. })
  43. if tc.err {
  44. assert(err, IsNotNil)
  45. } else {
  46. common.Must(err)
  47. assert(resp.Stat.Name, Equals, tc.name)
  48. assert(resp.Stat.Value, Equals, tc.value)
  49. }
  50. }
  51. }
  52. func TestQueryStats(t *testing.T) {
  53. assert := With(t)
  54. m, err := stats.NewManager(context.Background(), &stats.Config{})
  55. common.Must(err)
  56. sc1, err := m.RegisterCounter("test_counter")
  57. common.Must(err)
  58. sc1.Set(1)
  59. sc2, err := m.RegisterCounter("test_counter_2")
  60. common.Must(err)
  61. sc2.Set(2)
  62. sc3, err := m.RegisterCounter("test_counter_3")
  63. common.Must(err)
  64. sc3.Set(3)
  65. s := NewStatsServer(m)
  66. resp, err := s.QueryStats(context.Background(), &QueryStatsRequest{
  67. Pattern: "counter_",
  68. })
  69. common.Must(err)
  70. assert(len(resp.Stat), Equals, 2)
  71. v2 := false
  72. v3 := false
  73. for _, sc := range resp.Stat {
  74. switch sc.Name {
  75. case "test_counter_2":
  76. assert(sc.Value, Equals, int64(2))
  77. v2 = true
  78. case "test_counter_3":
  79. assert(sc.Value, Equals, int64(3))
  80. v3 = true
  81. default:
  82. t.Error("unexpected stat name: ", sc.Name)
  83. t.Fail()
  84. }
  85. }
  86. assert(v2, IsTrue)
  87. assert(v3, IsTrue)
  88. }