12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- %description:
- Tests TCPMsgBasedSendQueue, TCPMsgBasedRcvQueue classes
- - segments with/without last byte of message
- - overlapped segments
- - segments out of order
- %includes:
- #include "TCPQueueTesterFunctions.h"
- %global:
- using namespace ::inet::tcp;
- %activity:
- TCPMsgBasedSendQueue sendQueue;
- TCPMsgBasedSendQueue *sq = &sendQueue;
- sq->init(1000);
- EV << sq->info() <<"\n";
- TCPMsgBasedRcvQueue rcvQueue;
- TCPMsgBasedRcvQueue *rq = &rcvQueue;
- rq->init(1000);
- EV << rq->info() <<"\n";
- enqueue(sq, "msg1", 100); // 1000..1100
- enqueue(sq, "msg2", 400); // 1100..1500
- enqueue(sq, "msg3", 600); // 1500..2100
- enqueue(sq, "msg4", 50); // 2100..2150
- enqueue(sq, "msg5", 150); // 2150..2300
- insertSegment(rq, createSegmentWithBytes(sq, 1000, 1099));
- insertSegment(rq, createSegmentWithBytes(sq, 1000, 1100));
- insertSegment(rq, createSegmentWithBytes(sq, 1000, 2099));
- insertSegment(rq, createSegmentWithBytes(sq, 1000, 2100));
- insertSegment(rq, createSegmentWithBytes(sq, 2000, 2099));
- insertSegment(rq, createSegmentWithBytes(sq, 2000, 2100));
- extractBytesUpTo(rq, 2099);
- extractBytesUpTo(rq, 2099);
- extractBytesUpTo(rq, 2099);
- extractBytesUpTo(rq, 2099);
- extractBytesUpTo(rq, 2099);
- discardUpTo(sq, 2099);
- extractBytesUpTo(rq, 2100);
- extractBytesUpTo(rq, 2100);
- discardUpTo(sq, 2100);
- insertSegment(rq, createSegmentWithBytes(sq, 2200, 2300));
- insertSegment(rq, createSegmentWithBytes(sq, 2100, 2200));
- extractBytesUpTo(rq, 2200);
- extractBytesUpTo(rq, 2300);
- discardUpTo(sq, 2300);
- EV << ".\n";
- %subst: /[\{\}]/ /
- %contains: stdout
- [1000..1000), 0 packets
- rcv_nxt=1000 0 msgs
- SQ:enqueue("msg1", 100): --> [1000..1100), 1 packets
- SQ:enqueue("msg2", 400): --> [1000..1500), 2 packets
- SQ:enqueue("msg3", 600): --> [1000..2100), 3 packets
- SQ:enqueue("msg4", 50): --> [1000..2150), 4 packets
- SQ:enqueue("msg5", 150): --> [1000..2300), 5 packets
- SQ:createSegmentWithBytes(1000, 1099):
- RQ:insertSeg [1000..1099) --> rcv_nxt=1099 [1000..1099) 0 msgs
- SQ:createSegmentWithBytes(1000, 1100): msg1[1000..1100)
- RQ:insertSeg [1000..1100) --> rcv_nxt=1100 [1000..1100) 1 msgs
- SQ:createSegmentWithBytes(1000, 2099): msg1[1000..1100), msg2[1100..1500)
- RQ:insertSeg [1000..2099) --> rcv_nxt=2099 [1000..2099) 2 msgs
- SQ:createSegmentWithBytes(1000, 2100): msg1[1000..1100), msg2[1100..1500), msg3[1500..2100)
- RQ:insertSeg [1000..2100) --> rcv_nxt=2100 [1000..2100) 3 msgs
- SQ:createSegmentWithBytes(2000, 2099):
- RQ:insertSeg [2000..2099) --> rcv_nxt=2100 [1000..2100) 3 msgs
- SQ:createSegmentWithBytes(2000, 2100): msg3[1500..2100)
- RQ:insertSeg [2000..2100) --> rcv_nxt=2100 [1000..2100) 3 msgs
- RQ:extractUpTo(2099): < < msg1: 100 bytes > < msg2: 400 bytes > > --> rcv_nxt=2100 [2099..2100) 1 msgs
- RQ:extractUpTo(2099): < > --> rcv_nxt=2100 [2099..2100) 1 msgs
- RQ:extractUpTo(2099): < > --> rcv_nxt=2100 [2099..2100) 1 msgs
- RQ:extractUpTo(2099): < > --> rcv_nxt=2100 [2099..2100) 1 msgs
- RQ:extractUpTo(2099): < > --> rcv_nxt=2100 [2099..2100) 1 msgs
- SQ:discardUpTo(2099): [2099..2300), 3 packets
- RQ:extractUpTo(2100): < < msg3: 600 bytes > > --> rcv_nxt=2100 0 msgs
- RQ:extractUpTo(2100): < > --> rcv_nxt=2100 0 msgs
- SQ:discardUpTo(2100): [2100..2300), 2 packets
- SQ:createSegmentWithBytes(2200, 2300): msg5[2150..2300)
- RQ:insertSeg [2200..2300) --> rcv_nxt=2100 [2200..2300) 1 msgs
- SQ:createSegmentWithBytes(2100, 2200): msg4[2100..2150)
- RQ:insertSeg [2100..2200) --> rcv_nxt=2300 [2100..2300) 2 msgs
- RQ:extractUpTo(2200): < < msg4: 50 bytes > > --> rcv_nxt=2300 [2200..2300) 1 msgs
- RQ:extractUpTo(2300): < < msg5: 150 bytes > > --> rcv_nxt=2300 0 msgs
- SQ:discardUpTo(2300): [2300..2300), 0 packets
- .
|