| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 | 
							- package command_test
 
- import (
 
- 	"context"
 
- 	"testing"
 
- 	"v2ray.com/core/app/stats"
 
- 	. "v2ray.com/core/app/stats/command"
 
- 	. "v2ray.com/ext/assert"
 
- )
 
- func TestGetStats(t *testing.T) {
 
- 	assert := With(t)
 
- 	m, err := stats.NewManager(context.Background(), &stats.Config{})
 
- 	assert(err, IsNil)
 
- 	sc, err := m.RegisterCounter("test_counter")
 
- 	assert(err, IsNil)
 
- 	sc.Set(1)
 
- 	s := NewStatsServer(m)
 
- 	testCases := []struct {
 
- 		name  string
 
- 		reset bool
 
- 		value int64
 
- 		err   bool
 
- 	}{
 
- 		{
 
- 			name: "counterNotExist",
 
- 			err:  true,
 
- 		},
 
- 		{
 
- 			name:  "test_counter",
 
- 			reset: true,
 
- 			value: 1,
 
- 		},
 
- 		{
 
- 			name:  "test_counter",
 
- 			value: 0,
 
- 		},
 
- 	}
 
- 	for _, tc := range testCases {
 
- 		resp, err := s.GetStats(context.Background(), &GetStatsRequest{
 
- 			Name:   tc.name,
 
- 			Reset_: tc.reset,
 
- 		})
 
- 		if tc.err {
 
- 			assert(err, IsNotNil)
 
- 		} else {
 
- 			assert(err, IsNil)
 
- 			assert(resp.Stat.Name, Equals, tc.name)
 
- 			assert(resp.Stat.Value, Equals, tc.value)
 
- 		}
 
- 	}
 
- }
 
- func TestQueryStats(t *testing.T) {
 
- 	assert := With(t)
 
- 	m, err := stats.NewManager(context.Background(), &stats.Config{})
 
- 	assert(err, IsNil)
 
- 	sc1, err := m.RegisterCounter("test_counter")
 
- 	assert(err, IsNil)
 
- 	sc1.Set(1)
 
- 	sc2, err := m.RegisterCounter("test_counter_2")
 
- 	assert(err, IsNil)
 
- 	sc2.Set(2)
 
- 	sc3, err := m.RegisterCounter("test_counter_3")
 
- 	assert(err, IsNil)
 
- 	sc3.Set(3)
 
- 	s := NewStatsServer(m)
 
- 	resp, err := s.QueryStats(context.Background(), &QueryStatsRequest{
 
- 		Pattern: "counter_",
 
- 	})
 
- 	assert(err, IsNil)
 
- 	assert(len(resp.Stat), Equals, 2)
 
- 	v2 := false
 
- 	v3 := false
 
- 	for _, sc := range resp.Stat {
 
- 		switch sc.Name {
 
- 		case "test_counter_2":
 
- 			assert(sc.Value, Equals, int64(2))
 
- 			v2 = true
 
- 		case "test_counter_3":
 
- 			assert(sc.Value, Equals, int64(3))
 
- 			v3 = true
 
- 		default:
 
- 			t.Error("unexpected stat name: ", sc.Name)
 
- 			t.Fail()
 
- 		}
 
- 	}
 
- 	assert(v2, IsTrue)
 
- 	assert(v3, IsTrue)
 
- }
 
 
  |