limit_test.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package sessdata
  2. import (
  3. "testing"
  4. "time"
  5. "github.com/stretchr/testify/assert"
  6. "github.com/bjdgyc/anylink/base"
  7. )
  8. // func TestCheckUser(t *testing.T) {
  9. // user["user1"] = User{Password: "7c4a8d09ca3762af61e59520943dc26494f8941b"}
  10. // user["user2"] = User{Password: "7c4a8d09ca3762af61e59520943dc26494f8941c"}
  11. //
  12. // var res bool
  13. // res = CheckUser("user1", "123456", "")
  14. // AssertTrue(t, res == true)
  15. //
  16. // res = CheckUser("user2", "123457", "")
  17. // AssertTrue(t, res == false)
  18. // }
  19. func TestLimitClient(t *testing.T) {
  20. assert := assert.New(t)
  21. base.Cfg.MaxClient = 2
  22. base.Cfg.MaxUserClient = 1
  23. res1 := LimitClient("user1", false)
  24. res2 := LimitClient("user1", false)
  25. res3 := LimitClient("user2", false)
  26. res4 := LimitClient("user3", false)
  27. res5 := LimitClient("user1", true)
  28. assert.True(res1)
  29. assert.False(res2)
  30. assert.True(res3)
  31. assert.False(res4)
  32. assert.True(res5)
  33. }
  34. func TestLimitWait(t *testing.T) {
  35. assert := assert.New(t)
  36. limit := NewLimitRater(1, 2)
  37. err := limit.Wait(2)
  38. assert.Nil(err)
  39. start := time.Now()
  40. err = limit.Wait(2)
  41. assert.Nil(err)
  42. err = limit.Wait(1)
  43. assert.Nil(err)
  44. end := time.Now()
  45. sub := end.Sub(start)
  46. assert.Equal(3, int(sub.Seconds()))
  47. }