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