21 #include "ns3/abort.h"
23 #include "ns3/pcap-file.h"
24 #include "ns3/config.h"
25 #include "ns3/string.h"
26 #include "ns3/uinteger.h"
27 #include "ns3/data-rate.h"
28 #include "ns3/inet-socket-address.h"
29 #include "ns3/point-to-point-helper.h"
30 #include "ns3/internet-stack-helper.h"
31 #include "ns3/ipv4-global-routing-helper.h"
32 #include "ns3/ipv4-address-helper.h"
33 #include "ns3/packet-sink-helper.h"
34 #include "ns3/tcp-socket-factory.h"
35 #include "ns3/node-container.h"
36 #include "ns3/simulator.h"
37 #include "ns3/error-model.h"
38 #include "ns3/pointer.h"
39 #include "../ns3tcp/ns3tcp-socket-writer.h"
57 virtual void DoRun (
void);
67 :
TestCase (
"Check that nsc TCP survives loss of first two SYNs"),
68 m_writeResults (false)
81 uint16_t sinkPort = 50000;
82 double sinkStopTime = 40;
83 double writerStopTime = 30;
84 double simStopTime = 60;
85 Time sinkStopTimeObj = Seconds (sinkStopTime);
86 Time writerStopTimeObj = Seconds (writerStopTime);
87 Time simStopTimeObj= Seconds (simStopTime);
93 pointToPoint.SetDeviceAttribute (
"DataRate",
StringValue (
"5Mbps"));
94 pointToPoint.SetChannelAttribute (
"Delay",
StringValue (
"200ms"));
97 devices = pointToPoint.Install (n0, n1);
100 internet.
SetTcp (
"ns3::NscTcpL4Protocol",
"Library",
StringValue (
"liblinux2.6.26.so"));
104 address.
SetBase (
"10.1.1.0",
"255.255.255.252");
109 socketWriter->
Setup (n0, sinkAddress);
118 apps.
Start (Seconds (0.0));
119 apps.
Stop (sinkStopTimeObj);
125 Simulator::Schedule (Seconds (10), &SocketWriter::Write, socketWriter, 500);
127 Simulator::Schedule (writerStopTimeObj, &SocketWriter::Close, socketWriter);
129 std::list<uint32_t> sampleList;
131 sampleList.push_back (0);
132 sampleList.push_back (1);
136 devices.
Get (1)->SetAttribute (
"ReceiveErrorModel",
PointerValue (pem));
140 pointToPoint.EnablePcapAll (
"nsc-tcp-loss-test-case-1");
141 pointToPoint.EnableAsciiAll (
"nsc-tcp-loss-test-case-1");
144 Simulator::Stop (simStopTimeObj);
146 Simulator::Destroy ();
165 virtual void DoRun (
void);
175 :
TestCase (
"Check that nsc TCP survives loss of first data packet"),
176 m_writeResults (false)
189 uint16_t sinkPort = 50000;
190 double sinkStopTime = 40;
191 double writerStopTime = 12;
192 double simStopTime = 60;
193 Time sinkStopTimeObj = Seconds (sinkStopTime);
194 Time writerStopTimeObj = Seconds (writerStopTime);
195 Time simStopTimeObj= Seconds (simStopTime);
201 pointToPoint.SetDeviceAttribute (
"DataRate",
StringValue (
"5Mbps"));
202 pointToPoint.SetChannelAttribute (
"Delay",
StringValue (
"200ms"));
205 devices = pointToPoint.Install (n0, n1);
208 internet.
SetTcp (
"ns3::NscTcpL4Protocol",
"Library",
StringValue (
"liblinux2.6.26.so"));
212 address.
SetBase (
"10.1.1.0",
"255.255.255.252");
217 socketWriter->
Setup (n0, sinkAddress);
226 apps.
Start (Seconds (0.0));
227 apps.
Stop (sinkStopTimeObj);
233 Simulator::Schedule (Seconds (10), &SocketWriter::Write, socketWriter, 500);
235 Simulator::Schedule (writerStopTimeObj, &SocketWriter::Close, socketWriter);
237 std::list<uint32_t> sampleList;
239 sampleList.push_back (2);
243 devices.
Get (1)->SetAttribute (
"ReceiveErrorModel",
PointerValue (pem));
247 pointToPoint.EnablePcapAll (
"nsc-tcp-loss-test-case-2");
248 pointToPoint.EnableAsciiAll (
"nsc-tcp-loss-test-case-2");
251 Simulator::Stop (simStopTimeObj);
253 Simulator::Destroy ();
holds a vector of ns3::Application pointers.
uint32_t AddApplication(Ptr< Application > application)
void SetStopTime(Time stop)
Specify application stop time.
keep track of time values and allow control of global simulation resolution
TestVectors< uint32_t > m_responses
virtual void DoRun(void)
Implementation to actually run this TestCase.
NS_LOG_COMPONENT_DEFINE("GrantedTimeWindowMpiInterface")
holds a vector of std::pair of Ptr and interface index.
T Get(uint32_t i) const
Get the i'th test vector.
hold variables of type string
Ptr< NetDevice > Get(uint32_t i) const
Get the Ptr stored in this container at a given index.
virtual void DoRun(void)
Implementation to actually run this TestCase.
TestVectors< uint32_t > m_inputs
void SinkRx(std::string path, Ptr< const Packet > p, const Address &address)
aggregate IP/TCP/UDP functionality to existing Nodes.
uint32_t GetSize(void) const
A helper to make it easier to instantiate an ns3::PacketSinkApplication on a set of nodes...
Build a set of PointToPointNetDevice objects.
void Connect(std::string path, const CallbackBase &cb)
virtual ~NscTcpLossTestCase1()
uint32_t GetN(void) const
a polymophic address class
void Setup(Ptr< Node > node, Address peer)
TestVectors< uint32_t > m_inputs
void InstallAll(void) const
Aggregate IPv4, IPv6, UDP, and TCP stacks to all nodes in the simulation.
holds a vector of ns3::NetDevice pointers
TestVectors< uint32_t > m_responses
virtual ~NscTcpLossTestCase2()
Callback< R > MakeCallback(R(T::*memPtr)(void), OBJ objPtr)
void Start(Time start)
Arrange for all of the Applications in this container to Start() at the Time given as a parameter...
void SetTcp(std::string tid)
set the Tcp stack which will not need any other parameter.
void SetList(const std::list< uint32_t > &packetlist)
void AddTestCase(TestCase *testCase) NS_DEPRECATED
Add an individual child TestCase case to this TestCase.
void SinkRx(std::string path, Ptr< const Packet > p, const Address &address)
void Stop(Time stop)
Arrange for all of the Applications in this container to Stop() at the Time given as a parameter...
Ipv4InterfaceContainer Assign(const NetDeviceContainer &c)
Assign IP addresses to the net devices specified in the container based on the current network prefix...
ApplicationContainer Install(NodeContainer c) const
Install an ns3::PacketSinkApplication on each node of the input container configured with all the att...
A helper class to make life easier while doing simple IPv4 address assignment in scripts.
static void SinkRx(std::string path, Ptr< const Packet > p, const Address &address)
static NscTcpLossTestSuite nscTcpLossTestSuite
void SetStartTime(Time start)
Specify application start time.
void SetBase(Ipv4Address network, Ipv4Mask mask, Ipv4Address base="0.0.0.1")
Set the base network number, network mask and base address.
#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.
Ipv4Address GetAddress(uint32_t i, uint32_t j=0) const