22#include "ns3/mac-messages.h"
23#include "ns3/packet.h"
25#include "ns3/simulator.h"
27#include "ns3/wimax-connection.h"
28#include "ns3/wimax-mac-header.h"
45 void DoRun()
override;
49 :
TestCase(
"Test the packet fragmentation and defragmentation.")
80 connectionTx->
Enqueue(packet, packetType, hdr);
82 uint32_t availableByteForFragment = 280;
83 for (
int i = 0; i < 4; i++)
86 if (connectionTx->
GetQueue()->GetFirstPacketRequiredByte(packetType) >
87 availableByteForFragment)
89 fragment = connectionTx->
Dequeue(packetType, availableByteForFragment);
93 fragment = connectionTx->
Dequeue(packetType);
98 fragment->RemoveHeader(gnrcMacHdr);
99 uint8_t type = gnrcMacHdr.
GetType();
107 fragment->RemoveHeader(fragSubhdr);
114 "The fragment in not the middle one");
131 iter != fragmentsQueue.end();
135 fullPacket->AddAtEnd(*iter);
Test the wimax packet fragmentation.
Ns3WimaxFragmentationTestCase()
~Ns3WimaxFragmentationTestCase() override
void DoRun() override
Implementation to actually run this TestCase.
Ns3 Wimax Fragmentation Test Suite.
Ns3WimaxFragmentationTestSuite()
Mac Management messages Section 6.3.2.3 MAC Management messages page 42, Table 14 page 43.
Smart pointer class similar to boost::intrusive_ptr.
static void Destroy()
Execute the events scheduled with ScheduleDestroy().
void AddTestCase(TestCase *testCase, TestDuration duration=QUICK)
Add an individual child TestCase to this test suite.
Class to represent WiMAX connections.
bool Enqueue(Ptr< Packet > packet, const MacHeaderType &hdrType, const GenericMacHeader &hdr)
enqueue a packet in the queue of the connection
Ptr< Packet > Dequeue(MacHeaderType::HeaderType packetType=MacHeaderType::HEADER_TYPE_GENERIC)
dequeue a packet from the queue of the connection
void ClearFragmentsQueue()
delete all enqueued fragments
Cid GetCid() const
Get CID function.
Ptr< WimaxMacQueue > GetQueue() const
std::list< Ptr< const Packet > > FragmentsQueue
Definition of Fragments Queue data type.
const FragmentsQueue GetFragmentsQueue() const
get a queue of received fragments
void FragmentEnqueue(Ptr< const Packet > fragment)
enqueue a received packet (that is a fragment) into the fragments queue
#define NS_TEST_EXPECT_MSG_EQ(actual, limit, msg)
Test that an actual and expected (limit) value are equal and report if not.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
static Ns3WimaxFragmentationTestSuite ns3WimaxFragmentationTestSuite
the test suite