This class tests ECN marking. More...
Public Member Functions | |
FqCobaltQueueDiscEcnMarking () | |
~FqCobaltQueueDiscEcnMarking () override | |
Public Member Functions inherited from ns3::TestCase | |
TestCase (const TestCase &)=delete | |
virtual | ~TestCase () |
Destructor. | |
std::string | GetName () const |
TestCase & | operator= (const TestCase &)=delete |
Private Member Functions | |
void | AddPacket (Ptr< FqCobaltQueueDisc > queue, Ipv4Header hdr, uint32_t nPkt, uint32_t nPktEnqueued, uint32_t nQueueFlows) |
Enqueue the given number of packets. | |
void | Dequeue (Ptr< FqCobaltQueueDisc > queue, uint32_t nPkt) |
Dequeue the given number of packets. | |
void | DequeueWithDelay (Ptr< FqCobaltQueueDisc > queue, double delay, uint32_t nPkt) |
Dequeue the given number of packets at different times. | |
void | DoRun () override |
Implementation to actually run this TestCase. | |
void | DropNextTracer (int64_t oldVal, int64_t newVal) |
Tracer for the DropNext attribute. | |
Private Attributes | |
uint32_t | m_dropNextCount |
count the number of times m_dropNext is recalculated | |
Additional Inherited Members | |
Public Types inherited from ns3::TestCase | |
enum class | Duration { QUICK = 1 , EXTENSIVE = 2 , TAKES_FOREVER = 3 } |
How long the test takes to execute. More... | |
Static Public Attributes inherited from ns3::TestCase | |
static constexpr auto | QUICK = Duration::QUICK |
Deprecated test duration simple enums. | |
static constexpr auto | EXTENSIVE = Duration::EXTENSIVE |
static constexpr auto | TAKES_FOREVER = Duration::TAKES_FOREVER |
Protected Member Functions inherited from ns3::TestCase | |
TestCase (std::string name) | |
Constructor. | |
void | AddTestCase (TestCase *testCase, Duration duration=Duration::QUICK) |
Add an individual child TestCase to this test suite. | |
TestCase * | GetParent () const |
Get the parent of this TestCase. | |
bool | IsStatusFailure () const |
Check if any tests failed. | |
bool | IsStatusSuccess () const |
Check if all tests passed. | |
void | SetDataDir (std::string directory) |
Set the data directory where reference trace files can be found. | |
void | ReportTestFailure (std::string cond, std::string actual, std::string limit, std::string message, std::string file, int32_t line) |
Log the failure of this TestCase. | |
bool | MustAssertOnFailure () const |
Check if this run should assert on failure. | |
bool | MustContinueOnFailure () const |
Check if this run should continue on failure. | |
std::string | CreateDataDirFilename (std::string filename) |
Construct the full path to a file in the data directory. | |
std::string | CreateTempDirFilename (std::string filename) |
Construct the full path to a file in a temporary directory. | |
This class tests ECN marking.
The test is divided into 3 sub test cases. 1) CE threshold disabled This test enqueues 100 packets in the beginning of the test and dequeues 60 (some packets are dropped too) packets with the delay of 110ms. This test checks that ECT0 packets are marked and are marked appropriately and NotECT packets are dropped.
2) CE threshold enabled. This test enqueues 100 packets in the beginning of the test and dequeues 60 packets with delay of 1ms. This test checks that the ECT0 packets are marked appropriately at CE threshold.
3) CE threshold enabled with higher queue delay. This test is similar to the 2nd sub test cases just with higher queue delay and aims to test that the packets are not marked twice Any future classifier options (e.g. SetAssociativehash) should be disabled to prevent a hash collision on this test case.
Definition at line 746 of file fq-cobalt-queue-disc-test-suite.cc.
FqCobaltQueueDiscEcnMarking::FqCobaltQueueDiscEcnMarking | ( | ) |
Definition at line 789 of file fq-cobalt-queue-disc-test-suite.cc.
References m_dropNextCount.
|
override |
Definition at line 795 of file fq-cobalt-queue-disc-test-suite.cc.
|
private |
Enqueue the given number of packets.
queue | The queue disc. |
hdr | The IPv4 header. |
nPkt | The number of packets. |
nPktEnqueued | The expected number of enqueued packets. |
nQueueFlows | The expected number of flow queues. |
Definition at line 800 of file fq-cobalt-queue-disc-test-suite.cc.
References ns3::Create(), and NS_TEST_EXPECT_MSG_EQ.
Referenced by DoRun().
|
private |
Dequeue the given number of packets.
queue | The queue disc. |
nPkt | The number of packets. |
Definition at line 822 of file fq-cobalt-queue-disc-test-suite.cc.
References DropNextTracer(), and ns3::MakeCallback().
Referenced by DequeueWithDelay().
|
private |
Dequeue the given number of packets at different times.
queue | The queue disc. |
delay | The time between two consecutive dequeue operations. |
nPkt | The number of packets. |
Definition at line 842 of file fq-cobalt-queue-disc-test-suite.cc.
References Dequeue(), ns3::Simulator::Schedule(), and ns3::Seconds().
Referenced by DoRun().
|
overrideprivatevirtual |
Implementation to actually run this TestCase.
Subclasses should override this method to conduct their tests.
Implements ns3::TestCase.
Definition at line 863 of file fq-cobalt-queue-disc-test-suite.cc.
References AddPacket(), ns3::CobaltQueueDisc::CE_THRESHOLD_EXCEEDED_MARK, ns3::CreateObjectWithAttributes(), DequeueWithDelay(), ns3::Simulator::Destroy(), ns3::Ipv4Header::ECN_ECT0, ns3::Ipv4Header::ECN_NotECT, ns3::CobaltQueueDisc::FORCED_MARK, m_dropNextCount, ns3::Time::Max(), ns3::MilliSeconds(), NS_TEST_EXPECT_MSG_EQ, ns3::Simulator::Run(), ns3::Simulator::Schedule(), ns3::Seconds(), ns3::Ipv4Header::SetDestination(), ns3::Ipv4Header::SetEcn(), ns3::Ipv4Header::SetPayloadSize(), ns3::Ipv4Header::SetProtocol(), ns3::Ipv4Header::SetSource(), ns3::Simulator::Stop(), and ns3::CobaltQueueDisc::TARGET_EXCEEDED_DROP.
|
private |
Tracer for the DropNext attribute.
oldVal | Old value. |
newVal | New value. |
Definition at line 857 of file fq-cobalt-queue-disc-test-suite.cc.
References m_dropNextCount.
Referenced by Dequeue().
|
private |
count the number of times m_dropNext is recalculated
Definition at line 786 of file fq-cobalt-queue-disc-test-suite.cc.
Referenced by FqCobaltQueueDiscEcnMarking(), DoRun(), and DropNextTracer().