TCPMsgBasedRcvQueue_3.test 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. %description:
  2. Test TCPMsgBasedSendQueue, TCPMsgBasedRcvQueue classes
  3. - sending and receiving 2GB data
  4. %includes:
  5. #include "TCPQueueTesterFunctions.h"
  6. %global:
  7. using namespace ::inet::tcp;
  8. %activity:
  9. TCPMsgBasedSendQueue sendQueue;
  10. TCPMsgBasedSendQueue *sq = &sendQueue;
  11. sq->init(0);
  12. EV << sq->info() <<"\n";
  13. TCPMsgBasedRcvQueue rcvQueue;
  14. TCPMsgBasedRcvQueue *rq = &rcvQueue;
  15. uint32 seq = 0;
  16. rq->init(seq);
  17. EV << rq->info() <<"\n";
  18. enqueue(sq, "msg1", 500000000); // 0.. 500000000
  19. enqueue(sq, "msg2", 500000000); // 500000000..1000000000
  20. enqueue(sq, "msg3", 500000000); // 1000000000..1500000000
  21. enqueue(sq, "msg4", 500000000); // 1500000000..2000000000
  22. ulong seglen = 250000000;
  23. seq = sq->getBufferStartSeq();
  24. while (seqLess(seq, sq->getBufferEndSeq()))
  25. {
  26. ulong curlen = seqMin(seq+seglen, sq->getBufferEndSeq()) - seq;
  27. insertSegment(rq, createSegmentWithBytes(sq, seq, seq+curlen));
  28. seq += curlen;
  29. }
  30. seq = sq->getBufferStartSeq();
  31. for(;;)
  32. {
  33. uint32 eseq = seqMin(seq + seglen, sq->getBufferEndSeq());
  34. if (seqGE(seq, eseq))
  35. break;
  36. extractBytesUpTo(rq, eseq);
  37. discardUpTo(sq, eseq);
  38. seq = eseq;
  39. }
  40. EV << ".\n";
  41. %contains: stdout
  42. [0..0), 0 packets
  43. rcv_nxt=0 0 msgs
  44. SQ:enqueue("msg1", 500000000): --> [0..500000000), 1 packets
  45. SQ:enqueue("msg2", 500000000): --> [0..1000000000), 2 packets
  46. SQ:enqueue("msg3", 500000000): --> [0..1500000000), 3 packets
  47. SQ:enqueue("msg4", 500000000): --> [0..2000000000), 4 packets
  48. SQ:createSegmentWithBytes(0, 250000000):
  49. RQ:insertSeg [0..250000000) --> rcv_nxt=250000000 [0..250000000) 0 msgs
  50. SQ:createSegmentWithBytes(250000000, 500000000): msg1[0..500000000)
  51. RQ:insertSeg [250000000..500000000) --> rcv_nxt=500000000 [0..500000000) 1 msgs
  52. SQ:createSegmentWithBytes(500000000, 750000000):
  53. RQ:insertSeg [500000000..750000000) --> rcv_nxt=750000000 [0..750000000) 1 msgs
  54. SQ:createSegmentWithBytes(750000000, 1000000000): msg2[500000000..1000000000)
  55. RQ:insertSeg [750000000..1000000000) --> rcv_nxt=1000000000 [0..1000000000) 2 msgs
  56. SQ:createSegmentWithBytes(1000000000, 1250000000):
  57. RQ:insertSeg [1000000000..1250000000) --> rcv_nxt=1250000000 [0..1250000000) 2 msgs
  58. SQ:createSegmentWithBytes(1250000000, 1500000000): msg3[1000000000..1500000000)
  59. RQ:insertSeg [1250000000..1500000000) --> rcv_nxt=1500000000 [0..1500000000) 3 msgs
  60. SQ:createSegmentWithBytes(1500000000, 1750000000):
  61. RQ:insertSeg [1500000000..1750000000) --> rcv_nxt=1750000000 [0..1750000000) 3 msgs
  62. SQ:createSegmentWithBytes(1750000000, 2000000000): msg4[1500000000..2000000000)
  63. RQ:insertSeg [1750000000..2000000000) --> rcv_nxt=2000000000 [0..2000000000) 4 msgs
  64. RQ:extractUpTo(250000000): < > --> rcv_nxt=2000000000 [250000000..2000000000) 4 msgs
  65. SQ:discardUpTo(250000000): [250000000..2000000000), 4 packets
  66. RQ:extractUpTo(500000000): < < msg1: 500000000 bytes > > --> rcv_nxt=2000000000 [500000000..2000000000) 3 msgs
  67. SQ:discardUpTo(500000000): [500000000..2000000000), 3 packets
  68. RQ:extractUpTo(750000000): < > --> rcv_nxt=2000000000 [750000000..2000000000) 3 msgs
  69. SQ:discardUpTo(750000000): [750000000..2000000000), 3 packets
  70. RQ:extractUpTo(1000000000): < < msg2: 500000000 bytes > > --> rcv_nxt=2000000000 [1000000000..2000000000) 2 msgs
  71. SQ:discardUpTo(1000000000): [1000000000..2000000000), 2 packets
  72. RQ:extractUpTo(1250000000): < > --> rcv_nxt=2000000000 [1250000000..2000000000) 2 msgs
  73. SQ:discardUpTo(1250000000): [1250000000..2000000000), 2 packets
  74. RQ:extractUpTo(1500000000): < < msg3: 500000000 bytes > > --> rcv_nxt=2000000000 [1500000000..2000000000) 1 msgs
  75. SQ:discardUpTo(1500000000): [1500000000..2000000000), 1 packets
  76. RQ:extractUpTo(1750000000): < > --> rcv_nxt=2000000000 [1750000000..2000000000) 1 msgs
  77. SQ:discardUpTo(1750000000): [1750000000..2000000000), 1 packets
  78. RQ:extractUpTo(2000000000): < < msg4: 500000000 bytes > > --> rcv_nxt=2000000000 0 msgs
  79. SQ:discardUpTo(2000000000): [2000000000..2000000000), 0 packets
  80. .