stats_test.go 818 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package dispatcher_test
  2. import (
  3. "testing"
  4. . "github.com/xtls/xray-core/app/dispatcher"
  5. "github.com/xtls/xray-core/common"
  6. "github.com/xtls/xray-core/common/buf"
  7. )
  8. type TestCounter int64
  9. func (c *TestCounter) Value() int64 {
  10. return int64(*c)
  11. }
  12. func (c *TestCounter) Add(v int64) int64 {
  13. x := int64(*c) + v
  14. *c = TestCounter(x)
  15. return x
  16. }
  17. func (c *TestCounter) Set(v int64) int64 {
  18. *c = TestCounter(v)
  19. return v
  20. }
  21. func TestStatsWriter(t *testing.T) {
  22. var c TestCounter
  23. writer := &SizeStatWriter{
  24. Counter: &c,
  25. Writer: buf.Discard,
  26. }
  27. mb := buf.MergeBytes(nil, []byte("abcd"))
  28. common.Must(writer.WriteMultiBuffer(mb))
  29. mb = buf.MergeBytes(nil, []byte("efg"))
  30. common.Must(writer.WriteMultiBuffer(mb))
  31. if c.Value() != 7 {
  32. t.Fatal("unexpected counter value. want 7, but got ", c.Value())
  33. }
  34. }