sending_test.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package kcp_test
  2. import (
  3. "testing"
  4. "github.com/v2ray/v2ray-core/common/alloc"
  5. "github.com/v2ray/v2ray-core/testing/assert"
  6. . "github.com/v2ray/v2ray-core/transport/internet/kcp"
  7. )
  8. func TestSendingQueue(t *testing.T) {
  9. assert := assert.On(t)
  10. queue := NewSendingQueue(3)
  11. seg0 := alloc.NewLocalBuffer(512)
  12. seg1 := alloc.NewLocalBuffer(512)
  13. seg2 := alloc.NewLocalBuffer(512)
  14. seg3 := alloc.NewLocalBuffer(512)
  15. assert.Bool(queue.IsEmpty()).IsTrue()
  16. assert.Bool(queue.IsFull()).IsFalse()
  17. queue.Push(seg0)
  18. assert.Bool(queue.IsEmpty()).IsFalse()
  19. queue.Push(seg1)
  20. queue.Push(seg2)
  21. assert.Bool(queue.IsFull()).IsTrue()
  22. assert.Pointer(queue.Pop()).Equals(seg0)
  23. queue.Push(seg3)
  24. assert.Bool(queue.IsFull()).IsTrue()
  25. assert.Pointer(queue.Pop()).Equals(seg1)
  26. assert.Pointer(queue.Pop()).Equals(seg2)
  27. assert.Pointer(queue.Pop()).Equals(seg3)
  28. assert.Int(int(queue.Len())).Equals(0)
  29. }
  30. func TestSendingQueueClear(t *testing.T) {
  31. assert := assert.On(t)
  32. queue := NewSendingQueue(3)
  33. seg0 := alloc.NewLocalBuffer(512)
  34. seg1 := alloc.NewLocalBuffer(512)
  35. seg2 := alloc.NewLocalBuffer(512)
  36. seg3 := alloc.NewLocalBuffer(512)
  37. queue.Push(seg0)
  38. assert.Bool(queue.IsEmpty()).IsFalse()
  39. queue.Clear()
  40. assert.Bool(queue.IsEmpty()).IsTrue()
  41. queue.Push(seg1)
  42. queue.Push(seg2)
  43. queue.Push(seg3)
  44. queue.Clear()
  45. assert.Bool(queue.IsEmpty()).IsTrue()
  46. }
  47. func TestSendingWindow(t *testing.T) {
  48. assert := assert.On(t)
  49. window := NewSendingWindow(5, nil, nil)
  50. window.Push(&DataSegment{
  51. Number: 0,
  52. })
  53. window.Push(&DataSegment{
  54. Number: 1,
  55. })
  56. window.Push(&DataSegment{
  57. Number: 2,
  58. })
  59. assert.Int(window.Len()).Equals(3)
  60. window.Remove(1)
  61. assert.Int(window.Len()).Equals(3)
  62. assert.Uint32(window.First().Number).Equals(0)
  63. window.Remove(0)
  64. assert.Int(window.Len()).Equals(1)
  65. assert.Uint32(window.First().Number).Equals(2)
  66. window.Remove(0)
  67. assert.Int(window.Len()).Equals(0)
  68. window.Push(&DataSegment{
  69. Number: 4,
  70. })
  71. assert.Int(window.Len()).Equals(1)
  72. assert.Uint32(window.First().Number).Equals(4)
  73. window.Push(&DataSegment{
  74. Number: 5,
  75. })
  76. assert.Int(window.Len()).Equals(2)
  77. window.Remove(1)
  78. assert.Int(window.Len()).Equals(2)
  79. window.Remove(0)
  80. assert.Int(window.Len()).Equals(0)
  81. }