diff --git a/CHANGES.html b/CHANGES.html
index ca64cc13d..ef8c6e00a 100644
--- a/CHANGES.html
+++ b/CHANGES.html
@@ -72,6 +72,7 @@ us a note on ns-developers mailing list.
The Mode, MaxPackets and MaxBytes attributes of the Queue class have been deprecated in favor of the
MaxSize attribute. Old attributes can still be used, but using them will be no longer possible in one of the next releases. The methods to get/set the old attributes will be removed as well.
The attributes of the QueueDisc subclasses that separately determine the mode and the limit of the QueueDisc have been deprecated in favor of the single MaxSize attribute.
+ The GetQueueSize method of some QueueDisc subclasses (e.g., Red) has been removed and replaced by the GetCurrentSize method of the QueueDisc base class.
diff --git a/examples/traffic-control/queue-discs-benchmark.cc b/examples/traffic-control/queue-discs-benchmark.cc
index da4d2602a..328581ab9 100644
--- a/examples/traffic-control/queue-discs-benchmark.cc
+++ b/examples/traffic-control/queue-discs-benchmark.cc
@@ -145,40 +145,42 @@ int main (int argc, char *argv[])
// Access link traffic control configuration
TrafficControlHelper tchPfifoFastAccess;
- tchPfifoFastAccess.SetRootQueueDisc ("ns3::PfifoFastQueueDisc", "Limit", UintegerValue (1000));
+ tchPfifoFastAccess.SetRootQueueDisc ("ns3::PfifoFastQueueDisc", "MaxSize", StringValue ("1000p"));
// Bottleneck link traffic control configuration
TrafficControlHelper tchBottleneck;
if (queueDiscType.compare ("PfifoFast") == 0)
{
- tchBottleneck.SetRootQueueDisc ("ns3::PfifoFastQueueDisc", "Limit", UintegerValue (queueDiscSize));
+ tchBottleneck.SetRootQueueDisc ("ns3::PfifoFastQueueDisc", "MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::PACKETS, queueDiscSize)));
}
else if (queueDiscType.compare ("ARED") == 0)
{
tchBottleneck.SetRootQueueDisc ("ns3::RedQueueDisc");
Config::SetDefault ("ns3::RedQueueDisc::ARED", BooleanValue (true));
- Config::SetDefault ("ns3::RedQueueDisc::Mode", EnumValue (RedQueueDisc::QUEUE_DISC_MODE_PACKETS));
- Config::SetDefault ("ns3::RedQueueDisc::QueueLimit", UintegerValue (queueDiscSize));
+ Config::SetDefault ("ns3::RedQueueDisc::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::PACKETS, queueDiscSize)));
}
else if (queueDiscType.compare ("CoDel") == 0)
{
tchBottleneck.SetRootQueueDisc ("ns3::CoDelQueueDisc");
- Config::SetDefault ("ns3::CoDelQueueDisc::Mode", EnumValue (CoDelQueueDisc::QUEUE_DISC_MODE_PACKETS));
- Config::SetDefault ("ns3::CoDelQueueDisc::MaxPackets", UintegerValue (queueDiscSize));
+ Config::SetDefault ("ns3::CoDelQueueDisc::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::PACKETS, queueDiscSize)));
}
else if (queueDiscType.compare ("FqCoDel") == 0)
{
uint32_t handle = tchBottleneck.SetRootQueueDisc ("ns3::FqCoDelQueueDisc");
- Config::SetDefault ("ns3::FqCoDelQueueDisc::PacketLimit", UintegerValue (queueDiscSize));
+ Config::SetDefault ("ns3::FqCoDelQueueDisc::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::PACKETS, queueDiscSize)));
tchBottleneck.AddPacketFilter (handle, "ns3::FqCoDelIpv4PacketFilter");
tchBottleneck.AddPacketFilter (handle, "ns3::FqCoDelIpv6PacketFilter");
}
else if (queueDiscType.compare ("PIE") == 0)
{
tchBottleneck.SetRootQueueDisc ("ns3::PieQueueDisc");
- Config::SetDefault ("ns3::PieQueueDisc::Mode", EnumValue (PieQueueDisc::QUEUE_DISC_MODE_PACKETS));
- Config::SetDefault ("ns3::PieQueueDisc::QueueLimit", UintegerValue (queueDiscSize));
+ Config::SetDefault ("ns3::PieQueueDisc::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::PACKETS, queueDiscSize)));
}
else
{
@@ -190,8 +192,7 @@ int main (int argc, char *argv[])
tchBottleneck.SetQueueLimits ("ns3::DynamicQueueLimits");
}
- Config::SetDefault ("ns3::QueueBase::Mode", StringValue ("QUEUE_MODE_PACKETS"));
- Config::SetDefault ("ns3::QueueBase::MaxPackets", UintegerValue (100));
+ Config::SetDefault ("ns3::QueueBase::MaxSize", StringValue ("100p"));
NetDeviceContainer devicesAccessLink = accessLink.Install (n1.Get (0), n2.Get (0));
tchPfifoFastAccess.Install (devicesAccessLink);
@@ -200,7 +201,7 @@ int main (int argc, char *argv[])
address.NewNetwork ();
Ipv4InterfaceContainer interfacesAccess = address.Assign (devicesAccessLink);
- Config::SetDefault ("ns3::QueueBase::MaxPackets", UintegerValue (netdevicesQueueSize));
+ Config::SetDefault ("ns3::QueueBase::MaxSize", StringValue (std::to_string (netdevicesQueueSize) + "p"));
NetDeviceContainer devicesBottleneckLink = bottleneckLink.Install (n2.Get (0), n3.Get (0));
QueueDiscContainer qdiscs;
diff --git a/examples/traffic-control/red-vs-fengadaptive.cc b/examples/traffic-control/red-vs-fengadaptive.cc
index e78e2fa1a..90f790f55 100644
--- a/examples/traffic-control/red-vs-fengadaptive.cc
+++ b/examples/traffic-control/red-vs-fengadaptive.cc
@@ -70,18 +70,18 @@ int main (int argc, char *argv[])
Config::SetDefault ("ns3::OnOffApplication::PacketSize", UintegerValue (pktSize));
Config::SetDefault ("ns3::OnOffApplication::DataRate", StringValue (appDataRate));
- Config::SetDefault ("ns3::QueueBase::Mode", StringValue ("QUEUE_MODE_PACKETS"));
- Config::SetDefault ("ns3::QueueBase::MaxPackets", UintegerValue (maxPackets));
+ Config::SetDefault ("ns3::QueueBase::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::PACKETS, maxPackets)));
if (!modeBytes)
{
- Config::SetDefault ("ns3::RedQueueDisc::Mode", StringValue ("QUEUE_DISC_MODE_PACKETS"));
- Config::SetDefault ("ns3::RedQueueDisc::QueueLimit", UintegerValue (queueDiscLimitPackets));
+ Config::SetDefault ("ns3::RedQueueDisc::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::PACKETS, queueDiscLimitPackets)));
}
else
{
- Config::SetDefault ("ns3::RedQueueDisc::Mode", StringValue ("QUEUE_DISC_MODE_BYTES"));
- Config::SetDefault ("ns3::RedQueueDisc::QueueLimit", UintegerValue (queueDiscLimitPackets * pktSize));
+ Config::SetDefault ("ns3::RedQueueDisc::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::BYTES, queueDiscLimitPackets * pktSize)));
minTh *= pktSize;
maxTh *= pktSize;
}
diff --git a/examples/traffic-control/red-vs-nlred.cc b/examples/traffic-control/red-vs-nlred.cc
index c04c393de..907c1bde5 100644
--- a/examples/traffic-control/red-vs-nlred.cc
+++ b/examples/traffic-control/red-vs-nlred.cc
@@ -72,18 +72,18 @@ int main (int argc, char *argv[])
Config::SetDefault ("ns3::OnOffApplication::PacketSize", UintegerValue (pktSize));
Config::SetDefault ("ns3::OnOffApplication::DataRate", StringValue (appDataRate));
- Config::SetDefault ("ns3::QueueBase::Mode", StringValue ("QUEUE_MODE_PACKETS"));
- Config::SetDefault ("ns3::QueueBase::MaxPackets", UintegerValue (maxPackets));
+ Config::SetDefault ("ns3::QueueBase::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::PACKETS, maxPackets)));
if (!modeBytes)
{
- Config::SetDefault ("ns3::RedQueueDisc::Mode", StringValue ("QUEUE_DISC_MODE_PACKETS"));
- Config::SetDefault ("ns3::RedQueueDisc::QueueLimit", UintegerValue (queueDiscLimitPackets));
+ Config::SetDefault ("ns3::RedQueueDisc::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::PACKETS, queueDiscLimitPackets)));
}
else
{
- Config::SetDefault ("ns3::RedQueueDisc::Mode", StringValue ("QUEUE_DISC_MODE_BYTES"));
- Config::SetDefault ("ns3::RedQueueDisc::QueueLimit", UintegerValue (queueDiscLimitPackets * pktSize));
+ Config::SetDefault ("ns3::RedQueueDisc::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::BYTES, queueDiscLimitPackets * pktSize)));
minTh *= pktSize;
maxTh *= pktSize;
}
diff --git a/examples/traffic-control/traffic-control.cc b/examples/traffic-control/traffic-control.cc
index 94fca9286..6001f64d4 100644
--- a/examples/traffic-control/traffic-control.cc
+++ b/examples/traffic-control/traffic-control.cc
@@ -110,7 +110,7 @@ main (int argc, char *argv[])
PointToPointHelper pointToPoint;
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("10Mbps"));
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));
- pointToPoint.SetQueue ("ns3::DropTailQueue", "Mode", StringValue ("QUEUE_MODE_PACKETS"), "MaxPackets", UintegerValue (1));
+ pointToPoint.SetQueue ("ns3::DropTailQueue", "MaxSize", StringValue ("1p"));
NetDeviceContainer devices;
devices = pointToPoint.Install (nodes);
diff --git a/src/test/ns3tc/fq-codel-queue-disc-test-suite.cc b/src/test/ns3tc/fq-codel-queue-disc-test-suite.cc
index f7dde9b73..9f6a7a143 100644
--- a/src/test/ns3tc/fq-codel-queue-disc-test-suite.cc
+++ b/src/test/ns3tc/fq-codel-queue-disc-test-suite.cc
@@ -31,7 +31,7 @@
#include "ns3/ipv6-queue-disc-item.h"
#include "ns3/tcp-header.h"
#include "ns3/udp-header.h"
-#include "ns3/uinteger.h"
+#include "ns3/string.h"
#include "ns3/pointer.h"
using namespace ns3;
@@ -62,7 +62,7 @@ void
FqCoDelQueueDiscNoSuitableFilter::DoRun (void)
{
// Packets that cannot be classified by the available filters should be dropped
- Ptr queueDisc = CreateObjectWithAttributes ("PacketLimit", UintegerValue (4));
+ Ptr queueDisc = CreateObjectWithAttributes ("MaxSize", StringValue ("4p"));
Ptr filter = CreateObject ();
queueDisc->AddPacketFilter (filter);
@@ -121,7 +121,7 @@ FqCoDelQueueDiscIPFlowsSeparationAndPacketLimit::AddPacket (Ptr queueDisc = CreateObjectWithAttributes ("PacketLimit", UintegerValue (4));
+ Ptr queueDisc = CreateObjectWithAttributes ("MaxSize", StringValue ("4p"));
Ptr ipv6Filter = CreateObject ();
Ptr ipv4Filter = CreateObject ();
queueDisc->AddPacketFilter (ipv6Filter);
@@ -341,7 +341,7 @@ FqCoDelQueueDiscTCPFlowsSeparation::AddPacket (Ptr queue, Ipv4
void
FqCoDelQueueDiscTCPFlowsSeparation::DoRun (void)
{
- Ptr queueDisc = CreateObjectWithAttributes ("PacketLimit", UintegerValue (10));
+ Ptr queueDisc = CreateObjectWithAttributes ("MaxSize", StringValue ("10p"));
Ptr ipv6Filter = CreateObject ();
Ptr ipv4Filter = CreateObject ();
queueDisc->AddPacketFilter (ipv6Filter);
@@ -431,7 +431,7 @@ FqCoDelQueueDiscUDPFlowsSeparation::AddPacket (Ptr queue, Ipv4
void
FqCoDelQueueDiscUDPFlowsSeparation::DoRun (void)
{
- Ptr queueDisc = CreateObjectWithAttributes ("PacketLimit", UintegerValue (10));
+ Ptr queueDisc = CreateObjectWithAttributes ("MaxSize", StringValue ("10p"));
Ptr ipv6Filter = CreateObject ();
Ptr ipv4Filter = CreateObject ();
queueDisc->AddPacketFilter (ipv6Filter);
diff --git a/src/test/ns3tc/pfifo-fast-queue-disc-test-suite.cc b/src/test/ns3tc/pfifo-fast-queue-disc-test-suite.cc
index 7f751a97d..47719e7d0 100644
--- a/src/test/ns3tc/pfifo-fast-queue-disc-test-suite.cc
+++ b/src/test/ns3tc/pfifo-fast-queue-disc-test-suite.cc
@@ -24,7 +24,7 @@
#include "ns3/ipv4-queue-disc-item.h"
#include "ns3/ipv6-queue-disc-item.h"
#include "ns3/enum.h"
-#include "ns3/uinteger.h"
+#include "ns3/string.h"
#include "ns3/pointer.h"
#include "ns3/object-factory.h"
#include "ns3/socket.h"
@@ -80,7 +80,7 @@ PfifoFastQueueDiscTosPrioritization::DoRun (void)
for (uint16_t i = 0; i < 3; i++)
{
Ptr > queue = CreateObject > ();
- bool ok = queue->SetAttributeFailSafe ("MaxPackets", UintegerValue (1000));
+ bool ok = queue->SetAttributeFailSafe ("MaxSize", StringValue ("1000p"));
NS_TEST_ASSERT_MSG_EQ (ok, true, "unable to set attribute");
queueDisc->AddInternalQueue (queue);
}
@@ -157,7 +157,7 @@ PfifoFastQueueDiscDscpPrioritization::DoRun (void)
for (uint16_t i = 0; i < 3; i++)
{
Ptr > queue = CreateObject > ();
- bool ok = queue->SetAttributeFailSafe ("MaxPackets", UintegerValue (1000));
+ bool ok = queue->SetAttributeFailSafe ("MaxSize", StringValue ("1000p"));
NS_TEST_ASSERT_MSG_EQ (ok, true, "unable to set attribute");
queueDisc->AddInternalQueue (queue);
}
@@ -232,10 +232,10 @@ PfifoFastQueueDiscOverflow::AddPacket (Ptr queue, Ipv4Header
void
PfifoFastQueueDiscOverflow::DoRun (void)
{
- Ptr queueDisc = CreateObjectWithAttributes ("Limit", UintegerValue (6));
- Ptr > band0 = CreateObjectWithAttributes > ("MaxPackets", UintegerValue (6));
- Ptr > band1 = CreateObjectWithAttributes > ("MaxPackets", UintegerValue (6));
- Ptr > band2 = CreateObjectWithAttributes > ("MaxPackets", UintegerValue (6));
+ Ptr queueDisc = CreateObjectWithAttributes ("MaxSize", StringValue ("6p"));
+ Ptr > band0 = CreateObjectWithAttributes > ("MaxSize", StringValue ("6p"));
+ Ptr > band1 = CreateObjectWithAttributes > ("MaxSize", StringValue ("6p"));
+ Ptr > band2 = CreateObjectWithAttributes > ("MaxSize", StringValue ("6p"));
queueDisc->AddInternalQueue (band0);
queueDisc->AddInternalQueue (band1);
queueDisc->AddInternalQueue (band2);
@@ -294,7 +294,7 @@ PfifoFastQueueDiscNoPriority::DoRun (void)
for (uint16_t i = 0; i < 3; i++)
{
Ptr > queue = CreateObject > ();
- bool ok = queue->SetAttributeFailSafe ("MaxPackets", UintegerValue (1000));
+ bool ok = queue->SetAttributeFailSafe ("MaxSize", StringValue ("1000p"));
NS_TEST_ASSERT_MSG_EQ (ok, true, "unable to set attribute");
queueDisc->AddInternalQueue (queue);
}
diff --git a/src/traffic-control/examples/adaptive-red-tests.cc b/src/traffic-control/examples/adaptive-red-tests.cc
index 3ca033f76..2f7945829 100644
--- a/src/traffic-control/examples/adaptive-red-tests.cc
+++ b/src/traffic-control/examples/adaptive-red-tests.cc
@@ -1,3 +1,4 @@
+
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2015 NITK Surathkal
@@ -104,7 +105,7 @@ std::stringstream filePlotQueueDiscAvg;
void
CheckQueueDiscSize (Ptr queue)
{
- uint32_t qSize = StaticCast (queue)->GetQueueSize ();
+ uint32_t qSize = queue->GetCurrentSize ().GetValue ();
avgQueueDiscSize += qSize;
checkTimes++;
@@ -240,24 +241,23 @@ main (int argc, char *argv[])
// RED params
NS_LOG_INFO ("Set RED params");
- Config::SetDefault ("ns3::RedQueueDisc::Mode", StringValue ("QUEUE_DISC_MODE_PACKETS"));
+ Config::SetDefault ("ns3::RedQueueDisc::MaxSize", StringValue ("1000p"));
Config::SetDefault ("ns3::RedQueueDisc::MeanPktSize", UintegerValue (meanPktSize));
Config::SetDefault ("ns3::RedQueueDisc::Wait", BooleanValue (true));
Config::SetDefault ("ns3::RedQueueDisc::Gentle", BooleanValue (true));
Config::SetDefault ("ns3::RedQueueDisc::QW", DoubleValue (0.002));
Config::SetDefault ("ns3::RedQueueDisc::MinTh", DoubleValue (5));
Config::SetDefault ("ns3::RedQueueDisc::MaxTh", DoubleValue (15));
- Config::SetDefault ("ns3::RedQueueDisc::QueueLimit", UintegerValue (1000));
if (aredTest == 1) // test 1: red1
{
- Config::SetDefault ("ns3::RedQueueDisc::QueueLimit", UintegerValue (25));
+ Config::SetDefault ("ns3::RedQueueDisc::MaxSize", StringValue ("25p"));
}
else if (aredTest == 2) // test 2: red1Adapt
{
Config::SetDefault ("ns3::RedQueueDisc::ARED", BooleanValue (true));
Config::SetDefault ("ns3::RedQueueDisc::LInterm", DoubleValue (10));
- Config::SetDefault ("ns3::RedQueueDisc::QueueLimit", UintegerValue (25));
+ Config::SetDefault ("ns3::RedQueueDisc::MaxSize", StringValue ("25p"));
}
else if (aredTest == 7) // test 7: fastlinkAutowq
{
@@ -286,13 +286,13 @@ main (int argc, char *argv[])
}
else if (aredTest == 13) // test 13: longlink
{
- Config::SetDefault ("ns3::RedQueueDisc::QueueLimit", UintegerValue (100));
+ Config::SetDefault ("ns3::RedQueueDisc::MaxSize", StringValue ("100p"));
}
else if (aredTest == 14) // test 14: longlinkAdapt
{
Config::SetDefault ("ns3::RedQueueDisc::ARED", BooleanValue (true));
Config::SetDefault ("ns3::RedQueueDisc::LInterm", DoubleValue (10));
- Config::SetDefault ("ns3::RedQueueDisc::QueueLimit", UintegerValue (100));
+ Config::SetDefault ("ns3::RedQueueDisc::MaxSize", StringValue ("100p"));
}
else if (aredTest == 15) // test 15: longlinkAdapt1
{
@@ -301,7 +301,7 @@ main (int argc, char *argv[])
Config::SetDefault ("ns3::RedQueueDisc::MaxTh", DoubleValue (0));
Config::SetDefault ("ns3::RedQueueDisc::AdaptMaxP", BooleanValue (true));
Config::SetDefault ("ns3::RedQueueDisc::LInterm", DoubleValue (10));
- Config::SetDefault ("ns3::RedQueueDisc::QueueLimit", UintegerValue (100));
+ Config::SetDefault ("ns3::RedQueueDisc::MaxSize", StringValue ("100p"));
}
NS_LOG_INFO ("Install internet stack on all nodes.");
@@ -310,7 +310,7 @@ main (int argc, char *argv[])
TrafficControlHelper tchPfifo;
uint16_t handle = tchPfifo.SetRootQueueDisc ("ns3::PfifoFastQueueDisc");
- tchPfifo.AddInternalQueues (handle, 3, "ns3::DropTailQueue", "MaxPackets", UintegerValue (1000));
+ tchPfifo.AddInternalQueues (handle, 3, "ns3::DropTailQueue", "MaxSize", StringValue ("1000p"));
TrafficControlHelper tchRed;
tchRed.SetRootQueueDisc ("ns3::RedQueueDisc", "LinkBandwidth", StringValue (aredLinkDataRate),
diff --git a/src/traffic-control/examples/codel-vs-pfifo-asymmetric.cc b/src/traffic-control/examples/codel-vs-pfifo-asymmetric.cc
index 4d8c3b5ba..9dfd4f336 100644
--- a/src/traffic-control/examples/codel-vs-pfifo-asymmetric.cc
+++ b/src/traffic-control/examples/codel-vs-pfifo-asymmetric.cc
@@ -280,9 +280,10 @@ int main (int argc, char *argv[])
}
// Queue defaults
- Config::SetDefault ("ns3::PfifoFastQueueDisc::Limit", UintegerValue (queueSize));
- Config::SetDefault ("ns3::CoDelQueueDisc::MaxPackets", UintegerValue (queueSize));
- Config::SetDefault ("ns3::CoDelQueueDisc::Mode", StringValue ("QUEUE_DISC_MODE_PACKETS"));
+ Config::SetDefault ("ns3::PfifoFastQueueDisc::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::PACKETS, queueSize)));
+ Config::SetDefault ("ns3::CoDelQueueDisc::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::PACKETS, queueSize)));
// Create the nodes
NS_LOG_INFO ("Create nodes");
diff --git a/src/traffic-control/examples/codel-vs-pfifo-basic-test.cc b/src/traffic-control/examples/codel-vs-pfifo-basic-test.cc
index 2b805f403..e3ca9d523 100644
--- a/src/traffic-control/examples/codel-vs-pfifo-basic-test.cc
+++ b/src/traffic-control/examples/codel-vs-pfifo-basic-test.cc
@@ -129,8 +129,8 @@ int main (int argc, char *argv[])
}
// Devices queue configuration
- Config::SetDefault ("ns3::QueueBase::Mode", StringValue ("QUEUE_MODE_PACKETS"));
- Config::SetDefault ("ns3::QueueBase::MaxPackets", UintegerValue (queueSize));
+ Config::SetDefault ("ns3::QueueBase::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::PACKETS, queueSize)));
// Create gateway, source, and sink
NodeContainer gateway;
@@ -154,16 +154,16 @@ int main (int argc, char *argv[])
// Access link traffic control configuration
TrafficControlHelper tchPfifoFastAccess;
- tchPfifoFastAccess.SetRootQueueDisc ("ns3::PfifoFastQueueDisc", "Limit", UintegerValue (1000));
+ tchPfifoFastAccess.SetRootQueueDisc ("ns3::PfifoFastQueueDisc", "MaxSize", StringValue ("1000p"));
// Bottleneck link traffic control configuration
TrafficControlHelper tchPfifo;
- tchPfifo.SetRootQueueDisc ("ns3::PfifoFastQueueDisc", "Limit", UintegerValue (queueDiscSize));
+ tchPfifo.SetRootQueueDisc ("ns3::PfifoFastQueueDisc", "MaxSize",
+ StringValue (std::to_string(queueDiscSize) + "p"));
TrafficControlHelper tchCoDel;
tchCoDel.SetRootQueueDisc ("ns3::CoDelQueueDisc");
- Config::SetDefault ("ns3::CoDelQueueDisc::Mode", EnumValue (CoDelQueueDisc::QUEUE_DISC_MODE_PACKETS));
- Config::SetDefault ("ns3::CoDelQueueDisc::MaxPackets", UintegerValue (queueDiscSize));
+ Config::SetDefault ("ns3::CoDelQueueDisc::MaxSize", StringValue (std::to_string(queueDiscSize) + "p"));
Ipv4AddressHelper address;
address.SetBase ("10.0.0.0", "255.255.255.0");
diff --git a/src/traffic-control/examples/pfifo-vs-red.cc b/src/traffic-control/examples/pfifo-vs-red.cc
index 1dd18debb..37f3defd5 100644
--- a/src/traffic-control/examples/pfifo-vs-red.cc
+++ b/src/traffic-control/examples/pfifo-vs-red.cc
@@ -70,19 +70,20 @@ int main (int argc, char *argv[])
Config::SetDefault ("ns3::OnOffApplication::PacketSize", UintegerValue (pktSize));
Config::SetDefault ("ns3::OnOffApplication::DataRate", StringValue (appDataRate));
- Config::SetDefault ("ns3::QueueBase::Mode", StringValue ("QUEUE_MODE_PACKETS"));
- Config::SetDefault ("ns3::QueueBase::MaxPackets", UintegerValue (maxPackets));
+ Config::SetDefault ("ns3::QueueBase::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::PACKETS, maxPackets)));
if (!modeBytes)
{
- Config::SetDefault ("ns3::RedQueueDisc::Mode", StringValue ("QUEUE_DISC_MODE_PACKETS"));
- Config::SetDefault ("ns3::RedQueueDisc::QueueLimit", UintegerValue (queueDiscLimitPackets));
- Config::SetDefault ("ns3::PfifoFastQueueDisc::Limit", UintegerValue (queueDiscLimitPackets));
+ Config::SetDefault ("ns3::RedQueueDisc::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::PACKETS, queueDiscLimitPackets)));
+ Config::SetDefault ("ns3::PfifoFastQueueDisc::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::PACKETS, queueDiscLimitPackets)));
}
else
{
- Config::SetDefault ("ns3::RedQueueDisc::Mode", StringValue ("QUEUE_DISC_MODE_BYTES"));
- Config::SetDefault ("ns3::RedQueueDisc::QueueLimit", UintegerValue (queueDiscLimitPackets * pktSize));
+ Config::SetDefault ("ns3::RedQueueDisc::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::BYTES, queueDiscLimitPackets * pktSize)));
minTh *= pktSize;
maxTh *= pktSize;
}
diff --git a/src/traffic-control/examples/pie-example.cc b/src/traffic-control/examples/pie-example.cc
index 0c26833f2..768ddf861 100644
--- a/src/traffic-control/examples/pie-example.cc
+++ b/src/traffic-control/examples/pie-example.cc
@@ -192,12 +192,11 @@ main (int argc, char *argv[])
// PIE params
NS_LOG_INFO ("Set PIE params");
- Config::SetDefault ("ns3::PieQueueDisc::Mode", StringValue ("QUEUE_DISC_MODE_PACKETS"));
+ Config::SetDefault ("ns3::PieQueueDisc::MaxSize", StringValue ("100p"));
Config::SetDefault ("ns3::PieQueueDisc::MeanPktSize", UintegerValue (meanPktSize));
Config::SetDefault ("ns3::PieQueueDisc::DequeueThreshold", UintegerValue (10000));
Config::SetDefault ("ns3::PieQueueDisc::QueueDelayReference", TimeValue (Seconds (0.02)));
Config::SetDefault ("ns3::PieQueueDisc::MaxBurstAllowance", TimeValue (Seconds (0.1)));
- Config::SetDefault ("ns3::PieQueueDisc::QueueLimit", UintegerValue (100));
NS_LOG_INFO ("Install internet stack on all nodes.");
InternetStackHelper internet;
@@ -205,7 +204,7 @@ main (int argc, char *argv[])
TrafficControlHelper tchPfifo;
uint16_t handle = tchPfifo.SetRootQueueDisc ("ns3::PfifoFastQueueDisc");
- tchPfifo.AddInternalQueues (handle, 3, "ns3::DropTailQueue", "MaxPackets", UintegerValue (1000));
+ tchPfifo.AddInternalQueues (handle, 3, "ns3::DropTailQueue", "MaxSize", StringValue ("1000p"));
TrafficControlHelper tchPie;
tchPie.SetRootQueueDisc ("ns3::PieQueueDisc");
diff --git a/src/traffic-control/examples/red-tests.cc b/src/traffic-control/examples/red-tests.cc
index 456814f24..23e4f5009 100644
--- a/src/traffic-control/examples/red-tests.cc
+++ b/src/traffic-control/examples/red-tests.cc
@@ -79,7 +79,7 @@ std::stringstream filePlotQueueAvg;
void
CheckQueueSize (Ptr queue)
{
- uint32_t qSize = StaticCast (queue)->GetQueueSize ();
+ uint32_t qSize = queue->GetCurrentSize ().GetValue ();
avgQueueSize += qSize;
checkTimes++;
@@ -317,14 +317,13 @@ main (int argc, char *argv[])
// RED params
NS_LOG_INFO ("Set RED params");
- Config::SetDefault ("ns3::RedQueueDisc::Mode", StringValue ("QUEUE_DISC_MODE_PACKETS"));
+ Config::SetDefault ("ns3::RedQueueDisc::MaxSize", StringValue ("1000p"));
Config::SetDefault ("ns3::RedQueueDisc::MeanPktSize", UintegerValue (meanPktSize));
Config::SetDefault ("ns3::RedQueueDisc::Wait", BooleanValue (true));
Config::SetDefault ("ns3::RedQueueDisc::Gentle", BooleanValue (true));
Config::SetDefault ("ns3::RedQueueDisc::QW", DoubleValue (0.002));
Config::SetDefault ("ns3::RedQueueDisc::MinTh", DoubleValue (5));
Config::SetDefault ("ns3::RedQueueDisc::MaxTh", DoubleValue (15));
- Config::SetDefault ("ns3::RedQueueDisc::QueueLimit", UintegerValue (1000));
if (redTest == 3) // test like 1, but with bad params
{
@@ -333,11 +332,11 @@ main (int argc, char *argv[])
}
else if (redTest == 5) // test 5, same of test 4, but in byte mode
{
- Config::SetDefault ("ns3::RedQueueDisc::Mode", StringValue ("QUEUE_DISC_MODE_BYTES"));
+ Config::SetDefault ("ns3::RedQueueDisc::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::BYTES, 1000 * meanPktSize)));
Config::SetDefault ("ns3::RedQueueDisc::Ns1Compat", BooleanValue (true));
Config::SetDefault ("ns3::RedQueueDisc::MinTh", DoubleValue (5 * meanPktSize));
Config::SetDefault ("ns3::RedQueueDisc::MaxTh", DoubleValue (15 * meanPktSize));
- Config::SetDefault ("ns3::RedQueueDisc::QueueLimit", UintegerValue (1000 * meanPktSize));
}
NS_LOG_INFO ("Install internet stack on all nodes.");
@@ -346,7 +345,7 @@ main (int argc, char *argv[])
TrafficControlHelper tchPfifo;
uint16_t handle = tchPfifo.SetRootQueueDisc ("ns3::PfifoFastQueueDisc");
- tchPfifo.AddInternalQueues (handle, 3, "ns3::DropTailQueue", "MaxPackets", UintegerValue (1000));
+ tchPfifo.AddInternalQueues (handle, 3, "ns3::DropTailQueue", "MaxSize", StringValue ("1000p"));
TrafficControlHelper tchRed;
tchRed.SetRootQueueDisc ("ns3::RedQueueDisc", "LinkBandwidth", StringValue (redLinkDataRate),
diff --git a/src/traffic-control/examples/red-vs-ared.cc b/src/traffic-control/examples/red-vs-ared.cc
index e6213cb7d..6bb123f1a 100644
--- a/src/traffic-control/examples/red-vs-ared.cc
+++ b/src/traffic-control/examples/red-vs-ared.cc
@@ -70,18 +70,17 @@ int main (int argc, char *argv[])
Config::SetDefault ("ns3::OnOffApplication::PacketSize", UintegerValue (pktSize));
Config::SetDefault ("ns3::OnOffApplication::DataRate", StringValue (appDataRate));
- Config::SetDefault ("ns3::QueueBase::Mode", StringValue ("QUEUE_MODE_PACKETS"));
- Config::SetDefault ("ns3::QueueBase::MaxPackets", UintegerValue (maxPackets));
+ Config::SetDefault ("ns3::QueueBase::MaxSize", StringValue (std::to_string (maxPackets) + "p"));
if (!modeBytes)
{
- Config::SetDefault ("ns3::RedQueueDisc::Mode", StringValue ("QUEUE_DISC_MODE_PACKETS"));
- Config::SetDefault ("ns3::RedQueueDisc::QueueLimit", UintegerValue (queueDiscLimitPackets));
+ Config::SetDefault ("ns3::RedQueueDisc::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::PACKETS, queueDiscLimitPackets)));
}
else
{
- Config::SetDefault ("ns3::RedQueueDisc::Mode", StringValue ("QUEUE_DISC_MODE_BYTES"));
- Config::SetDefault ("ns3::RedQueueDisc::QueueLimit", UintegerValue (queueDiscLimitPackets * pktSize));
+ Config::SetDefault ("ns3::RedQueueDisc::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::BYTES, queueDiscLimitPackets * pktSize)));
minTh *= pktSize;
maxTh *= pktSize;
}
diff --git a/src/traffic-control/model/red-queue-disc.cc b/src/traffic-control/model/red-queue-disc.cc
index 4a08a0a62..79c363a63 100644
--- a/src/traffic-control/model/red-queue-disc.cc
+++ b/src/traffic-control/model/red-queue-disc.cc
@@ -857,24 +857,6 @@ RedQueueDisc::ModifyP (double p, uint32_t size)
return p;
}
-uint32_t
-RedQueueDisc::GetQueueSize (void)
-{
- NS_LOG_FUNCTION (this);
- if (GetMode () == QUEUE_DISC_MODE_BYTES)
- {
- return GetInternalQueue (0)->GetNBytes ();
- }
- else if (GetMode () == QUEUE_DISC_MODE_PACKETS)
- {
- return GetInternalQueue (0)->GetNPackets ();
- }
- else
- {
- NS_ABORT_MSG ("Unknown RED mode.");
- }
-}
-
Ptr
RedQueueDisc::DoDequeue (void)
{
diff --git a/src/traffic-control/model/red-queue-disc.h b/src/traffic-control/model/red-queue-disc.h
index 19e7f6185..2d1474355 100644
--- a/src/traffic-control/model/red-queue-disc.h
+++ b/src/traffic-control/model/red-queue-disc.h
@@ -147,13 +147,6 @@ public:
*/
QueueDiscMode GetMode (void) const;
- /**
- * \brief Get the current value of the queue in bytes or packets.
- *
- * \returns The queue size in bytes or packets.
- */
- uint32_t GetQueueSize (void);
-
/**
* \brief Set the alpha value to adapt m_curMaxP.
*
diff --git a/src/traffic-control/test/adaptive-red-queue-disc-test-suite.cc b/src/traffic-control/test/adaptive-red-queue-disc-test-suite.cc
index ec4e7cc7e..81c1c7054 100644
--- a/src/traffic-control/test/adaptive-red-queue-disc-test-suite.cc
+++ b/src/traffic-control/test/adaptive-red-queue-disc-test-suite.cc
@@ -120,7 +120,7 @@ private:
* Run ARED queue disc test function
* \param mode the test mode
*/
- void RunAredDiscTest (StringValue mode);
+ void RunAredDiscTest (QueueSizeUnit mode);
};
AredQueueDiscTestCase::AredQueueDiscTestCase ()
@@ -129,7 +129,7 @@ AredQueueDiscTestCase::AredQueueDiscTestCase ()
}
void
-AredQueueDiscTestCase::RunAredDiscTest (StringValue mode)
+AredQueueDiscTestCase::RunAredDiscTest (QueueSizeUnit mode)
{
uint32_t pktSize = 0;
uint32_t modeSize = 1; // 1 for packets; pktSize for bytes
@@ -140,10 +140,8 @@ AredQueueDiscTestCase::RunAredDiscTest (StringValue mode)
// test 1: Verify automatic setting of QW. [QW = 0.0 with default LinkBandwidth]
Ptr queue = CreateObject ();
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", mode), true,
- "Verify that we can actually set the attribute Mode");
- if (queue->GetMode () == RedQueueDisc::QUEUE_DISC_MODE_BYTES)
+ if (mode == QueueSizeUnit::BYTES)
{
pktSize = 500;
modeSize = pktSize;
@@ -156,8 +154,8 @@ AredQueueDiscTestCase::RunAredDiscTest (StringValue mode)
"Verify that we can actually set the attribute MinTh");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxTh", DoubleValue (maxTh)), true,
"Verify that we can actually set the attribute MaxTh");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QueueLimit", UintegerValue (qSize)), true,
- "Verify that we can actually set the attribute QueueLimit");
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (mode, qSize))),
+ true, "Verify that we can actually set the attribute MaxSize");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QW", DoubleValue (0.0)), true,
"Verify that we can actually set the attribute QW");
queue->Initialize ();
@@ -169,14 +167,12 @@ AredQueueDiscTestCase::RunAredDiscTest (StringValue mode)
// test 2: Verify automatic setting of QW. [QW = 0.0 with lesser LinkBandwidth]
queue = CreateObject ();
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", mode), true,
- "Verify that we can actually set the attribute Mode");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MinTh", DoubleValue (minTh)), true,
"Verify that we can actually set the attribute MinTh");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxTh", DoubleValue (maxTh)), true,
"Verify that we can actually set the attribute MaxTh");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QueueLimit", UintegerValue (qSize)), true,
- "Verify that we can actually set the attribute QueueLimit");
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (mode, qSize))),
+ true, "Verify that we can actually set the attribute MaxSize");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QW", DoubleValue (0.0)), true,
"Verify that we can actually set the attribute QW");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("LinkBandwidth", DataRateValue (DataRate ("0.015Mbps"))), true,
@@ -190,14 +186,12 @@ AredQueueDiscTestCase::RunAredDiscTest (StringValue mode)
// test 3: Verify automatic setting of QW. [QW = -1.0 with default LinkBandwidth]
queue = CreateObject ();
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", mode), true,
- "Verify that we can actually set the attribute Mode");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MinTh", DoubleValue (minTh)), true,
"Verify that we can actually set the attribute MinTh");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxTh", DoubleValue (maxTh)), true,
"Verify that we can actually set the attribute MaxTh");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QueueLimit", UintegerValue (qSize)), true,
- "Verify that we can actually set the attribute QueueLimit");
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (mode, qSize))),
+ true, "Verify that we can actually set the attribute MaxSize");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QW", DoubleValue (-1.0)), true,
"Verify that we can actually set the attribute QW");
queue->Initialize ();
@@ -209,14 +203,12 @@ AredQueueDiscTestCase::RunAredDiscTest (StringValue mode)
// test 4: Verify automatic setting of QW. [QW = -1.0 with lesser LinkBandwidth]
queue = CreateObject ();
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", mode), true,
- "Verify that we can actually set the attribute Mode");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MinTh", DoubleValue (minTh)), true,
"Verify that we can actually set the attribute MinTh");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxTh", DoubleValue (maxTh)), true,
"Verify that we can actually set the attribute MaxTh");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QueueLimit", UintegerValue (qSize)), true,
- "Verify that we can actually set the attribute QueueLimit");
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (mode, qSize))),
+ true, "Verify that we can actually set the attribute MaxSize");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QW", DoubleValue (-1.0)), true,
"Verify that we can actually set the attribute QW");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("LinkBandwidth", DataRateValue (DataRate ("0.015Mbps"))), true,
@@ -230,14 +222,12 @@ AredQueueDiscTestCase::RunAredDiscTest (StringValue mode)
// test 5: Verify automatic setting of QW. [QW = -2.0 with default LinkBandwidth]
queue = CreateObject ();
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", mode), true,
- "Verify that we can actually set the attribute Mode");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MinTh", DoubleValue (minTh)), true,
"Verify that we can actually set the attribute MinTh");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxTh", DoubleValue (maxTh)), true,
"Verify that we can actually set the attribute MaxTh");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QueueLimit", UintegerValue (qSize)), true,
- "Verify that we can actually set the attribute QueueLimit");
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (mode, qSize))),
+ true, "Verify that we can actually set the attribute MaxSize");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QW", DoubleValue (-2.0)), true,
"Verify that we can actually set the attribute QW");
queue->Initialize ();
@@ -249,14 +239,12 @@ AredQueueDiscTestCase::RunAredDiscTest (StringValue mode)
// test 6: Verify automatic setting of QW. [QW = -2.0 with lesser LinkBandwidth]
queue = CreateObject ();
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", mode), true,
- "Verify that we can actually set the attribute Mode");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MinTh", DoubleValue (minTh)), true,
"Verify that we can actually set the attribute MinTh");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxTh", DoubleValue (maxTh)), true,
"Verify that we can actually set the attribute MaxTh");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QueueLimit", UintegerValue (qSize)), true,
- "Verify that we can actually set the attribute QueueLimit");
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (mode, qSize))),
+ true, "Verify that we can actually set the attribute MaxSize");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QW", DoubleValue (-2.0)), true,
"Verify that we can actually set the attribute QW");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("LinkBandwidth", DataRateValue (DataRate ("0.015Mbps"))), true,
@@ -270,14 +258,12 @@ AredQueueDiscTestCase::RunAredDiscTest (StringValue mode)
// test 7: Verify automatic setting of minTh and maxTh. [minTh = maxTh = 0.0, with default LinkBandwidth]
queue = CreateObject ();
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", mode), true,
- "Verify that we can actually set the attribute Mode");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MinTh", DoubleValue (0.0)), true,
"Verify that we can actually set the attribute MinTh");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxTh", DoubleValue (0.0)), true,
"Verify that we can actually set the attribute MaxTh");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QueueLimit", UintegerValue (qSize)), true,
- "Verify that we can actually set the attribute QueueLimit");
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (mode, qSize))),
+ true, "Verify that we can actually set the attribute MaxSize");
queue->Initialize ();
Enqueue (queue, pktSize, 300);
st = queue->GetStats ();
@@ -287,14 +273,12 @@ AredQueueDiscTestCase::RunAredDiscTest (StringValue mode)
// test 8: Verify automatic setting of minTh and maxTh. [minTh = maxTh = 0.0, with higher LinkBandwidth]
queue = CreateObject ();
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", mode), true,
- "Verify that we can actually set the attribute Mode");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MinTh", DoubleValue (0.0)), true,
"Verify that we can actually set the attribute MinTh");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxTh", DoubleValue (0.0)), true,
"Verify that we can actually set the attribute MaxTh");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QueueLimit", UintegerValue (qSize)), true,
- "Verify that we can actually set the attribute QueueLimit");
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (mode, qSize))),
+ true, "Verify that we can actually set the attribute MaxSize");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("LinkBandwidth", DataRateValue (DataRate ("150Mbps"))), true,
"Verify that we can actually set the attribute LinkBandwidth");
queue->Initialize ();
@@ -308,14 +292,12 @@ AredQueueDiscTestCase::RunAredDiscTest (StringValue mode)
queue = CreateObject ();
minTh = 5 * modeSize;
maxTh = 15 * modeSize;
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", mode), true,
- "Verify that we can actually set the attribute Mode");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MinTh", DoubleValue (minTh)), true,
"Verify that we can actually set the attribute MinTh");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxTh", DoubleValue (maxTh)), true,
"Verify that we can actually set the attribute MaxTh");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QueueLimit", UintegerValue (qSize)), true,
- "Verify that we can actually set the attribute QueueLimit");
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (mode, qSize))),
+ true, "Verify that we can actually set the attribute MaxSize");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QW", DoubleValue (0.002)), true,
"Verify that we can actually set the attribute QW");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("LInterm", DoubleValue (2)), true,
@@ -332,10 +314,8 @@ AredQueueDiscTestCase::RunAredDiscTest (StringValue mode)
// test 10: Adaptive RED (automatic and adaptive settings enabled)
queue = CreateObject ();
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", mode), true,
- "Verify that we can actually set the attribute Mode");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QueueLimit", UintegerValue (qSize)), true,
- "Verify that we can actually set the attribute QueueLimit");
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (mode, qSize))),
+ true, "Verify that we can actually set the attribute MaxSize");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("LInterm", DoubleValue (2)), true,
"Verify that we can actually set the attribute LInterm");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("ARED", BooleanValue (true)), true,
@@ -373,8 +353,8 @@ AredQueueDiscTestCase::EnqueueWithDelay (Ptr queue, uint32_t size,
void
AredQueueDiscTestCase::DoRun (void)
{
- RunAredDiscTest (StringValue ("QUEUE_DISC_MODE_PACKETS"));
- RunAredDiscTest (StringValue ("QUEUE_DISC_MODE_BYTES"));
+ RunAredDiscTest (QueueSizeUnit::PACKETS);
+ RunAredDiscTest (QueueSizeUnit::BYTES);
Simulator::Destroy ();
}
diff --git a/src/traffic-control/test/codel-queue-disc-test-suite.cc b/src/traffic-control/test/codel-queue-disc-test-suite.cc
index a0a19b6a1..a986232a8 100644
--- a/src/traffic-control/test/codel-queue-disc-test-suite.cc
+++ b/src/traffic-control/test/codel-queue-disc-test-suite.cc
@@ -122,37 +122,17 @@ public:
*
* \param mode the mode
*/
- CoDelQueueDiscBasicEnqueueDequeue (std::string mode);
+ CoDelQueueDiscBasicEnqueueDequeue (QueueSizeUnit mode);
virtual void DoRun (void);
- /**
- * Queue test size function
- * \param queue the queue disc
- * \param size the size
- * \param error the error string
- */
- void QueueTestSize (Ptr queue, uint32_t size, std::string error)
- {
- if (queue->GetMode () == CoDelQueueDisc::QUEUE_DISC_MODE_BYTES)
- {
- NS_TEST_EXPECT_MSG_EQ (queue->GetNBytes (), size, error);
- }
- else if (queue->GetMode () == CoDelQueueDisc::QUEUE_DISC_MODE_PACKETS)
- {
- NS_TEST_EXPECT_MSG_EQ (queue->GetNPackets (), size, error);
- }
-
- NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), size, error);
- }
-
private:
- StringValue m_mode; ///< mode
+ QueueSizeUnit m_mode; ///< mode
};
-CoDelQueueDiscBasicEnqueueDequeue::CoDelQueueDiscBasicEnqueueDequeue (std::string mode)
- : TestCase ("Basic enqueue and dequeue operations, and attribute setting for " + mode)
+CoDelQueueDiscBasicEnqueueDequeue::CoDelQueueDiscBasicEnqueueDequeue (QueueSizeUnit mode)
+ : TestCase ("Basic enqueue and dequeue operations, and attribute setting")
{
- m_mode = StringValue (mode);
+ m_mode = mode;
}
void
@@ -165,12 +145,6 @@ CoDelQueueDiscBasicEnqueueDequeue::DoRun (void)
Address dest;
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", m_mode), true,
- "Verify that we can actually set the attribute Mode");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxPackets", UintegerValue (1500)), true,
- "Verify that we can actually set the attribute MaxPackets");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxBytes", UintegerValue (pktSize * 1500)), true,
- "Verify that we can actually set the attribute MaxBytes");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MinBytes", UintegerValue (pktSize)), true,
"Verify that we can actually set the attribute MinBytes");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Interval", StringValue ("50ms")), true,
@@ -178,14 +152,16 @@ CoDelQueueDiscBasicEnqueueDequeue::DoRun (void)
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Target", StringValue ("4ms")), true,
"Verify that we can actually set the attribute Target");
- if (queue->GetMode () == CoDelQueueDisc::QUEUE_DISC_MODE_BYTES)
+ if (m_mode == QueueSizeUnit::BYTES)
{
modeSize = pktSize;
}
- else if (queue->GetMode () == CoDelQueueDisc::QUEUE_DISC_MODE_PACKETS)
+ else if (m_mode == QueueSizeUnit::PACKETS)
{
modeSize = 1;
}
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (m_mode, modeSize * 1500))),
+ true, "Verify that we can actually set the attribute MaxSize");
queue->Initialize ();
Ptr p1, p2, p3, p4, p5, p6;
@@ -196,19 +172,19 @@ CoDelQueueDiscBasicEnqueueDequeue::DoRun (void)
p5 = Create (pktSize);
p6 = Create (pktSize);
- QueueTestSize (queue, 0 * modeSize, "There should be no packets in queue");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize().GetValue (), 0 * modeSize, "There should be no packets in queue");
queue->Enqueue (Create (p1, dest));
- QueueTestSize (queue, 1 * modeSize, "There should be one packet in queue");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize().GetValue (), 1 * modeSize, "There should be one packet in queue");
queue->Enqueue (Create (p2, dest));
- QueueTestSize (queue, 2 * modeSize, "There should be two packets in queue");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize().GetValue (), 2 * modeSize, "There should be two packets in queue");
queue->Enqueue (Create (p3, dest));
- QueueTestSize (queue, 3 * modeSize, "There should be three packets in queue");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize().GetValue (), 3 * modeSize, "There should be three packets in queue");
queue->Enqueue (Create (p4, dest));
- QueueTestSize (queue, 4 * modeSize, "There should be four packets in queue");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize().GetValue (), 4 * modeSize, "There should be four packets in queue");
queue->Enqueue (Create (p5, dest));
- QueueTestSize (queue, 5 * modeSize, "There should be five packets in queue");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize().GetValue (), 5 * modeSize, "There should be five packets in queue");
queue->Enqueue (Create (p6, dest));
- QueueTestSize (queue, 6 * modeSize, "There should be six packets in queue");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize().GetValue (), 6 * modeSize, "There should be six packets in queue");
NS_TEST_EXPECT_MSG_EQ (queue->GetStats ().GetNDroppedPackets (CoDelQueueDisc::OVERLIMIT_DROP),
0, "There should be no packets being dropped due to full queue");
@@ -217,32 +193,32 @@ CoDelQueueDiscBasicEnqueueDequeue::DoRun (void)
item = queue->Dequeue ();
NS_TEST_EXPECT_MSG_EQ ((item != 0), true, "I want to remove the first packet");
- QueueTestSize (queue, 5 * modeSize, "There should be five packets in queue");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize().GetValue (), 5 * modeSize, "There should be five packets in queue");
NS_TEST_EXPECT_MSG_EQ (item->GetPacket ()->GetUid (), p1->GetUid (), "was this the first packet ?");
item = queue->Dequeue ();
NS_TEST_EXPECT_MSG_EQ ((item != 0), true, "I want to remove the second packet");
- QueueTestSize (queue, 4 * modeSize, "There should be four packets in queue");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize().GetValue (), 4 * modeSize, "There should be four packets in queue");
NS_TEST_EXPECT_MSG_EQ (item->GetPacket ()->GetUid (), p2->GetUid (), "Was this the second packet ?");
item = queue->Dequeue ();
NS_TEST_EXPECT_MSG_EQ ((item != 0), true, "I want to remove the third packet");
- QueueTestSize (queue, 3 * modeSize, "There should be three packets in queue");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize().GetValue (), 3 * modeSize, "There should be three packets in queue");
NS_TEST_EXPECT_MSG_EQ (item->GetPacket ()->GetUid (), p3->GetUid (), "Was this the third packet ?");
item = queue->Dequeue ();
NS_TEST_EXPECT_MSG_EQ ((item != 0), true, "I want to remove the forth packet");
- QueueTestSize (queue, 2 * modeSize, "There should be two packets in queue");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize().GetValue (), 2 * modeSize, "There should be two packets in queue");
NS_TEST_EXPECT_MSG_EQ (item->GetPacket ()->GetUid (), p4->GetUid (), "Was this the fourth packet ?");
item = queue->Dequeue ();
NS_TEST_EXPECT_MSG_EQ ((item != 0), true, "I want to remove the fifth packet");
- QueueTestSize (queue, 1 * modeSize, "There should be one packet in queue");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize().GetValue (), 1 * modeSize, "There should be one packet in queue");
NS_TEST_EXPECT_MSG_EQ (item->GetPacket ()->GetUid (), p5->GetUid (), "Was this the fifth packet ?");
item = queue->Dequeue ();
NS_TEST_EXPECT_MSG_EQ ((item != 0), true, "I want to remove the last packet");
- QueueTestSize (queue, 0 * modeSize, "There should be zero packet in queue");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize().GetValue (), 0 * modeSize, "There should be zero packet in queue");
NS_TEST_EXPECT_MSG_EQ (item->GetPacket ()->GetUid (), p6->GetUid (), "Was this the sixth packet ?");
item = queue->Dequeue ();
@@ -266,29 +242,9 @@ public:
*
* \param mode the mode
*/
- CoDelQueueDiscBasicOverflow (std::string mode);
+ CoDelQueueDiscBasicOverflow (QueueSizeUnit mode);
virtual void DoRun (void);
- /**
- * Queue test size function
- * \param queue the queue disc
- * \param size the size
- * \param error the error string
- */
- void QueueTestSize (Ptr queue, uint32_t size, std::string error)
- {
- if (queue->GetMode () == CoDelQueueDisc::QUEUE_DISC_MODE_BYTES)
- {
- NS_TEST_EXPECT_MSG_EQ (queue->GetNBytes (), size, error);
- }
- else if (queue->GetMode () == CoDelQueueDisc::QUEUE_DISC_MODE_PACKETS)
- {
- NS_TEST_EXPECT_MSG_EQ (queue->GetNPackets (), size, error);
- }
-
- NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), size, error);
- }
-
private:
/**
* Enqueue function
@@ -297,13 +253,13 @@ private:
* \param nPkt the number of packets
*/
void Enqueue (Ptr queue, uint32_t size, uint32_t nPkt);
- StringValue m_mode; ///< mode
+ QueueSizeUnit m_mode; ///< mode
};
-CoDelQueueDiscBasicOverflow::CoDelQueueDiscBasicOverflow (std::string mode)
- : TestCase ("Basic overflow behavior for " + mode)
+CoDelQueueDiscBasicOverflow::CoDelQueueDiscBasicOverflow (QueueSizeUnit mode)
+ : TestCase ("Basic overflow behavior")
{
- m_mode = StringValue (mode);
+ m_mode = mode;
}
void
@@ -313,16 +269,13 @@ CoDelQueueDiscBasicOverflow::DoRun (void)
uint32_t pktSize = 1000;
uint32_t modeSize = 0;
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", m_mode), true,
- "Verify that we can actually set the attribute Mode");
-
Address dest;
- if (queue->GetMode () == CoDelQueueDisc::QUEUE_DISC_MODE_BYTES)
+ if (m_mode == QueueSizeUnit::BYTES)
{
modeSize = pktSize;
}
- else if (queue->GetMode () == CoDelQueueDisc::QUEUE_DISC_MODE_PACKETS)
+ else if (m_mode == QueueSizeUnit::PACKETS)
{
modeSize = 1;
}
@@ -332,10 +285,8 @@ CoDelQueueDiscBasicOverflow::DoRun (void)
p2 = Create (pktSize);
p3 = Create (pktSize);
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxPackets", UintegerValue (500)), true,
- "Verify that we can actually set the attribute MaxPackets");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxBytes", UintegerValue (pktSize * 500)), true,
- "Verify that we can actually set the attribute MaxBytes");
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (m_mode, modeSize * 500))),
+ true, "Verify that we can actually set the attribute MaxSize");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MinBytes", UintegerValue (pktSize)), true,
"Verify that we can actually set the attribute MinBytes");
@@ -346,7 +297,7 @@ CoDelQueueDiscBasicOverflow::DoRun (void)
queue->Enqueue (Create (p2, dest));
queue->Enqueue (Create (p3, dest));
- QueueTestSize (queue, 500 * modeSize, "There should be 500 packets in queue");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize().GetValue (), 500 * modeSize, "There should be 500 packets in queue");
NS_TEST_EXPECT_MSG_EQ (queue->GetStats ().GetNDroppedPackets (CoDelQueueDisc::OVERLIMIT_DROP),
3, "There should be three packets being dropped due to full queue");
}
@@ -473,29 +424,9 @@ public:
*
* \param mode the mode
*/
- CoDelQueueDiscBasicDrop (std::string mode);
+ CoDelQueueDiscBasicDrop (QueueSizeUnit mode);
virtual void DoRun (void);
- /**
- * Queue test size function
- * \param queue the queue disc
- * \param size the size
- * \param error the error string
- */
- void QueueTestSize (Ptr queue, uint32_t size, std::string error)
- {
- if (queue->GetMode () == CoDelQueueDisc::QUEUE_DISC_MODE_BYTES)
- {
- NS_TEST_EXPECT_MSG_EQ (queue->GetNBytes (), size, error);
- }
- else if (queue->GetMode () == CoDelQueueDisc::QUEUE_DISC_MODE_PACKETS)
- {
- NS_TEST_EXPECT_MSG_EQ (queue->GetNPackets (), size, error);
- }
-
- NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), size, error);
- }
-
private:
/**
* Enqueue function
@@ -515,14 +446,14 @@ private:
* \param newVal the new value
*/
void DropNextTracer (uint32_t oldVal, uint32_t newVal);
- StringValue m_mode; ///< mode
+ QueueSizeUnit m_mode; ///< mode
uint32_t m_dropNextCount; ///< count the number of times m_dropNext is recalculated
};
-CoDelQueueDiscBasicDrop::CoDelQueueDiscBasicDrop (std::string mode)
- : TestCase ("Basic drop operations for " + mode)
+CoDelQueueDiscBasicDrop::CoDelQueueDiscBasicDrop (QueueSizeUnit mode)
+ : TestCase ("Basic drop operations")
{
- m_mode = StringValue (mode);
+ m_mode = mode;
m_dropNextCount = 0;
}
@@ -541,22 +472,22 @@ CoDelQueueDiscBasicDrop::DoRun (void)
uint32_t pktSize = 1000;
uint32_t modeSize = 0;
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", m_mode), true,
- "Verify that we can actually set the attribute Mode");
-
- if (queue->GetMode () == CoDelQueueDisc::QUEUE_DISC_MODE_BYTES)
+ if (m_mode == QueueSizeUnit::BYTES)
{
modeSize = pktSize;
}
- else if (queue->GetMode () == CoDelQueueDisc::QUEUE_DISC_MODE_PACKETS)
+ else if (m_mode == QueueSizeUnit::PACKETS)
{
modeSize = 1;
}
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (m_mode, modeSize * 500))),
+ true, "Verify that we can actually set the attribute MaxSize");
+
queue->Initialize ();
Enqueue (queue, pktSize, 20);
- NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 20 * modeSize, "There should be 20 packets in queue.");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize ().GetValue (), 20 * modeSize, "There should be 20 packets in queue.");
// Although the first dequeue occurs with a sojourn time above target
// the dequeue should be successful in this interval
@@ -593,7 +524,7 @@ void
CoDelQueueDiscBasicDrop::Dequeue (Ptr queue, uint32_t modeSize)
{
uint32_t initialDropCount = queue->GetStats ().GetNDroppedPackets (CoDelQueueDisc::TARGET_EXCEEDED_DROP);
- uint32_t initialQSize = queue->GetQueueSize ();
+ uint32_t initialQSize = queue->GetCurrentSize ().GetValue ();
uint32_t initialDropNext = queue->GetDropNext ();
Time currentTime = Simulator::Now ();
uint32_t currentDropCount = 0;
@@ -614,13 +545,13 @@ CoDelQueueDiscBasicDrop::Dequeue (Ptr queue, uint32_t modeSize)
NS_TEST_EXPECT_MSG_EQ (currentDropCount, 0, "We are not in dropping state."
"Sojourn time has just gone above target from below."
"Hence, there should be no packet drops");
- QueueTestSize (queue, initialQSize - modeSize, "There should be 1 packet dequeued.");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize ().GetValue (), initialQSize - modeSize, "There should be 1 packet dequeued.");
}
else if (currentTime >= queue->GetInterval ())
{
currentDropCount = queue->GetStats ().GetNDroppedPackets (CoDelQueueDisc::TARGET_EXCEEDED_DROP);
- QueueTestSize (queue, initialQSize - 2 * modeSize, "Sojourn time has been above target for at least interval."
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize ().GetValue (), initialQSize - 2 * modeSize, "Sojourn time has been above target for at least interval."
"We enter the dropping state, perform initial packet drop, and dequeue the next."
"So there should be 2 more packets dequeued.");
NS_TEST_EXPECT_MSG_EQ (currentDropCount, 1, "There should be 1 packet drop");
@@ -631,7 +562,7 @@ CoDelQueueDiscBasicDrop::Dequeue (Ptr queue, uint32_t modeSize)
if (currentTime.GetMicroSeconds () < initialDropNext)
{
currentDropCount = queue->GetStats ().GetNDroppedPackets (CoDelQueueDisc::TARGET_EXCEEDED_DROP);
- QueueTestSize (queue, initialQSize - modeSize, "We are in dropping state."
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize ().GetValue (), initialQSize - modeSize, "We are in dropping state."
"Sojourn is still above target."
"However, it's not time for next drop."
"So there should be only 1 more packet dequeued");
@@ -641,7 +572,7 @@ CoDelQueueDiscBasicDrop::Dequeue (Ptr queue, uint32_t modeSize)
else if (currentTime.GetMicroSeconds () >= initialDropNext)
{
currentDropCount = queue->GetStats ().GetNDroppedPackets (CoDelQueueDisc::TARGET_EXCEEDED_DROP);
- QueueTestSize (queue, initialQSize - (m_dropNextCount + 1) * modeSize, "We are in dropping state."
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize ().GetValue (), initialQSize - (m_dropNextCount + 1) * modeSize, "We are in dropping state."
"It's time for next drop."
"The number of packets dequeued equals to the number of times m_dropNext is updated plus initial dequeue");
NS_TEST_EXPECT_MSG_EQ (currentDropCount, 1 + m_dropNextCount, "The number of drops equals to the number of times m_dropNext is updated plus 1 from last dequeue");
@@ -663,17 +594,17 @@ public:
: TestSuite ("codel-queue-disc", UNIT)
{
// Test 1: simple enqueue/dequeue with no drops
- AddTestCase (new CoDelQueueDiscBasicEnqueueDequeue ("QUEUE_DISC_MODE_PACKETS"), TestCase::QUICK);
- AddTestCase (new CoDelQueueDiscBasicEnqueueDequeue ("QUEUE_DISC_MODE_BYTES"), TestCase::QUICK);
+ AddTestCase (new CoDelQueueDiscBasicEnqueueDequeue (QueueSizeUnit::PACKETS), TestCase::QUICK);
+ AddTestCase (new CoDelQueueDiscBasicEnqueueDequeue (QueueSizeUnit::BYTES), TestCase::QUICK);
// Test 2: enqueue with drops due to queue overflow
- AddTestCase (new CoDelQueueDiscBasicOverflow ("QUEUE_DISC_MODE_PACKETS"), TestCase::QUICK);
- AddTestCase (new CoDelQueueDiscBasicOverflow ("QUEUE_DISC_MODE_BYTES"), TestCase::QUICK);
+ AddTestCase (new CoDelQueueDiscBasicOverflow (QueueSizeUnit::PACKETS), TestCase::QUICK);
+ AddTestCase (new CoDelQueueDiscBasicOverflow (QueueSizeUnit::BYTES), TestCase::QUICK);
// Test 3: test NewtonStep() against explicit port of Linux implementation
AddTestCase (new CoDelQueueDiscNewtonStepTest (), TestCase::QUICK);
// Test 4: test ControlLaw() against explicit port of Linux implementation
AddTestCase (new CoDelQueueDiscControlLawTest (), TestCase::QUICK);
// Test 5: enqueue/dequeue with drops according to CoDel algorithm
- AddTestCase (new CoDelQueueDiscBasicDrop ("QUEUE_DISC_MODE_PACKETS"), TestCase::QUICK);
- AddTestCase (new CoDelQueueDiscBasicDrop ("QUEUE_DISC_MODE_BYTES"), TestCase::QUICK);
+ AddTestCase (new CoDelQueueDiscBasicDrop (QueueSizeUnit::PACKETS), TestCase::QUICK);
+ AddTestCase (new CoDelQueueDiscBasicDrop (QueueSizeUnit::BYTES), TestCase::QUICK);
}
} g_coDelQueueTestSuite; ///< the test suite
diff --git a/src/traffic-control/test/pie-queue-disc-test-suite.cc b/src/traffic-control/test/pie-queue-disc-test-suite.cc
index 4043b8dc6..f6d62bc36 100644
--- a/src/traffic-control/test/pie-queue-disc-test-suite.cc
+++ b/src/traffic-control/test/pie-queue-disc-test-suite.cc
@@ -130,7 +130,7 @@ private:
* Run test function
* \param mode the test mode
*/
- void RunPieTest (StringValue mode);
+ void RunPieTest (QueueSizeUnit mode);
};
PieQueueDiscTestCase::PieQueueDiscTestCase ()
@@ -139,7 +139,7 @@ PieQueueDiscTestCase::PieQueueDiscTestCase ()
}
void
-PieQueueDiscTestCase::RunPieTest (StringValue mode)
+PieQueueDiscTestCase::RunPieTest (QueueSizeUnit mode)
{
uint32_t pktSize = 0;
@@ -151,12 +151,9 @@ PieQueueDiscTestCase::RunPieTest (StringValue mode)
// test 1: simple enqueue/dequeue with defaults, no drops
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", mode), true,
- "Verify that we can actually set the attribute Mode");
-
Address dest;
- if (queue->GetMode () == PieQueueDisc::QUEUE_DISC_MODE_BYTES)
+ if (mode == QueueSizeUnit::BYTES)
{
// pktSize should be same as MeanPktSize to avoid performance gap between byte and packet mode
pktSize = 1000;
@@ -164,8 +161,8 @@ PieQueueDiscTestCase::RunPieTest (StringValue mode)
qSize = qSize * modeSize;
}
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QueueLimit", UintegerValue (qSize)), true,
- "Verify that we can actually set the attribute QueueLimit");
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (mode, qSize))),
+ true, "Verify that we can actually set the attribute MaxSize");
Ptr p1, p2, p3, p4, p5, p6, p7, p8;
p1 = Create (pktSize);
@@ -178,34 +175,34 @@ PieQueueDiscTestCase::RunPieTest (StringValue mode)
p8 = Create (pktSize);
queue->Initialize ();
- NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 0 * modeSize, "There should be no packets in there");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize ().GetValue (), 0 * modeSize, "There should be no packets in there");
queue->Enqueue (Create (p1, dest));
- NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 1 * modeSize, "There should be one packet in there");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize ().GetValue (), 1 * modeSize, "There should be one packet in there");
queue->Enqueue (Create (p2, dest));
- NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 2 * modeSize, "There should be two packets in there");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize ().GetValue (), 2 * modeSize, "There should be two packets in there");
queue->Enqueue (Create (p3, dest));
queue->Enqueue (Create (p4, dest));
queue->Enqueue (Create (p5, dest));
queue->Enqueue (Create (p6, dest));
queue->Enqueue (Create (p7, dest));
queue->Enqueue (Create (p8, dest));
- NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 8 * modeSize, "There should be eight packets in there");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize ().GetValue (), 8 * modeSize, "There should be eight packets in there");
Ptr item;
item = queue->Dequeue ();
NS_TEST_EXPECT_MSG_EQ ((item != 0), true, "I want to remove the first packet");
- NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 7 * modeSize, "There should be seven packets in there");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize ().GetValue (), 7 * modeSize, "There should be seven packets in there");
NS_TEST_EXPECT_MSG_EQ (item->GetPacket ()->GetUid (), p1->GetUid (), "was this the first packet ?");
item = queue->Dequeue ();
NS_TEST_EXPECT_MSG_EQ ((item != 0), true, "I want to remove the second packet");
- NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 6 * modeSize, "There should be six packet in there");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize ().GetValue (), 6 * modeSize, "There should be six packet in there");
NS_TEST_EXPECT_MSG_EQ (item->GetPacket ()->GetUid (), p2->GetUid (), "Was this the second packet ?");
item = queue->Dequeue ();
NS_TEST_EXPECT_MSG_EQ ((item != 0), true, "I want to remove the third packet");
- NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 5 * modeSize, "There should be five packets in there");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize ().GetValue (), 5 * modeSize, "There should be five packets in there");
NS_TEST_EXPECT_MSG_EQ (item->GetPacket ()->GetUid (), p3->GetUid (), "Was this the third packet ?");
item = queue->Dequeue ();
@@ -221,10 +218,8 @@ PieQueueDiscTestCase::RunPieTest (StringValue mode)
// test 2: more data with defaults, unforced drops but no forced drops
queue = CreateObject ();
pktSize = 1000; // pktSize != 0 because DequeueThreshold always works in bytes
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", mode), true,
- "Verify that we can actually set the attribute Mode");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QueueLimit", UintegerValue (qSize)), true,
- "Verify that we can actually set the attribute QueueLimit");
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (mode, qSize))),
+ true, "Verify that we can actually set the attribute MaxSize");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("A", DoubleValue (0.125)), true,
"Verify that we can actually set the attribute A");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("B", DoubleValue (1.25)), true,
@@ -252,10 +247,8 @@ PieQueueDiscTestCase::RunPieTest (StringValue mode)
// test 3: same as test 2, but with higher QueueDelayReference
queue = CreateObject ();
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", mode), true,
- "Verify that we can actually set the attribute Mode");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QueueLimit", UintegerValue (qSize)), true,
- "Verify that we can actually set the attribute QueueLimit");
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (mode, qSize))),
+ true, "Verify that we can actually set the attribute MaxSize");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("A", DoubleValue (0.125)), true,
"Verify that we can actually set the attribute A");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("B", DoubleValue (1.25)), true,
@@ -283,10 +276,8 @@ PieQueueDiscTestCase::RunPieTest (StringValue mode)
// test 4: same as test 2, but with reduced dequeue rate
queue = CreateObject ();
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", mode), true,
- "Verify that we can actually set the attribute Mode");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QueueLimit", UintegerValue (qSize)), true,
- "Verify that we can actually set the attribute QueueLimit");
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (mode, qSize))),
+ true, "Verify that we can actually set the attribute MaxSize");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("A", DoubleValue (0.125)), true,
"Verify that we can actually set the attribute A");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("B", DoubleValue (1.25)), true,
@@ -314,10 +305,8 @@ PieQueueDiscTestCase::RunPieTest (StringValue mode)
// test 5: same dequeue rate as test 4, but with higher Tupdate
queue = CreateObject ();
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", mode), true,
- "Verify that we can actually set the attribute Mode");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QueueLimit", UintegerValue (qSize)), true,
- "Verify that we can actually set the attribute QueueLimit");
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (mode, qSize))),
+ true, "Verify that we can actually set the attribute MaxSize");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("A", DoubleValue (0.125)), true,
"Verify that we can actually set the attribute A");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("B", DoubleValue (1.25)), true,
@@ -385,8 +374,8 @@ PieQueueDiscTestCase::DequeueWithDelay (Ptr queue, double delay, u
void
PieQueueDiscTestCase::DoRun (void)
{
- RunPieTest (StringValue ("QUEUE_DISC_MODE_PACKETS"));
- RunPieTest (StringValue ("QUEUE_DISC_MODE_BYTES"));
+ RunPieTest (QueueSizeUnit::PACKETS);
+ RunPieTest (QueueSizeUnit::BYTES);
Simulator::Destroy ();
}
diff --git a/src/traffic-control/test/red-queue-disc-test-suite.cc b/src/traffic-control/test/red-queue-disc-test-suite.cc
index 26649c311..ccbf90d57 100644
--- a/src/traffic-control/test/red-queue-disc-test-suite.cc
+++ b/src/traffic-control/test/red-queue-disc-test-suite.cc
@@ -116,7 +116,7 @@ private:
* Run RED test function
* \param mode the mode
*/
- void RunRedTest (StringValue mode);
+ void RunRedTest (QueueSizeUnit mode);
};
RedQueueDiscTestCase::RedQueueDiscTestCase ()
@@ -125,7 +125,7 @@ RedQueueDiscTestCase::RedQueueDiscTestCase ()
}
void
-RedQueueDiscTestCase::RunRedTest (StringValue mode)
+RedQueueDiscTestCase::RunRedTest (QueueSizeUnit mode)
{
uint32_t pktSize = 0;
// 1 for packets; pktSize for bytes
@@ -136,26 +136,24 @@ RedQueueDiscTestCase::RunRedTest (StringValue mode)
Ptr queue = CreateObject ();
// test 1: simple enqueue/dequeue with no drops
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", mode), true,
- "Verify that we can actually set the attribute Mode");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MinTh", DoubleValue (minTh)), true,
"Verify that we can actually set the attribute MinTh");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxTh", DoubleValue (maxTh)), true,
"Verify that we can actually set the attribute MaxTh");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QueueLimit", UintegerValue (qSize)), true,
- "Verify that we can actually set the attribute QueueLimit");
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (mode, qSize))),
+ true, "Verify that we can actually set the attribute MaxSize");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QW", DoubleValue (0.002)), true,
"Verify that we can actually set the attribute QW");
Address dest;
- if (queue->GetMode () == RedQueueDisc::QUEUE_DISC_MODE_BYTES)
+ if (mode == QueueSizeUnit::BYTES)
{
// pktSize should be same as MeanPktSize to avoid performance gap between byte and packet mode
pktSize = 500;
modeSize = pktSize;
queue->SetTh (minTh * modeSize, maxTh * modeSize);
- queue->SetQueueLimit (qSize * modeSize);
+ queue->SetMaxSize (QueueSize (mode, qSize * modeSize));
}
Ptr p1, p2, p3, p4, p5, p6, p7, p8;
@@ -169,34 +167,34 @@ RedQueueDiscTestCase::RunRedTest (StringValue mode)
p8 = Create (pktSize);
queue->Initialize ();
- NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 0 * modeSize, "There should be no packets in there");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize ().GetValue (), 0 * modeSize, "There should be no packets in there");
queue->Enqueue (Create (p1, dest, false));
- NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 1 * modeSize, "There should be one packet in there");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize ().GetValue (), 1 * modeSize, "There should be one packet in there");
queue->Enqueue (Create (p2, dest, false));
- NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 2 * modeSize, "There should be two packets in there");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize ().GetValue (), 2 * modeSize, "There should be two packets in there");
queue->Enqueue (Create (p3, dest, false));
queue->Enqueue (Create (p4, dest, false));
queue->Enqueue (Create (p5, dest, false));
queue->Enqueue (Create (p6, dest, false));
queue->Enqueue (Create (p7, dest, false));
queue->Enqueue (Create (p8, dest, false));
- NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 8 * modeSize, "There should be eight packets in there");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize ().GetValue (), 8 * modeSize, "There should be eight packets in there");
Ptr item;
item = queue->Dequeue ();
NS_TEST_EXPECT_MSG_EQ ((item != 0), true, "I want to remove the first packet");
- NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 7 * modeSize, "There should be seven packets in there");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize ().GetValue (), 7 * modeSize, "There should be seven packets in there");
NS_TEST_EXPECT_MSG_EQ (item->GetPacket ()->GetUid (), p1->GetUid (), "was this the first packet ?");
item = queue->Dequeue ();
NS_TEST_EXPECT_MSG_EQ ((item != 0), true, "I want to remove the second packet");
- NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 6 * modeSize, "There should be six packet in there");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize ().GetValue (), 6 * modeSize, "There should be six packet in there");
NS_TEST_EXPECT_MSG_EQ (item->GetPacket ()->GetUid (), p2->GetUid (), "Was this the second packet ?");
item = queue->Dequeue ();
NS_TEST_EXPECT_MSG_EQ ((item != 0), true, "I want to remove the third packet");
- NS_TEST_EXPECT_MSG_EQ (queue->GetQueueSize (), 5 * modeSize, "There should be five packets in there");
+ NS_TEST_EXPECT_MSG_EQ (queue->GetCurrentSize ().GetValue (), 5 * modeSize, "There should be five packets in there");
NS_TEST_EXPECT_MSG_EQ (item->GetPacket ()->GetUid (), p3->GetUid (), "Was this the third packet ?");
item = queue->Dequeue ();
@@ -214,14 +212,12 @@ RedQueueDiscTestCase::RunRedTest (StringValue mode)
minTh = 70 * modeSize;
maxTh = 150 * modeSize;
qSize = 300 * modeSize;
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", mode), true,
- "Verify that we can actually set the attribute Mode");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MinTh", DoubleValue (minTh)), true,
"Verify that we can actually set the attribute MinTh");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxTh", DoubleValue (maxTh)), true,
"Verify that we can actually set the attribute MaxTh");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QueueLimit", UintegerValue (qSize)), true,
- "Verify that we can actually set the attribute QueueLimit");
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (mode, qSize))),
+ true, "Verify that we can actually set the attribute MaxSize");
queue->Initialize ();
Enqueue (queue, pktSize, 300, false);
QueueDisc::Stats st = queue->GetStats ();
@@ -247,14 +243,12 @@ RedQueueDiscTestCase::RunRedTest (StringValue mode)
// test 3: more data, now drops due QW change
queue = CreateObject ();
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", mode), true,
- "Verify that we can actually set the attribute Mode");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MinTh", DoubleValue (minTh)), true,
"Verify that we can actually set the attribute MinTh");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxTh", DoubleValue (maxTh)), true,
"Verify that we can actually set the attribute MaxTh");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QueueLimit", UintegerValue (qSize)), true,
- "Verify that we can actually set the attribute QueueLimit");
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (mode, qSize))),
+ true, "Verify that we can actually set the attribute MaxSize");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QW", DoubleValue (0.020)), true,
"Verify that we can actually set the attribute QW");
queue->Initialize ();
@@ -269,14 +263,12 @@ RedQueueDiscTestCase::RunRedTest (StringValue mode)
// test 4: reduced maxTh, this causes more drops
maxTh = 100 * modeSize;
queue = CreateObject ();
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", mode), true,
- "Verify that we can actually set the attribute Mode");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MinTh", DoubleValue (minTh)), true,
"Verify that we can actually set the attribute MinTh");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxTh", DoubleValue (maxTh)), true,
"Verify that we can actually set the attribute MaxTh");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QueueLimit", UintegerValue (qSize)), true,
- "Verify that we can actually set the attribute QueueLimit");
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (mode, qSize))),
+ true, "Verify that we can actually set the attribute MaxSize");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QW", DoubleValue (0.020)), true,
"Verify that we can actually set the attribute QW");
queue->Initialize ();
@@ -291,14 +283,12 @@ RedQueueDiscTestCase::RunRedTest (StringValue mode)
// test 5: change drop probability to a high value (LInterm)
maxTh = 150 * modeSize;
queue = CreateObject ();
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", mode), true,
- "Verify that we can actually set the attribute Mode");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MinTh", DoubleValue (minTh)), true,
"Verify that we can actually set the attribute MinTh");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxTh", DoubleValue (maxTh)), true,
"Verify that we can actually set the attribute MaxTh");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QueueLimit", UintegerValue (qSize)), true,
- "Verify that we can actually set the attribute QueueLimit");
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (mode, qSize))),
+ true, "Verify that we can actually set the attribute MaxSize");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QW", DoubleValue (0.020)), true,
"Verify that we can actually set the attribute QW");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("LInterm", DoubleValue (5)), true,
@@ -314,14 +304,12 @@ RedQueueDiscTestCase::RunRedTest (StringValue mode)
// test 6: disable Gentle param
queue = CreateObject ();
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", mode), true,
- "Verify that we can actually set the attribute Mode");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MinTh", DoubleValue (minTh)), true,
"Verify that we can actually set the attribute MinTh");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxTh", DoubleValue (maxTh)), true,
"Verify that we can actually set the attribute MaxTh");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QueueLimit", UintegerValue (qSize)), true,
- "Verify that we can actually set the attribute QueueLimit");
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (mode, qSize))),
+ true, "Verify that we can actually set the attribute MaxSize");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QW", DoubleValue (0.020)), true,
"Verify that we can actually set the attribute QW");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Gentle", BooleanValue (false)), true,
@@ -337,14 +325,12 @@ RedQueueDiscTestCase::RunRedTest (StringValue mode)
// test 7: disable Wait param
queue = CreateObject ();
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", mode), true,
- "Verify that we can actually set the attribute Mode");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MinTh", DoubleValue (minTh)), true,
"Verify that we can actually set the attribute MinTh");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxTh", DoubleValue (maxTh)), true,
"Verify that we can actually set the attribute MaxTh");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QueueLimit", UintegerValue (qSize)), true,
- "Verify that we can actually set the attribute QueueLimit");
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (mode, qSize))),
+ true, "Verify that we can actually set the attribute MaxSize");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QW", DoubleValue (0.020)), true,
"Verify that we can actually set the attribute QW");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Wait", BooleanValue (false)), true,
@@ -362,14 +348,12 @@ RedQueueDiscTestCase::RunRedTest (StringValue mode)
queue = CreateObject ();
minTh = 30 * modeSize;
maxTh = 90 * modeSize;
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", mode), true,
- "Verify that we can actually set the attribute Mode");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MinTh", DoubleValue (minTh)), true,
"Verify that we can actually set the attribute MinTh");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxTh", DoubleValue (maxTh)), true,
"Verify that we can actually set the attribute MaxTh");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QueueLimit", UintegerValue (qSize)), true,
- "Verify that we can actually set the attribute QueueLimit");
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (mode, qSize))),
+ true, "Verify that we can actually set the attribute MaxSize");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QW", DoubleValue (0.002)), true,
"Verify that we can actually set the attribute QW");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("LInterm", DoubleValue (2)), true,
@@ -390,14 +374,12 @@ RedQueueDiscTestCase::RunRedTest (StringValue mode)
// test 9: Packets are ECN capable, but RED queue disc is not ECN enabled
queue = CreateObject ();
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", mode), true,
- "Verify that we can actually set the attribute Mode");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MinTh", DoubleValue (minTh)), true,
"Verify that we can actually set the attribute MinTh");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxTh", DoubleValue (maxTh)), true,
"Verify that we can actually set the attribute MaxTh");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QueueLimit", UintegerValue (qSize)), true,
- "Verify that we can actually set the attribute QueueLimit");
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (mode, qSize))),
+ true, "Verify that we can actually set the attribute MaxSize");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QW", DoubleValue (0.002)), true,
"Verify that we can actually set the attribute QW");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("LInterm", DoubleValue (2)), true,
@@ -418,14 +400,12 @@ RedQueueDiscTestCase::RunRedTest (StringValue mode)
// test 10: Packets are ECN capable and RED queue disc is ECN enabled
queue = CreateObject ();
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", mode), true,
- "Verify that we can actually set the attribute Mode");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MinTh", DoubleValue (minTh)), true,
"Verify that we can actually set the attribute MinTh");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxTh", DoubleValue (maxTh)), true,
"Verify that we can actually set the attribute MaxTh");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QueueLimit", UintegerValue (qSize)), true,
- "Verify that we can actually set the attribute QueueLimit");
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (mode, qSize))),
+ true, "Verify that we can actually set the attribute MaxSize");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QW", DoubleValue (0.002)), true,
"Verify that we can actually set the attribute QW");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("LInterm", DoubleValue (2)), true,
@@ -448,14 +428,12 @@ RedQueueDiscTestCase::RunRedTest (StringValue mode)
queue = CreateObject ();
minTh = 30 * modeSize;
maxTh = 90 * modeSize;
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", mode), true,
- "Verify that we can actually set the attribute Mode");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MinTh", DoubleValue (minTh)), true,
"Verify that we can actually set the attribute MinTh");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxTh", DoubleValue (maxTh)), true,
"Verify that we can actually set the attribute MaxTh");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QueueLimit", UintegerValue (qSize)), true,
- "Verify that we can actually set the attribute QueueLimit");
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (mode, qSize))),
+ true, "Verify that we can actually set the attribute MaxSize");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QW", DoubleValue (0.002)), true,
"Verify that we can actually set the attribute QW");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("LInterm", DoubleValue (2)), true,
@@ -471,14 +449,12 @@ RedQueueDiscTestCase::RunRedTest (StringValue mode)
// test 12: Feng's Adaptive RED with default parameter settings and varying m_curMaxP
queue = CreateObject ();
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", mode), true,
- "Verify that we can actually set the attribute Mode");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MinTh", DoubleValue (minTh)), true,
"Verify that we can actually set the attribute MinTh");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxTh", DoubleValue (maxTh)), true,
"Verify that we can actually set the attribute MaxTh");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QueueLimit", UintegerValue (qSize)), true,
- "Verify that we can actually set the attribute QueueLimit");
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (mode, qSize))),
+ true, "Verify that we can actually set the attribute MaxSize");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QW", DoubleValue (0.002)), true,
"Verify that we can actually set the attribute QW");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("LInterm", DoubleValue (2)), true,
@@ -498,14 +474,12 @@ RedQueueDiscTestCase::RunRedTest (StringValue mode)
queue = CreateObject ();
minTh = 30 * modeSize;
maxTh = 90 * modeSize;
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("Mode", mode), true,
- "Verify that we can actually set the attribute Mode");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MinTh", DoubleValue (minTh)), true,
"Verify that we can actually set the attribute MinTh");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxTh", DoubleValue (maxTh)), true,
"Verify that we can actually set the attribute MaxTh");
- NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QueueLimit", UintegerValue (qSize)), true,
- "Verify that we can actually set the attribute QueueLimit");
+ NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("MaxSize", QueueSizeValue (QueueSize (mode, qSize))),
+ true, "Verify that we can actually set the attribute MaxSize");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("QW", DoubleValue (0.002)), true,
"Verify that we can actually set the attribute QW");
NS_TEST_EXPECT_MSG_EQ (queue->SetAttributeFailSafe ("LInterm", DoubleValue (2)), true,
@@ -535,8 +509,8 @@ RedQueueDiscTestCase::Enqueue (Ptr queue, uint32_t size, uint32_t
void
RedQueueDiscTestCase::DoRun (void)
{
- RunRedTest (StringValue ("QUEUE_DISC_MODE_PACKETS"));
- RunRedTest (StringValue ("QUEUE_DISC_MODE_BYTES"));
+ RunRedTest (QueueSizeUnit::PACKETS);
+ RunRedTest (QueueSizeUnit::BYTES);
Simulator::Destroy ();
}
diff --git a/src/traffic-control/test/tc-flow-control-test-suite.cc b/src/traffic-control/test/tc-flow-control-test-suite.cc
index f01e83aeb..b430c13c1 100644
--- a/src/traffic-control/test/tc-flow-control-test-suite.cc
+++ b/src/traffic-control/test/tc-flow-control-test-suite.cc
@@ -99,19 +99,12 @@ QueueDiscTestItem::Mark (void)
class TcFlowControlTestCase : public TestCase
{
public:
- /// Device queue operating mode
- enum TestType
- {
- PACKET_MODE,
- BYTE_MODE
- };
-
/**
* Constructor
*
* \param tt the test type
*/
- TcFlowControlTestCase (TestType tt);
+ TcFlowControlTestCase (QueueSizeUnit tt);
virtual ~TcFlowControlTestCase ();
private:
virtual void DoRun (void);
@@ -142,10 +135,10 @@ private:
* \param msg the message to print if a different number of packets are stored
*/
void CheckPacketsInQueueDisc (Ptr dev, uint16_t nPackets, const char* msg);
- TestType m_type; //!< the test type
+ QueueSizeUnit m_type; //!< the test type
};
-TcFlowControlTestCase::TcFlowControlTestCase (TestType tt)
+TcFlowControlTestCase::TcFlowControlTestCase (QueueSizeUnit tt)
: TestCase ("Test the operation of the flow control mechanism"),
m_type (tt)
{
@@ -201,15 +194,13 @@ TcFlowControlTestCase::DoRun (void)
Ptr > queue;
- if (m_type == PACKET_MODE)
+ if (m_type == QueueSizeUnit::PACKETS)
{
- queue = CreateObjectWithAttributes > ("Mode", EnumValue (QueueBase::QUEUE_MODE_PACKETS),
- "MaxPackets", UintegerValue (5));
+ queue = CreateObjectWithAttributes > ("MaxSize", StringValue ("5p"));
}
else
{
- queue = CreateObjectWithAttributes > ("Mode", EnumValue (QueueBase::QUEUE_MODE_BYTES),
- "MaxBytes", UintegerValue (5000));
+ queue = CreateObjectWithAttributes > ("MaxSize", StringValue ("5000B"));
}
// link the two nodes
@@ -232,7 +223,7 @@ TcFlowControlTestCase::DoRun (void)
Simulator::Schedule (Time (Seconds (0)), &TcFlowControlTestCase::SendPackets,
this, n.Get (0), 10);
- if (m_type == PACKET_MODE)
+ if (m_type == QueueSizeUnit::PACKETS)
{
/*
* When the device queue is in packet mode, all the packets enqueued in the
@@ -395,7 +386,7 @@ public:
TcFlowControlTestSuite ()
: TestSuite ("tc-flow-control", UNIT)
{
- AddTestCase (new TcFlowControlTestCase (TcFlowControlTestCase::PACKET_MODE), TestCase::QUICK);
- AddTestCase (new TcFlowControlTestCase (TcFlowControlTestCase::BYTE_MODE), TestCase::QUICK);
+ AddTestCase (new TcFlowControlTestCase (QueueSizeUnit::PACKETS), TestCase::QUICK);
+ AddTestCase (new TcFlowControlTestCase (QueueSizeUnit::BYTES), TestCase::QUICK);
}
} g_tcFlowControlTestSuite; ///< the test suite