A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
RandomEcmpTestCase Class Reference

The purpose of this test is to check if Equal Cost MultiPath (ECMP) Routes are being built and used correctly. More...

+ Inheritance diagram for RandomEcmpTestCase:
+ Collaboration diagram for RandomEcmpTestCase:

Public Member Functions

 RandomEcmpTestCase ()
 
void DoRun () override
 Implementation to actually run this TestCase.
 
void DoSetup () override
 Implementation to do any local setup required for this TestCase.
 
- Public Member Functions inherited from ns3::TestCase
 TestCase (const TestCase &)=delete
 
virtual ~TestCase ()
 Destructor.
 
std::string GetName () const
 
TestCaseoperator= (const TestCase &)=delete
 

Private Member Functions

void BuildLsa ()
 Builds the LSAs for the topology.
 
void CheckRoutes (Ptr< Ipv4GlobalRouting > &globalroutingprotocol, std::vector< Ipv4Address > &dests, std::vector< Ipv4Address > &gws)
 function that checks the routing table entries for the expected output.
 
void IncrementCount (Ptr< Ipv4Route > &route)
 Helper function that checks the output of the routing path and increments the corresponding route counter.
 

Private Attributes

std::vector< GlobalRoutingLSA * > m_lsas
 The LSAs for the topology.
 
NodeContainer nodes
 NodeContainer to hold the nodes in the topology.
 
uint32_t route1 = 0
 Counter to keep track of the number of times route1 is used.
 
uint32_t route2 = 0
 Counter to keep track of the number of times route2 is used.
 

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.
 
TestCaseGetParent () 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.
 

Detailed Description

The purpose of this test is to check if Equal Cost MultiPath (ECMP) Routes are being built and used correctly.

Definition at line 558 of file global-route-manager-impl-test-suite.cc.

Constructor & Destructor Documentation

◆ RandomEcmpTestCase()

RandomEcmpTestCase::RandomEcmpTestCase ( )

Definition at line 595 of file global-route-manager-impl-test-suite.cc.

Member Function Documentation

◆ BuildLsa()

void RandomEcmpTestCase::BuildLsa ( )
private

Builds the LSAs for the topology.

These LSAs are manually created and inserted into the GlobalRouteManagerLSDB.Each node exports a router LSA.

Definition at line 687 of file global-route-manager-impl-test-suite.cc.

References ns3::NodeContainer::Get(), ns3::GlobalRoutingLSA::LSA_SPF_NOT_EXPLORED, m_lsas, nodes, ns3::GlobalRoutingLinkRecord::PointToPoint, ns3::GlobalRoutingLSA::RouterLSA, and ns3::GlobalRoutingLinkRecord::StubNetwork.

Referenced by DoRun().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CheckRoutes()

void RandomEcmpTestCase::CheckRoutes ( Ptr< Ipv4GlobalRouting > & globalroutingprotocol,
std::vector< Ipv4Address > & dests,
std::vector< Ipv4Address > & gws )
private

function that checks the routing table entries for the expected output.

Parameters
globalroutingprotocolThe routing protocol for the node whose routing table is to be checked.
destsThe expected destinations.
gwsThe expected gateways.

Definition at line 659 of file global-route-manager-impl-test-suite.cc.

References ns3::Ipv4RoutingTableEntry::GetDest(), ns3::Ipv4RoutingTableEntry::GetGateway(), NS_LOG_DEBUG, and NS_TEST_ASSERT_MSG_EQ.

Referenced by DoRun().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DoRun()

void RandomEcmpTestCase::DoRun ( )
overridevirtual

Implementation to actually run this TestCase.

Subclasses should override this method to conduct their tests.

Implements ns3::TestCase.

Definition at line 817 of file global-route-manager-impl-test-suite.cc.

References BuildLsa(), CheckRoutes(), ns3::Create(), ns3::Simulator::Destroy(), ns3::NodeContainer::Get(), ns3::Object::GetObject(), ns3::RngSeedManager::GetRun(), ns3::RngSeedManager::GetSeed(), IncrementCount(), m_lsas, nodes, NS_TEST_ASSERT_MSG_EQ, NS_TEST_ASSERT_MSG_GT_OR_EQ, NS_TEST_ASSERT_MSG_NE, route1, route2, ns3::Simulator::Run(), ns3::Seconds(), ns3::Ipv4Header::SetDestination(), ns3::RngSeedManager::SetRun(), ns3::RngSeedManager::SetSeed(), ns3::Ipv4Header::SetSource(), and ns3::Simulator::Stop().

+ Here is the call graph for this function:

◆ DoSetup()

void RandomEcmpTestCase::DoSetup ( )
overridevirtual

Implementation to do any local setup required for this TestCase.

Subclasses should override this method to perform any costly per-test setup before DoRun is invoked.

Reimplemented from ns3::TestCase.

Definition at line 601 of file global-route-manager-impl-test-suite.cc.

References ns3::NetDeviceContainer::Add(), ns3::NodeContainer::Create(), ns3::CreateObject(), ns3::NodeContainer::Get(), ns3::SimpleNetDeviceHelper::Install(), nodes, ns3::Config::SetDefault(), and ns3::SimpleNetDeviceHelper::SetNetDevicePointToPointMode().

+ Here is the call graph for this function:

◆ IncrementCount()

void RandomEcmpTestCase::IncrementCount ( Ptr< Ipv4Route > & route)
private

Helper function that checks the output of the routing path and increments the corresponding route counter.

Parameters
routeThe routing path to check

Definition at line 674 of file global-route-manager-impl-test-suite.cc.

References route1, and route2.

Referenced by DoRun().

+ Here is the caller graph for this function:

Member Data Documentation

◆ m_lsas

std::vector<GlobalRoutingLSA*> RandomEcmpTestCase::m_lsas
private

The LSAs for the topology.

Definition at line 592 of file global-route-manager-impl-test-suite.cc.

Referenced by BuildLsa(), and DoRun().

◆ nodes

NodeContainer RandomEcmpTestCase::nodes
private

NodeContainer to hold the nodes in the topology.

Definition at line 591 of file global-route-manager-impl-test-suite.cc.

Referenced by BuildLsa(), DoRun(), and DoSetup().

◆ route1

uint32_t RandomEcmpTestCase::route1 = 0
private

Counter to keep track of the number of times route1 is used.

Definition at line 589 of file global-route-manager-impl-test-suite.cc.

Referenced by DoRun(), and IncrementCount().

◆ route2

uint32_t RandomEcmpTestCase::route2 = 0
private

Counter to keep track of the number of times route2 is used.

Definition at line 590 of file global-route-manager-impl-test-suite.cc.

Referenced by DoRun(), and IncrementCount().


The documentation for this class was generated from the following file: