20 #include "ns3/abort.h"
21 #include "ns3/config.h"
22 #include "ns3/csma-helper.h"
23 #include "ns3/data-rate.h"
24 #include "ns3/inet-socket-address.h"
25 #include "ns3/internet-stack-helper.h"
26 #include "ns3/ipv4-address-helper.h"
27 #include "ns3/ipv4-global-routing-helper.h"
29 #include "ns3/node-container.h"
30 #include "ns3/packet-sink-helper.h"
31 #include "ns3/pcap-file.h"
32 #include "ns3/point-to-point-helper.h"
33 #include "ns3/simulator.h"
34 #include "ns3/string.h"
35 #include "ns3/tcp-socket-factory.h"
37 #include "ns3/uinteger.h"
59 void DoRun()
override;
75 :
TestCase(
"Check that ns-3 TCP successfully transfers an application data write of various "
76 "sizes (point-to-point)"),
90 uint16_t sinkPort = 50000;
91 double sinkStopTime = 40;
92 double writerStopTime = 30;
93 double simStopTime = 60;
112 address.SetBase(
"10.1.1.0",
"255.255.255.252");
117 socketWriter->Setup(n0, sinkAddress);
119 socketWriter->SetStartTime(
Seconds(0.));
120 socketWriter->SetStopTime(writerStopTimeObj);
127 apps.
Stop(sinkStopTimeObj);
134 Simulator::Schedule(
Seconds(10), &SocketWriter::Write, socketWriter, 1);
136 Simulator::Schedule(
Seconds(12), &SocketWriter::Write, socketWriter, 10);
138 Simulator::Schedule(
Seconds(14), &SocketWriter::Write, socketWriter, 100);
140 Simulator::Schedule(
Seconds(16), &SocketWriter::Write, socketWriter, 1000);
143 Simulator::Schedule(writerStopTimeObj, &SocketWriter::Close, socketWriter);
150 Simulator::Stop(simStopTimeObj);
152 Simulator::Destroy();
157 "Incorrect number of expected receive events");
164 "Mismatch: expected " << in <<
" bytes, got " << out <<
" bytes");
184 void DoRun()
override;
200 :
TestCase(
"Check to see that ns-3 TCP successfully transfers an application data write of "
201 "various sizes (CSMA)"),
202 m_writeResults(false)
215 uint16_t sinkPort = 50000;
216 double sinkStopTime = 40;
217 double writerStopTime = 30;
218 double simStopTime = 60;
241 address.SetBase(
"10.1.1.0",
"255.255.255.252");
246 socketWriter->Setup(n0, sinkAddress);
248 socketWriter->SetStartTime(
Seconds(0.));
249 socketWriter->SetStopTime(writerStopTimeObj);
256 apps.
Stop(sinkStopTimeObj);
264 Simulator::Schedule(
Seconds(10), &SocketWriter::Write, socketWriter, 1);
266 Simulator::Schedule(
Seconds(12), &SocketWriter::Write, socketWriter, 10);
268 Simulator::Schedule(
Seconds(14), &SocketWriter::Write, socketWriter, 100);
270 Simulator::Schedule(
Seconds(16), &SocketWriter::Write, socketWriter, 1000);
273 Simulator::Schedule(
Seconds(16), &SocketWriter::Write, socketWriter, 1001);
276 Simulator::Schedule(writerStopTimeObj, &SocketWriter::Close, socketWriter);
280 csma.EnablePcapAll(
"tcp-socket-test-case-2",
false);
282 Simulator::Stop(simStopTimeObj);
284 Simulator::Destroy();
289 "Incorrect number of expected receive events");
296 "Mismatch: expected " << in <<
" bytes, got " << out <<
" bytes");
Tests of TCP implementations from the application/socket perspective using CSMA links.
TestVectors< uint32_t > m_inputs
Sent packets test vector.
TestVectors< uint32_t > m_responses
Received packets test vector.
bool m_writeResults
True if write PCAP files.
Ns3TcpSocketTestCaseCsma()
~Ns3TcpSocketTestCaseCsma() override
void SinkRx(std::string path, Ptr< const Packet > p, const Address &address)
Receive a TCP packet.
void DoRun() override
Implementation to actually run this TestCase.
Tests of TCP implementations from the application/socket perspective using point-to-point links.
Ns3TcpSocketTestCaseP2P()
~Ns3TcpSocketTestCaseP2P() override
TestVectors< uint32_t > m_responses
Received packets test vector.
TestVectors< uint32_t > m_inputs
Sent packets test vector.
void SinkRx(std::string path, Ptr< const Packet > p, const Address &address)
Receive a TCP packet.
void DoRun() override
Implementation to actually run this TestCase.
bool m_writeResults
True if write PCAP files.
TCP implementations from the application/socket perspective TestSuite.
a polymophic address class
holds a vector of ns3::Application pointers.
void Start(Time start) const
Start all of the Applications in this container at the start time given as a parameter.
void Stop(Time stop) const
Arrange for all of the Applications in this container to Stop() at the Time given as a parameter.
build a set of CsmaNetDevice objects
aggregate IP/TCP/UDP functionality to existing Nodes.
A helper class to make life easier while doing simple IPv4 address assignment in scripts.
holds a vector of std::pair of Ptr<Ipv4> and interface index.
Ipv4Address GetAddress(uint32_t i, uint32_t j=0) const
holds a vector of ns3::NetDevice pointers
keep track of a set of node pointers.
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer.
Ptr< Node > Get(uint32_t i) const
Get the Ptr<Node> stored in this container at a given index.
uint32_t AddApplication(Ptr< Application > application)
Associate an Application to this Node.
uint32_t GetSize() const
Returns the the size in bytes of the packet (including the zero-filled initial payload).
A helper to make it easier to instantiate an ns3::PacketSinkApplication on a set of nodes.
Build a set of PointToPointNetDevice objects.
Hold variables of type string.
void AddTestCase(TestCase *testCase, TestDuration duration=QUICK)
Add an individual child TestCase to this test suite.
T Get(std::size_t i) const
Get the i'th test vector.
std::size_t GetN() const
Get the total number of test vectors.
std::size_t Add(T vector)
Simulation virtual time values and global simulation resolution.
Hold an unsigned integer type.
static void SinkRx(std::string path, Ptr< const Packet > p, const Address &address)
Rx sink.
void SetDefault(std::string name, const AttributeValue &value)
void Connect(std::string path, const CallbackBase &cb)
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
#define NS_TEST_ASSERT_MSG_EQ(actual, limit, msg)
Test that an actual and expected (limit) value are equal and report and abort if not.
Time Seconds(double value)
Construct a Time in the indicated unit.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Callback< R, Args... > MakeCallback(R(T::*memPtr)(Args...), OBJ objPtr)
Build Callbacks for class method members which take varying numbers of arguments and potentially retu...
static Ns3TcpSocketTestSuite g_ns3TcpSocketTestSuite
Do not forget to allocate an instance of this TestSuite.
Ptr< PacketSink > sink
Pointer to the packet sink application.