author | Peter D. Barnes, Jr. <barnes26@llnl.gov> |
Tue, 18 Aug 2015 16:34:50 -0700 | |
changeset 11605 | 38d79f882224 |
parent 11520 | fa9763e3cbe1 |
child 11607 | 55e71a5cf604 |
permissions | -rw-r--r-- |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
1 |
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
2 |
/* |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
3 |
* Copyright (c) 2010 University of Washington |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
4 |
* |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
5 |
* This program is free software; you can redistribute it and/or modify |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
6 |
* it under the terms of the GNU General Public License version 2 as |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
7 |
* published by the Free Software Foundation; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
8 |
* |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
9 |
* This program is distributed in the hope that it will be useful, |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
12 |
* GNU General Public License for more details. |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
13 |
* |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
14 |
* You should have received a copy of the GNU General Public License |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
15 |
* along with this program; if not, write to the Free Software |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
16 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
17 |
*/ |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
18 |
|
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
19 |
#include <iomanip> |
7380
197e25cb6a89
Bug 1225 - NS_TEST_SOURCEDIR is being treated as if were a std::string
Mitch Watrous <watrous@u.washington.edu>
parents:
7379
diff
changeset
|
20 |
#include <string> |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
21 |
|
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
22 |
#include "ns3/log.h" |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
23 |
#include "ns3/abort.h" |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
24 |
#include "ns3/test.h" |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
25 |
#include "ns3/pcap-file.h" |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
26 |
#include "ns3/config.h" |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
27 |
#include "ns3/string.h" |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
28 |
#include "ns3/uinteger.h" |
10885
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
9266
diff
changeset
|
29 |
#include "ns3/boolean.h" |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
30 |
#include "ns3/data-rate.h" |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
31 |
#include "ns3/inet-socket-address.h" |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
32 |
#include "ns3/point-to-point-helper.h" |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
33 |
#include "ns3/internet-stack-helper.h" |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
34 |
#include "ns3/ipv4-global-routing-helper.h" |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
35 |
#include "ns3/ipv4-address-helper.h" |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
36 |
#include "ns3/packet-sink-helper.h" |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
37 |
#include "ns3/tcp-socket-factory.h" |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
38 |
#include "ns3/node-container.h" |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
39 |
#include "ns3/simulator.h" |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
40 |
#include "ns3/error-model.h" |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
41 |
#include "ns3/pointer.h" |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
42 |
#include "ns3tcp-socket-writer.h" |
11222
ec863d9d1ecb
enable logging in a TCP test suite
Tom Henderson <tomh@tomh.org>
parents:
10926
diff
changeset
|
43 |
#include "ns3/tcp-header.h" |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
44 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
45 |
using namespace ns3; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
46 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
47 |
NS_LOG_COMPONENT_DEFINE ("Ns3TcpStateTest"); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
48 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
49 |
const bool WRITE_VECTORS = false; // set to true to write response vectors |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
50 |
const bool WRITE_LOGGING = false; // set to true to write logging |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
51 |
const uint32_t PCAP_LINK_TYPE = 1187373554; // Some large random number -- we use to verify data was written by this program |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
52 |
const uint32_t PCAP_SNAPLEN = 64; // Don't bother to save much data |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
53 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
54 |
// =========================================================================== |
10926
d5d6708ed0be
update test vectors for test ns3-tcp-state
Tom Henderson <tomh@tomh.org>
parents:
10885
diff
changeset
|
55 |
// Tests of TCP implementation state machine behavior |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
56 |
// =========================================================================== |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
57 |
// |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
58 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
59 |
class Ns3TcpStateTestCase : public TestCase |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
60 |
{ |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
61 |
public: |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
62 |
Ns3TcpStateTestCase (); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
63 |
Ns3TcpStateTestCase (uint32_t testCase); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
64 |
virtual ~Ns3TcpStateTestCase () {} |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
65 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
66 |
private: |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
67 |
virtual void DoSetup (void); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
68 |
virtual void DoRun (void); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
69 |
virtual void DoTeardown (void); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
70 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
71 |
std::string m_pcapFilename; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
72 |
PcapFile m_pcapFile; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
73 |
uint32_t m_testCase; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
74 |
uint32_t m_totalTxBytes; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
75 |
uint32_t m_currentTxBytes; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
76 |
bool m_writeVectors; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
77 |
bool m_writeResults; |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
78 |
bool m_writeLogging; |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
79 |
bool m_needToClose; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
80 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
81 |
void Ipv4L3Tx (std::string context, Ptr<const Packet> packet, Ptr<Ipv4> ipv4, uint32_t interface); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
82 |
void WriteUntilBufferFull (Ptr<Socket> localSocket, uint32_t txSpace); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
83 |
void StartFlow (Ptr<Socket> localSocket, |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
84 |
Ipv4Address servAddress, |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
85 |
uint16_t servPort); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
86 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
87 |
}; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
88 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
89 |
Ns3TcpStateTestCase::Ns3TcpStateTestCase () |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
90 |
: TestCase ("Check the operation of the TCP state machine for several cases"), |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
91 |
m_testCase (0), |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
92 |
m_totalTxBytes (20000), |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
93 |
m_currentTxBytes (0), |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
94 |
m_writeVectors (WRITE_VECTORS), |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
95 |
m_writeResults (false), |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
96 |
m_writeLogging (WRITE_LOGGING), |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
97 |
m_needToClose (true) |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
98 |
{ |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
99 |
} |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
100 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
101 |
Ns3TcpStateTestCase::Ns3TcpStateTestCase (uint32_t testCase) |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
102 |
: TestCase ("Check the operation of the TCP state machine for several cases"), |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
103 |
m_testCase (testCase), |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
104 |
m_totalTxBytes (20000), |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
105 |
m_currentTxBytes (0), |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
106 |
m_writeVectors (WRITE_VECTORS), |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
107 |
m_writeResults (false), |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
108 |
m_writeLogging (WRITE_LOGGING), |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
109 |
m_needToClose (true) |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
110 |
{ |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
111 |
} |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
112 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
113 |
void |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
114 |
Ns3TcpStateTestCase::DoSetup (void) |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
115 |
{ |
7191
7b9f3eba908b
test coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6810
diff
changeset
|
116 |
// |
7b9f3eba908b
test coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6810
diff
changeset
|
117 |
// We expect there to be a file called ns3tcp-state-response-vectors.pcap in |
7b9f3eba908b
test coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6810
diff
changeset
|
118 |
// response-vectors/ of this directory |
7b9f3eba908b
test coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6810
diff
changeset
|
119 |
// |
7b9f3eba908b
test coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6810
diff
changeset
|
120 |
std::ostringstream oss; |
7b9f3eba908b
test coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6810
diff
changeset
|
121 |
oss << "/response-vectors/ns3tcp-state" << m_testCase << "-response-vectors.pcap"; |
7380
197e25cb6a89
Bug 1225 - NS_TEST_SOURCEDIR is being treated as if were a std::string
Mitch Watrous <watrous@u.washington.edu>
parents:
7379
diff
changeset
|
122 |
m_pcapFilename = static_cast<std::string> (NS_TEST_SOURCEDIR) + oss.str (); |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
123 |
|
7191
7b9f3eba908b
test coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6810
diff
changeset
|
124 |
if (m_writeVectors) |
7b9f3eba908b
test coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6810
diff
changeset
|
125 |
{ |
7b9f3eba908b
test coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6810
diff
changeset
|
126 |
m_pcapFile.Open (m_pcapFilename, std::ios::out|std::ios::binary); |
7256
b04ba6772f8c
rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents:
7252
diff
changeset
|
127 |
m_pcapFile.Init (PCAP_LINK_TYPE, PCAP_SNAPLEN); |
7191
7b9f3eba908b
test coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6810
diff
changeset
|
128 |
} |
7b9f3eba908b
test coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6810
diff
changeset
|
129 |
else |
7b9f3eba908b
test coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6810
diff
changeset
|
130 |
{ |
7b9f3eba908b
test coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6810
diff
changeset
|
131 |
m_pcapFile.Open (m_pcapFilename, std::ios::in|std::ios::binary); |
11605
38d79f882224
Log attempted file path on failure to open pcap file.
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents:
11520
diff
changeset
|
132 |
NS_ABORT_MSG_UNLESS (m_pcapFile.GetDataLinkType () == PCAP_LINK_TYPE, |
38d79f882224
Log attempted file path on failure to open pcap file.
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents:
11520
diff
changeset
|
133 |
"Wrong response vectors in directory: opening " << |
38d79f882224
Log attempted file path on failure to open pcap file.
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents:
11520
diff
changeset
|
134 |
m_pcapFilename); |
7191
7b9f3eba908b
test coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6810
diff
changeset
|
135 |
} |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
136 |
} |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
137 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
138 |
void |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
139 |
Ns3TcpStateTestCase::DoTeardown (void) |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
140 |
{ |
7191
7b9f3eba908b
test coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6810
diff
changeset
|
141 |
m_pcapFile.Close (); |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
142 |
} |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
143 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
144 |
void |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
145 |
Ns3TcpStateTestCase::Ipv4L3Tx (std::string context, Ptr<const Packet> packet, Ptr<Ipv4> ipv4, uint32_t interface) |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
146 |
{ |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
147 |
// |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
148 |
// We're not testing IP so remove and toss the header. In order to do this, |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
149 |
// though, we need to copy the packet since we have a const version. |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
150 |
// |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
151 |
Ptr<Packet> p = packet->Copy (); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
152 |
Ipv4Header ipHeader; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
153 |
p->RemoveHeader (ipHeader); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
154 |
|
11222
ec863d9d1ecb
enable logging in a TCP test suite
Tom Henderson <tomh@tomh.org>
parents:
10926
diff
changeset
|
155 |
if (g_log.IsEnabled (ns3::LOG_DEBUG)) |
ec863d9d1ecb
enable logging in a TCP test suite
Tom Henderson <tomh@tomh.org>
parents:
10926
diff
changeset
|
156 |
{ |
ec863d9d1ecb
enable logging in a TCP test suite
Tom Henderson <tomh@tomh.org>
parents:
10926
diff
changeset
|
157 |
TcpHeader th; |
ec863d9d1ecb
enable logging in a TCP test suite
Tom Henderson <tomh@tomh.org>
parents:
10926
diff
changeset
|
158 |
p->PeekHeader (th); |
ec863d9d1ecb
enable logging in a TCP test suite
Tom Henderson <tomh@tomh.org>
parents:
10926
diff
changeset
|
159 |
std::clog << Simulator::Now ().GetSeconds () << " TCP header " << th << std::endl; |
ec863d9d1ecb
enable logging in a TCP test suite
Tom Henderson <tomh@tomh.org>
parents:
10926
diff
changeset
|
160 |
} |
ec863d9d1ecb
enable logging in a TCP test suite
Tom Henderson <tomh@tomh.org>
parents:
10926
diff
changeset
|
161 |
|
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
162 |
// |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
163 |
// What is left is the TCP header and any data that may be sent. We aren't |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
164 |
// sending any TCP data, so we expect what remains is only TCP header, which |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
165 |
// is a small thing to save. |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
166 |
// |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
167 |
if (m_writeVectors) |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
168 |
{ |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
169 |
// |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
170 |
// Save the TCP under test response for later testing. |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
171 |
// |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
172 |
Time tNow = Simulator::Now (); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
173 |
int64_t tMicroSeconds = tNow.GetMicroSeconds (); |
7191
7b9f3eba908b
test coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6810
diff
changeset
|
174 |
|
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
175 |
m_pcapFile.Write (uint32_t (tMicroSeconds / 1000000), |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
176 |
uint32_t (tMicroSeconds % 1000000), |
11520
fa9763e3cbe1
Simplify ns3tcp test code used for pcap writing
Matthieu Coudron <mattator@gmail.com>
parents:
11222
diff
changeset
|
177 |
p); |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
178 |
} |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
179 |
else |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
180 |
{ |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
181 |
// |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
182 |
// Read the TCP under test expected response from the expected vector |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
183 |
// file and see if it still does the right thing. |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
184 |
// |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
185 |
uint8_t expected[PCAP_SNAPLEN]; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
186 |
uint32_t tsSec, tsUsec, inclLen, origLen, readLen; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
187 |
m_pcapFile.Read (expected, sizeof(expected), tsSec, tsUsec, inclLen, origLen, readLen); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
188 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
189 |
uint8_t *actual = new uint8_t[readLen]; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
190 |
p->CopyData (actual, readLen); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
191 |
|
7256
b04ba6772f8c
rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents:
7252
diff
changeset
|
192 |
uint32_t result = memcmp (actual, expected, readLen); |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
193 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
194 |
delete [] actual; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
195 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
196 |
// |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
197 |
// Avoid streams of errors -- only report the first. |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
198 |
// |
7379
ff0d074f885a
add support for --update-data to test.py, move test runner code to library for modular build, add support for hierarchical tests beyond the previous two-level hierarchy.
Mathieu Lacage <mathieu.lacage@gmail.com>
parents:
7256
diff
changeset
|
199 |
if (IsStatusSuccess ()) |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
200 |
{ |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
201 |
NS_TEST_EXPECT_MSG_EQ (result, 0, "Expected data comparison error"); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
202 |
} |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
203 |
} |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
204 |
} |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
205 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
206 |
//////////////////////////////////////////////////////////////////// |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
207 |
// Implementing an "application" to send bytes over a TCP connection |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
208 |
void |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
209 |
Ns3TcpStateTestCase::WriteUntilBufferFull (Ptr<Socket> localSocket, uint32_t txSpace) |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
210 |
{ |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
211 |
while (m_currentTxBytes < m_totalTxBytes) |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
212 |
{ |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
213 |
uint32_t left = m_totalTxBytes - m_currentTxBytes; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
214 |
uint32_t dataOffset = m_currentTxBytes % 1040; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
215 |
uint32_t toWrite = 1040 - dataOffset; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
216 |
uint32_t txAvail = localSocket->GetTxAvailable (); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
217 |
toWrite = std::min (toWrite, left); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
218 |
toWrite = std::min (toWrite, txAvail); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
219 |
if (txAvail == 0) |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
220 |
{ |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
221 |
return; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
222 |
}; |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
223 |
if (m_writeLogging) |
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
224 |
{ |
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
225 |
std::clog << "Submitting " |
7191
7b9f3eba908b
test coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6810
diff
changeset
|
226 |
<< toWrite << " bytes to TCP socket" << std::endl; |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
227 |
} |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
228 |
int amountSent = localSocket->Send (0, toWrite, 0); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
229 |
NS_ASSERT (amountSent > 0); // Given GetTxAvailable() non-zero, amountSent should not be zero |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
230 |
m_currentTxBytes += amountSent; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
231 |
} |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
232 |
if (m_needToClose) |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
233 |
{ |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
234 |
if (m_writeLogging) |
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
235 |
{ |
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
236 |
std::clog << "Close socket at " |
7191
7b9f3eba908b
test coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6810
diff
changeset
|
237 |
<< Simulator::Now ().GetSeconds () |
7b9f3eba908b
test coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6810
diff
changeset
|
238 |
<< std::endl; |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
239 |
} |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
240 |
localSocket->Close (); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
241 |
m_needToClose = false; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
242 |
} |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
243 |
} |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
244 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
245 |
void |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
246 |
Ns3TcpStateTestCase::StartFlow (Ptr<Socket> localSocket, |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
247 |
Ipv4Address servAddress, |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
248 |
uint16_t servPort) |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
249 |
{ |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
250 |
if (m_writeLogging) |
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
251 |
{ |
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
252 |
std::clog << "Starting flow at time " |
7191
7b9f3eba908b
test coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6810
diff
changeset
|
253 |
<< Simulator::Now ().GetSeconds () |
7b9f3eba908b
test coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6810
diff
changeset
|
254 |
<< std::endl; |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
255 |
} |
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
256 |
|
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
257 |
localSocket->Connect (InetSocketAddress (servAddress, servPort)); // connect |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
258 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
259 |
// tell the tcp implementation to call WriteUntilBufferFull again |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
260 |
// if we blocked and new tx buffer space becomes available |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
261 |
localSocket->SetSendCallback (MakeCallback |
7252
c8200621e252
rerun check-style.py with uncrustify-0.58
Tom Henderson <tomh@tomh.org>
parents:
7191
diff
changeset
|
262 |
(&Ns3TcpStateTestCase::WriteUntilBufferFull, |
c8200621e252
rerun check-style.py with uncrustify-0.58
Tom Henderson <tomh@tomh.org>
parents:
7191
diff
changeset
|
263 |
this)); |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
264 |
WriteUntilBufferFull (localSocket, localSocket->GetTxAvailable ()); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
265 |
} |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
266 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
267 |
void |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
268 |
Ns3TcpStateTestCase::DoRun (void) |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
269 |
{ |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
270 |
// Network topology |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
271 |
// |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
272 |
// 10Mb/s, 0.1ms 10Mb/s, 0.1ms |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
273 |
// n0-----------------n1-----------------n2 |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
274 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
275 |
std::string tcpModel ("ns3::TcpNewReno"); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
276 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
277 |
Config::SetDefault ("ns3::TcpL4Protocol::SocketType", StringValue (tcpModel)); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
278 |
Config::SetDefault ("ns3::TcpSocket::SegmentSize", UintegerValue (1000)); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
279 |
Config::SetDefault ("ns3::TcpSocket::DelAckCount", UintegerValue (1)); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
280 |
Config::SetDefault ("ns3::DropTailQueue::MaxPackets", UintegerValue (20)); |
10885
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
9266
diff
changeset
|
281 |
Config::SetDefault ("ns3::TcpSocketBase::Timestamp", BooleanValue (false)); |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
282 |
|
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
283 |
if (m_writeLogging) |
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
284 |
{ |
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
285 |
LogComponentEnableAll (LOG_PREFIX_FUNC); |
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
286 |
LogComponentEnable ("ErrorModel", LOG_LEVEL_DEBUG); |
10926
d5d6708ed0be
update test vectors for test ns3-tcp-state
Tom Henderson <tomh@tomh.org>
parents:
10885
diff
changeset
|
287 |
LogComponentEnable ("Ns3TcpStateTest", LOG_LEVEL_DEBUG); |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
288 |
LogComponentEnable ("TcpNewReno", LOG_LEVEL_INFO); |
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
289 |
LogComponentEnable ("TcpReno", LOG_LEVEL_INFO); |
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
290 |
LogComponentEnable ("TcpTahoe", LOG_LEVEL_INFO); |
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
291 |
LogComponentEnable ("TcpSocketBase", LOG_LEVEL_INFO); |
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
292 |
} |
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
293 |
|
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
294 |
//////////////////////////////////////////////////////// |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
295 |
// Topology construction |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
296 |
// |
7191
7b9f3eba908b
test coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6810
diff
changeset
|
297 |
|
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
298 |
// Create three nodes |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
299 |
NodeContainer n0n1; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
300 |
n0n1.Create (2); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
301 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
302 |
NodeContainer n1n2; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
303 |
n1n2.Add (n0n1.Get (1)); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
304 |
n1n2.Create (1); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
305 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
306 |
// Set up TCP/IP stack to all nodes (and create loopback device at device 0) |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
307 |
InternetStackHelper internet; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
308 |
internet.InstallAll (); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
309 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
310 |
// Connect the nodes |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
311 |
PointToPointHelper p2p; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
312 |
p2p.SetDeviceAttribute ("DataRate", DataRateValue (DataRate (1000000))); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
313 |
p2p.SetChannelAttribute ("Delay", TimeValue (Seconds (0.0001))); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
314 |
NetDeviceContainer dev0 = p2p.Install (n0n1); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
315 |
NetDeviceContainer dev1 = p2p.Install (n1n2); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
316 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
317 |
// Add IP addresses to each network interfaces |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
318 |
Ipv4AddressHelper ipv4; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
319 |
ipv4.SetBase ("10.1.3.0", "255.255.255.0"); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
320 |
ipv4.Assign (dev0); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
321 |
ipv4.SetBase ("10.1.2.0", "255.255.255.0"); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
322 |
Ipv4InterfaceContainer ipInterfs = ipv4.Assign (dev1); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
323 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
324 |
// Set up routes to all nodes |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
325 |
Ipv4GlobalRoutingHelper::PopulateRoutingTables (); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
326 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
327 |
//////////////////////////////////////////////////////// |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
328 |
// A flow from node n0 to node n2 |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
329 |
// |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
330 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
331 |
// Create a packet sink to receive packets on node n2 |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
332 |
uint16_t servPort = 50000; // Destination port number |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
333 |
PacketSinkHelper sink ("ns3::TcpSocketFactory", InetSocketAddress (Ipv4Address::GetAny (), servPort)); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
334 |
ApplicationContainer sinkApps = sink.Install (n1n2.Get (1)); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
335 |
sinkApps.Start (Seconds (0.0)); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
336 |
sinkApps.Stop (Seconds (100.0)); |
7191
7b9f3eba908b
test coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6810
diff
changeset
|
337 |
|
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
338 |
// Create a data source to send packets on node n0 |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
339 |
// Instead of full application, here use the socket directly by |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
340 |
// registering callbacks in function StarFlow(). |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
341 |
Ptr<Socket> localSocket = Socket::CreateSocket (n0n1.Get (0), |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
342 |
TcpSocketFactory::GetTypeId ()); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
343 |
localSocket->Bind (); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
344 |
Simulator::ScheduleNow (&Ns3TcpStateTestCase::StartFlow, this, |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
345 |
localSocket, ipInterfs.GetAddress (1), servPort); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
346 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
347 |
Config::Connect ("/NodeList/0/$ns3::Ipv4L3Protocol/Tx", |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
348 |
MakeCallback (&Ns3TcpStateTestCase::Ipv4L3Tx, this)); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
349 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
350 |
//////////////////////////////////////////////////////// |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
351 |
// Set up different test cases: Lost model at node n1, different file size |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
352 |
// |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
353 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
354 |
std::list<uint32_t> dropListN0; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
355 |
std::list<uint32_t> dropListN1; |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
356 |
std::string caseDescription; |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
357 |
switch (m_testCase) |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
358 |
{ |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
359 |
case 0: |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
360 |
m_totalTxBytes = 1000; |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
361 |
caseDescription = "Verify connection establishment"; |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
362 |
break; |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
363 |
case 1: |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
364 |
m_totalTxBytes = 100*1000; |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
365 |
caseDescription = "Verify a bigger (100 pkts) transfer: Sliding window operation, etc."; |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
366 |
break; |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
367 |
case 2: |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
368 |
m_totalTxBytes = 1000; |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
369 |
caseDescription = "Survive a SYN lost"; |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
370 |
dropListN0.push_back (0); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
371 |
break; |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
372 |
case 3: |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
373 |
m_totalTxBytes = 2000; |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
374 |
caseDescription = "Survive a SYN+ACK lost"; |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
375 |
dropListN1.push_back (0); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
376 |
break; |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
377 |
case 4: |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
378 |
m_totalTxBytes = 2000; |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
379 |
caseDescription = "Survive a ACK (last packet in 3-way handshake) lost"; |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
380 |
dropListN0.push_back (1); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
381 |
break; |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
382 |
case 5: |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
383 |
m_totalTxBytes = 0; |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
384 |
caseDescription = "Immediate FIN upon SYN_RCVD"; |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
385 |
m_needToClose = false; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
386 |
dropListN0.push_back (1); // Hide the ACK in 3WHS |
7256
b04ba6772f8c
rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents:
7252
diff
changeset
|
387 |
Simulator::Schedule (Seconds (0.002), &Socket::Close, localSocket); |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
388 |
break; |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
389 |
case 6: |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
390 |
m_totalTxBytes = 5000; |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
391 |
caseDescription = "Simulated simultaneous close"; |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
392 |
dropListN1.push_back (5); // Hide the ACK-to-FIN from n2 |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
393 |
break; |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
394 |
case 7: |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
395 |
m_totalTxBytes = 5000; |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
396 |
caseDescription = "FIN check 1: Loss of initiator's FIN. Wait until app close"; |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
397 |
m_needToClose = false; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
398 |
dropListN0.push_back (7); // Hide the FIN from n0 |
7256
b04ba6772f8c
rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents:
7252
diff
changeset
|
399 |
Simulator::Schedule (Seconds (0.04), &Socket::Close, localSocket); |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
400 |
break; |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
401 |
case 8: |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
402 |
m_totalTxBytes = 5000; |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
403 |
caseDescription = "FIN check 2: Loss responder's FIN. FIN will be resent after last ack timeout"; |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
404 |
dropListN1.push_back (6); // Hide the FIN from n2 |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
405 |
break; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
406 |
default: |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
407 |
NS_FATAL_ERROR ("Program fatal error: specified test case not supported: " |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
408 |
<< m_testCase); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
409 |
break; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
410 |
} |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
411 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
412 |
Ptr<ReceiveListErrorModel> errN0 = CreateObject<ReceiveListErrorModel> (); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
413 |
errN0->SetList (dropListN0); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
414 |
dev0.Get (1)->SetAttribute ("ReceiveErrorModel", PointerValue (errN0)); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
415 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
416 |
Ptr<ReceiveListErrorModel> errN1 = CreateObject<ReceiveListErrorModel> (); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
417 |
errN1->SetList (dropListN1); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
418 |
dev1.Get (0)->SetAttribute ("ReceiveErrorModel", PointerValue (errN1)); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
419 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
420 |
std::ostringstream oss; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
421 |
oss << "tcp-state" << m_testCase << "-test-case"; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
422 |
if (m_writeResults) |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
423 |
{ |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
424 |
p2p.EnablePcapAll (oss.str ()); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
425 |
p2p.EnableAsciiAll (oss.str ()); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
426 |
} |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
427 |
|
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
428 |
if (m_writeLogging) |
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
429 |
{ |
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
430 |
Ptr<OutputStreamWrapper> osw = Create<OutputStreamWrapper> (&std::clog); |
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
431 |
*(osw->GetStream ()) << std::setprecision (9) << std::fixed; |
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
432 |
p2p.EnableAsciiAll (osw); |
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
433 |
|
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
434 |
std::clog << std::endl << "Running TCP test-case " << m_testCase << ": " |
7191
7b9f3eba908b
test coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6810
diff
changeset
|
435 |
<< caseDescription << std::endl; |
6810
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
436 |
} |
36929d9236ad
Add TCP test case logging, scripts
Josh Pelkey <jpelkey@gatech.edu>
parents:
6809
diff
changeset
|
437 |
|
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
438 |
// Finally, set up the simulator to run. The 1000 second hard limit is a |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
439 |
// failsafe in case some change above causes the simulation to never end |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
440 |
Simulator::Stop (Seconds (1000)); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
441 |
Simulator::Run (); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
442 |
Simulator::Destroy (); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
443 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
444 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
445 |
} |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
446 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
447 |
class Ns3TcpStateTestSuite : public TestSuite |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
448 |
{ |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
449 |
public: |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
450 |
Ns3TcpStateTestSuite (); |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
451 |
}; |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
452 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
453 |
Ns3TcpStateTestSuite::Ns3TcpStateTestSuite () |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
454 |
: TestSuite ("ns3-tcp-state", SYSTEM) |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
455 |
{ |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
456 |
Packet::EnablePrinting (); // Enable packet metadata for all test cases |
9266
d26408b17360
bug 1563: get rid of default argument value in AddTestCase
Nicola Baldo <nbaldo@cttc.es>
parents:
9102
diff
changeset
|
457 |
AddTestCase (new Ns3TcpStateTestCase (0), TestCase::QUICK); |
d26408b17360
bug 1563: get rid of default argument value in AddTestCase
Nicola Baldo <nbaldo@cttc.es>
parents:
9102
diff
changeset
|
458 |
AddTestCase (new Ns3TcpStateTestCase (1), TestCase::QUICK); |
d26408b17360
bug 1563: get rid of default argument value in AddTestCase
Nicola Baldo <nbaldo@cttc.es>
parents:
9102
diff
changeset
|
459 |
AddTestCase (new Ns3TcpStateTestCase (2), TestCase::QUICK); |
d26408b17360
bug 1563: get rid of default argument value in AddTestCase
Nicola Baldo <nbaldo@cttc.es>
parents:
9102
diff
changeset
|
460 |
AddTestCase (new Ns3TcpStateTestCase (3), TestCase::QUICK); |
d26408b17360
bug 1563: get rid of default argument value in AddTestCase
Nicola Baldo <nbaldo@cttc.es>
parents:
9102
diff
changeset
|
461 |
AddTestCase (new Ns3TcpStateTestCase (4), TestCase::QUICK); |
d26408b17360
bug 1563: get rid of default argument value in AddTestCase
Nicola Baldo <nbaldo@cttc.es>
parents:
9102
diff
changeset
|
462 |
AddTestCase (new Ns3TcpStateTestCase (5), TestCase::QUICK); |
d26408b17360
bug 1563: get rid of default argument value in AddTestCase
Nicola Baldo <nbaldo@cttc.es>
parents:
9102
diff
changeset
|
463 |
AddTestCase (new Ns3TcpStateTestCase (6), TestCase::QUICK); |
d26408b17360
bug 1563: get rid of default argument value in AddTestCase
Nicola Baldo <nbaldo@cttc.es>
parents:
9102
diff
changeset
|
464 |
AddTestCase (new Ns3TcpStateTestCase (7), TestCase::QUICK); |
d26408b17360
bug 1563: get rid of default argument value in AddTestCase
Nicola Baldo <nbaldo@cttc.es>
parents:
9102
diff
changeset
|
465 |
AddTestCase (new Ns3TcpStateTestCase (8), TestCase::QUICK); |
6807
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
466 |
} |
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
467 |
|
82daf3da652a
Move tcp-testcases to actual test suite
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff
changeset
|
468 |
static Ns3TcpStateTestSuite ns3TcpLossTestSuite; |