24 #include "ns3/packet.h"
25 #include "ns3/simulator.h"
26 #include "ns3/wimax-mac-header.h"
27 #include "ns3/mac-messages.h"
29 #include "ns3/wimax-connection.h"
43 virtual void DoRun (
void);
48 :
TestCase (
"Test the packet fragmentation and defragmentation.")
79 connectionTx->
Enqueue (packet, packetType, hdr);
81 uint32_t availableByteForFragment = 280;
82 for (
int i = 0; i < 4; i++)
85 if (connectionTx->
GetQueue ()->GetFirstPacketRequiredByte (packetType) > availableByteForFragment)
87 fragment = connectionTx->
Dequeue (packetType, availableByteForFragment);
91 fragment = connectionTx->
Dequeue (packetType);
97 uint8_t type = gnrcMacHdr.
GetType ();
105 fragment->RemoveHeader (fragSubhdr);
106 uint32_t fc = fragSubhdr.
GetFc ();
110 NS_TEST_EXPECT_MSG_EQ (((fc == 3 && i != 1) && (fc == 3 && i != 2)),
false,
"The fragment in not the middle one");
127 iter != fragmentsQueue.end (); ++iter)
139 Simulator::Destroy ();
150 :
TestSuite (
"wimax-fragmentation", UNIT)
static Ns3WimaxFragmentationTestSuite ns3WimaxFragmentationTestSuite
Ns3WimaxFragmentationTestSuite()
uint32_t RemoveHeader(Header &header)
Deserialize and remove the header from the internal buffer.
Introspection did not find any typical Config paths.
void FragmentEnqueue(Ptr< const Packet > fragment)
enqueue a received packet (that is a fragment) into the fragments queue
Ns3WimaxFragmentationTestCase()
#define NS_TEST_EXPECT_MSG_EQ(actual, limit, msg)
Test that an actual and expected (limit) value are equal and report if not.
uint32_t GetSize(void) const
Returns the the size in bytes of the packet (including the zero-filled initial payload).
Ptr< WimaxMacQueue > GetQueue(void) const
void AddAtEnd(Ptr< const Packet > packet)
Concatenate the input packet at the end of the current packet.
void AddTestCase(TestCase *testCase, enum TestDuration duration)
Add an individual child TestCase to this test suite.
const FragmentsQueue GetFragmentsQueue(void) const
get a queue of received fragments
void ClearFragmentsQueue(void)
delete all enqueued fragments
bool Enqueue(Ptr< Packet > packet, const MacHeaderType &hdrType, const GenericMacHeader &hdr)
enqueue a packet in the queue of the connection
Every class exported by the ns3 library is enclosed in the ns3 namespace.
std::list< Ptr< const Packet > > FragmentsQueue
Ptr< Packet > Dequeue(MacHeaderType::HeaderType packetType=MacHeaderType::HEADER_TYPE_GENERIC)
dequeue a packet from the queue of the connection
virtual ~Ns3WimaxFragmentationTestCase()
virtual void DoRun(void)
Implementation to actually run this TestCase.
HeaderType
this class implements the mac header type field.