TCPVirtualDataRcvQueue_1.test 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. %description:
  2. Test TCPVirtualDataRcvQueue class
  3. - segments out of order
  4. - overlapped segments
  5. - sequence number turn out zero
  6. %includes:
  7. #include "TCPQueueTesterFunctions.h"
  8. %global:
  9. using namespace ::inet::tcp;
  10. %activity:
  11. TCPVirtualDataRcvQueue rcvQueue;
  12. TCPVirtualDataRcvQueue *q = &rcvQueue;
  13. q->init(1000);
  14. EV << q->info() <<"\n";
  15. insertSegment(q, 1000, 1100);
  16. insertSegment(q, 1000, 1100);
  17. insertSegment(q, 1020, 1099);
  18. insertSegment(q, 1100, 1200);
  19. insertSegment(q, 1199, 1300);
  20. insertSegment(q, 900, 1100);
  21. insertSegment(q, 800, 899);
  22. insertSegment(q, 899, 900);
  23. extractBytesUpTo(q, 500);
  24. extractBytesUpTo(q, 1000);
  25. extractBytesUpTo(q, 1100);
  26. extractBytesUpTo(q, 1299);
  27. extractBytesUpTo(q, 1300);
  28. insertSegment(q, 1500, 1600);
  29. insertSegment(q, 1700, 1800);
  30. insertSegment(q, 1601, 1699);
  31. insertSegment(q, 1600, 1601);
  32. insertSegment(q, 1699, 1700);
  33. insertSegment(q, 1300, 1400);
  34. insertSegment(q, 1350, 1400);
  35. insertSegment(q, 1400, 1450);
  36. insertSegment(q, 1450, 1500);
  37. insertSegment(q, 2000, 2100);
  38. insertSegment(q, 2200, 2300);
  39. insertSegment(q, 1950, 2000);
  40. insertSegment(q, 1800, 1950);
  41. insertSegment(q, 2150, 2200);
  42. insertSegment(q, 2120, 2149);
  43. insertSegment(q, 2149, 2200);
  44. insertSegment(q, 2100, 2119);
  45. insertSegment(q, 2100, 2200);
  46. extractBytesUpTo(q, 2000);
  47. extractBytesUpTo(q, 2300);
  48. ///////////////////////////////////////////////////////////////
  49. q->init(4294967000);
  50. EV << q->info() <<"\n";
  51. insertSegment(q, 4294967000, 4294967100);
  52. insertSegment(q, 4294967000, 4294967100);
  53. insertSegment(q, 4294967020, 4294967099);
  54. insertSegment(q, 4294967100, 4294967200);
  55. insertSegment(q, 4294967199, 4);
  56. insertSegment(q, 4294966900, 4294967100);
  57. extractBytesUpTo(q, 4294966500);
  58. extractBytesUpTo(q, 4294967000);
  59. extractBytesUpTo(q, 4294967100);
  60. extractBytesUpTo(q, 3);
  61. extractBytesUpTo(q, 4);
  62. insertSegment(q, 204, 304);
  63. insertSegment(q, 404, 504);
  64. insertSegment(q, 305, 403);
  65. insertSegment(q, 304, 305);
  66. insertSegment(q, 403, 404);
  67. insertSegment(q, 4, 104);
  68. insertSegment(q, 54, 104);
  69. insertSegment(q, 104, 154);
  70. insertSegment(q, 154, 204);
  71. insertSegment(q, 704, 804);
  72. insertSegment(q, 904, 1004);
  73. insertSegment(q, 654, 704);
  74. insertSegment(q, 504, 654);
  75. insertSegment(q, 854, 904);
  76. insertSegment(q, 824, 853);
  77. insertSegment(q, 853, 904);
  78. insertSegment(q, 804, 823);
  79. insertSegment(q, 804, 904);
  80. extractBytesUpTo(q, 704);
  81. extractBytesUpTo(q, 1004);
  82. EV << ".\n";
  83. %contains: stdout
  84. rcv_nxt=1000
  85. RQ:insertSeg [1000..1100) --> rcv_nxt=1100 [1000..1100)
  86. RQ:insertSeg [1000..1100) --> rcv_nxt=1100 [1000..1100)
  87. RQ:insertSeg [1020..1099) --> rcv_nxt=1100 [1000..1100)
  88. RQ:insertSeg [1100..1200) --> rcv_nxt=1200 [1000..1200)
  89. RQ:insertSeg [1199..1300) --> rcv_nxt=1300 [1000..1300)
  90. RQ:insertSeg [900..1100) --> rcv_nxt=1300 [900..1300)
  91. RQ:insertSeg [800..899) --> rcv_nxt=899 [800..899) [900..1300)
  92. RQ:insertSeg [899..900) --> rcv_nxt=1300 [800..1300)
  93. RQ:extractUpTo(500): --> rcv_nxt=1300 [800..1300)
  94. RQ:extractUpTo(1000): msglen=200 --> rcv_nxt=1300 [1000..1300)
  95. RQ:extractUpTo(1100): msglen=100 --> rcv_nxt=1300 [1100..1300)
  96. RQ:extractUpTo(1299): msglen=199 --> rcv_nxt=1300 [1299..1300)
  97. RQ:extractUpTo(1300): msglen=1 --> rcv_nxt=1300
  98. RQ:insertSeg [1500..1600) --> rcv_nxt=1300 [1500..1600)
  99. RQ:insertSeg [1700..1800) --> rcv_nxt=1300 [1500..1600) [1700..1800)
  100. RQ:insertSeg [1601..1699) --> rcv_nxt=1300 [1500..1600) [1601..1699) [1700..1800)
  101. RQ:insertSeg [1600..1601) --> rcv_nxt=1300 [1500..1699) [1700..1800)
  102. RQ:insertSeg [1699..1700) --> rcv_nxt=1300 [1500..1800)
  103. RQ:insertSeg [1300..1400) --> rcv_nxt=1400 [1300..1400) [1500..1800)
  104. RQ:insertSeg [1350..1400) --> rcv_nxt=1400 [1300..1400) [1500..1800)
  105. RQ:insertSeg [1400..1450) --> rcv_nxt=1450 [1300..1450) [1500..1800)
  106. RQ:insertSeg [1450..1500) --> rcv_nxt=1800 [1300..1800)
  107. RQ:insertSeg [2000..2100) --> rcv_nxt=1800 [1300..1800) [2000..2100)
  108. RQ:insertSeg [2200..2300) --> rcv_nxt=1800 [1300..1800) [2000..2100) [2200..2300)
  109. RQ:insertSeg [1950..2000) --> rcv_nxt=1800 [1300..1800) [1950..2100) [2200..2300)
  110. RQ:insertSeg [1800..1950) --> rcv_nxt=2100 [1300..2100) [2200..2300)
  111. RQ:insertSeg [2150..2200) --> rcv_nxt=2100 [1300..2100) [2150..2300)
  112. RQ:insertSeg [2120..2149) --> rcv_nxt=2100 [1300..2100) [2120..2149) [2150..2300)
  113. RQ:insertSeg [2149..2200) --> rcv_nxt=2100 [1300..2100) [2120..2300)
  114. RQ:insertSeg [2100..2119) --> rcv_nxt=2119 [1300..2119) [2120..2300)
  115. RQ:insertSeg [2100..2200) --> rcv_nxt=2300 [1300..2300)
  116. RQ:extractUpTo(2000): msglen=700 --> rcv_nxt=2300 [2000..2300)
  117. RQ:extractUpTo(2300): msglen=300 --> rcv_nxt=2300
  118. rcv_nxt=4294967000
  119. RQ:insertSeg [4294967000..4294967100) --> rcv_nxt=4294967100 [4294967000..4294967100)
  120. RQ:insertSeg [4294967000..4294967100) --> rcv_nxt=4294967100 [4294967000..4294967100)
  121. RQ:insertSeg [4294967020..4294967099) --> rcv_nxt=4294967100 [4294967000..4294967100)
  122. RQ:insertSeg [4294967100..4294967200) --> rcv_nxt=4294967200 [4294967000..4294967200)
  123. RQ:insertSeg [4294967199..4) --> rcv_nxt=4 [4294967000..4)
  124. RQ:insertSeg [4294966900..4294967100) --> rcv_nxt=4 [4294966900..4)
  125. RQ:extractUpTo(4294966500): --> rcv_nxt=4 [4294966900..4)
  126. RQ:extractUpTo(4294967000): msglen=100 --> rcv_nxt=4 [4294967000..4)
  127. RQ:extractUpTo(4294967100): msglen=100 --> rcv_nxt=4 [4294967100..4)
  128. RQ:extractUpTo(3): msglen=199 --> rcv_nxt=4 [3..4)
  129. RQ:extractUpTo(4): msglen=1 --> rcv_nxt=4
  130. RQ:insertSeg [204..304) --> rcv_nxt=4 [204..304)
  131. RQ:insertSeg [404..504) --> rcv_nxt=4 [204..304) [404..504)
  132. RQ:insertSeg [305..403) --> rcv_nxt=4 [204..304) [305..403) [404..504)
  133. RQ:insertSeg [304..305) --> rcv_nxt=4 [204..403) [404..504)
  134. RQ:insertSeg [403..404) --> rcv_nxt=4 [204..504)
  135. RQ:insertSeg [4..104) --> rcv_nxt=104 [4..104) [204..504)
  136. RQ:insertSeg [54..104) --> rcv_nxt=104 [4..104) [204..504)
  137. RQ:insertSeg [104..154) --> rcv_nxt=154 [4..154) [204..504)
  138. RQ:insertSeg [154..204) --> rcv_nxt=504 [4..504)
  139. RQ:insertSeg [704..804) --> rcv_nxt=504 [4..504) [704..804)
  140. RQ:insertSeg [904..1004) --> rcv_nxt=504 [4..504) [704..804) [904..1004)
  141. RQ:insertSeg [654..704) --> rcv_nxt=504 [4..504) [654..804) [904..1004)
  142. RQ:insertSeg [504..654) --> rcv_nxt=804 [4..804) [904..1004)
  143. RQ:insertSeg [854..904) --> rcv_nxt=804 [4..804) [854..1004)
  144. RQ:insertSeg [824..853) --> rcv_nxt=804 [4..804) [824..853) [854..1004)
  145. RQ:insertSeg [853..904) --> rcv_nxt=804 [4..804) [824..1004)
  146. RQ:insertSeg [804..823) --> rcv_nxt=823 [4..823) [824..1004)
  147. RQ:insertSeg [804..904) --> rcv_nxt=1004 [4..1004)
  148. RQ:extractUpTo(704): msglen=700 --> rcv_nxt=1004 [704..1004)
  149. RQ:extractUpTo(1004): msglen=300 --> rcv_nxt=1004
  150. .