command_test.go 1.9 KB

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