21 #include "ns3/pfifo-fast-queue-disc.h"
22 #include "ns3/drop-tail-queue.h"
23 #include "ns3/ipv4-queue-disc-item.h"
24 #include "ns3/ipv6-queue-disc-item.h"
26 #include "ns3/uinteger.h"
27 #include "ns3/pointer.h"
28 #include "ns3/object-factory.h"
29 #include "ns3/socket.h"
43 virtual void DoRun (
void);
48 :
TestCase (
"Test TOS-based prioritization")
62 ipHeader.SetTos (tos);
63 ipHeader.SetProtocol (6);
65 priorityTag.
SetPriority (Socket::IpTos2Priority (tos));
79 for (uint16_t i = 0; i < 3; i++)
119 virtual void DoRun (
void);
124 :
TestCase (
"Test DSCP-based prioritization")
138 ipHeader.SetProtocol (6);
139 ipHeader.SetDscp (dscp);
141 priorityTag.
SetPriority (Socket::IpTos2Priority (ipHeader.GetTos ()));
155 for (uint16_t i = 0; i < 3; i++)
200 virtual void DoRun (
void);
219 ipHeader.SetProtocol (6);
220 ipHeader.SetDscp (dscp);
222 priorityTag.
SetPriority (Socket::IpTos2Priority (ipHeader.GetTos ()));
241 AddPacket (queueDisc, Ipv4Header::DSCP_AF42);
242 AddPacket (queueDisc, Ipv4Header::DSCP_AF42);
243 AddPacket (queueDisc, Ipv4Header::DSCP_AF13);
244 AddPacket (queueDisc, Ipv4Header::DSCP_AF13);
245 AddPacket (queueDisc, Ipv4Header::DSCP_AF11);
246 AddPacket (queueDisc, Ipv4Header::DSCP_AF11);
252 AddPacket (queueDisc, Ipv4Header::DSCP_AF42);
253 AddPacket (queueDisc, Ipv4Header::DSCP_AF13);
254 AddPacket (queueDisc, Ipv4Header::DSCP_AF11);
273 virtual void DoRun (
void);
277 :
TestCase (
"Test queue with no priority tag")
290 for (uint16_t i = 0; i < 3; i++)
299 p = Create<Packet> ();
303 item = Create<Ipv6QueueDiscItem> (p, dest, 0, ipv6Header);
306 p = Create<Packet> (
reinterpret_cast<const uint8_t*
> (
"hello, world"), 12);
307 item = Create<Ipv6QueueDiscItem> (p, dest, 0, ipv6Header);
310 p = Create<Packet> (100);
311 uint8_t *buf =
new uint8_t[100];
313 for (uint32_t i = 0; i < 100; i++)
317 p->CopyData (buf, 100);
318 item = Create<Ipv6QueueDiscItem> (p, dest, 0, ipv6Header);
331 :
TestSuite (
"pfifo-fast-queue-disc", UNIT)
Smart pointer class similar to boost::intrusive_ptr.
bool Enqueue(Ptr< QueueDiscItem > item)
Pass a packet to store to the queue discipline.
Ptr< Queue > GetInternalQueue(uint32_t i) const
Get the i-th internal queue.
This class tests that each possible TOS is enqueued in the right band.
void TestTosValue(Ptr< PfifoFastQueueDisc > queue, uint8_t tos, uint32_t band)
virtual void DoRun(void)
Implementation to actually run this TestCase.
void AddPacketTag(const Tag &tag) const
Add a packet tag.
virtual void DoRun(void)
Implementation to actually run this TestCase.
bool SetAttributeFailSafe(std::string name, const AttributeValue &value)
Set a single attribute without raising errors.
virtual ~PfifoFastQueueDiscTosPrioritization()
a polymophic address class
This class tests that each band is txqueuelen deep.
PfifoFastQueueDiscTosPrioritization()
PfifoFastQueueDiscOverflow()
void AddTestCase(TestCase *testCase, enum TestDuration duration)
Add an individual child TestCase to this test suite.
void TestDscpValue(Ptr< PfifoFastQueueDisc > queue, Ipv4Header::DscpType dscp, uint32_t band)
Hold an unsigned integer type.
void AddPacket(Ptr< PfifoFastQueueDisc > queue, Ipv4Header::DscpType dscp)
#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.
void AddInternalQueue(Ptr< Queue > queue)
Add an internal queue to the tail of the list of queues.
virtual void DoRun(void)
Implementation to actually run this TestCase.
virtual ~PfifoFastQueueDiscNoPriority()
indicates whether the socket has a priority set.
virtual ~PfifoFastQueueDiscDscpPrioritization()
Ptr< QueueDiscItem > Dequeue(void)
Request the queue discipline to extract a packet.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
This class tests that packets without a priority tag are handled by placing them into band 1...
DscpType
DiffServ Code Points Code Points defined in Assured Forwarding (AF) RFC 2597 Expedited Forwarding (EF...
static PfifoFastQueueDiscTestSuite pfifoFastQueueTestSuite
virtual ~PfifoFastQueueDiscOverflow()
PfifoFastQueueDiscDscpPrioritization()
This class tests that each possible DSCP is enqueued in the right band.
PfifoFastQueueDiscTestSuite()
PfifoFastQueueDiscNoPriority()
void SetPriority(uint8_t priority)
Set the tag's priority.
virtual void DoRun(void)
Implementation to actually run this TestCase.