8#include "ns3/boolean.h"
10#include "ns3/csma-helper.h"
11#include "ns3/data-rate.h"
12#include "ns3/inet-socket-address.h"
13#include "ns3/internet-stack-helper.h"
14#include "ns3/ipv4-address-helper.h"
15#include "ns3/ipv4-global-routing-helper.h"
17#include "ns3/node-container.h"
18#include "ns3/packet-sink-helper.h"
19#include "ns3/pcap-file.h"
20#include "ns3/point-to-point-helper.h"
21#include "ns3/simulator.h"
22#include "ns3/string.h"
23#include "ns3/tcp-socket-factory.h"
25#include "ns3/uinteger.h"
51 void DoRun()
override;
69 "Check that ns-3 TCP Nagle's algorithm works correctly and that we can turn it off."),
84 uint16_t sinkPort = 50000;
85 double sinkStopTime = 8;
86 double writerStopTime = 5;
87 double simStopTime = 10;
96 pointToPoint.SetDeviceAttribute(
"DataRate",
StringValue(
"5Mbps"));
97 pointToPoint.SetChannelAttribute(
"Delay",
StringValue(
"2ms"));
100 devices = pointToPoint.Install(n0, n1);
103 internet.InstallAll();
106 address.SetBase(
"10.1.1.0",
"255.255.255.252");
111 socketWriter->Setup(n0, sinkAddress);
112 n0->AddApplication(socketWriter);
113 socketWriter->SetStartTime(
Seconds(0.));
114 socketWriter->SetStopTime(writerStopTimeObj);
121 apps.
Stop(sinkStopTimeObj);
172 std::ostringstream oss;
175 oss <<
"tcp-no-delay-on-test-case";
176 pointToPoint.EnablePcapAll(oss.str());
180 oss <<
"tcp-no-delay-off-test-case";
181 pointToPoint.EnablePcapAll(oss.str());
192 "Incorrect number of expected receive events");
199 "Mismatch: expected " << in <<
" bytes, got " << out <<
" bytes");
Tests of Nagle's algorithm and the TCP no delay option.
Ns3TcpNoDelayTestCase(bool noDelay)
Constructor.
bool m_noDelay
Enable or disable TCP no delay option.
void SinkRx(std::string path, Ptr< const Packet > p, const Address &address)
Receive a TCP packet.
~Ns3TcpNoDelayTestCase() override
TestVectors< uint32_t > m_responses
Received packets test vector.
void DoRun() override
Implementation to actually run this TestCase.
bool m_writeResults
True if write PCAP files.
TestVectors< uint32_t > m_inputs
Sent packets test vector.
TCP Nagle's algorithm and the TCP no delay option 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.
aggregate IP/TCP/UDP functionality to existing Nodes.
A helper class to make life easier while doing simple IPv4 address assignment in scripts.
static Ipv4Address GetAny()
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
A helper to make it easier to instantiate an ns3::PacketSinkApplication on a set of nodes.
Build a set of PointToPointNetDevice objects.
Smart pointer class similar to boost::intrusive_ptr.
static EventId Schedule(const Time &delay, FUNC f, Ts &&... args)
Schedule an event to expire after delay.
static void Destroy()
Execute the events scheduled with ScheduleDestroy().
static void Run()
Run the simulation.
static void Stop()
Tell the Simulator the calling event should be the last one executed.
void Connect()
Connect the socket.
void Write(uint32_t numBytes)
Write to the socket.
void Close()
Close the socket.
Hold variables of type string.
void AddTestCase(TestCase *testCase, Duration duration=Duration::QUICK)
Add an individual child TestCase to this test suite.
A simple way to store test vectors (for stimulus or from responses)
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.
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.
Ptr< T > CreateObject(Args &&... args)
Create an object by type, with varying number of constructor parameters.
#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 Ns3TcpNoDelayTestSuite g_ns3TcpNoDelayTestSuite
Do not forget to allocate an instance of this TestSuite.
Ptr< PacketSink > sink
Pointer to the packet sink application.