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
 Caller graph was not generated because of its size.
virtual ~TestCase ()
 Destructor.
std::string GetName () const
TestCaseoperator= (const TestCase &)=delete

Private Member Functions

void BuildLsav4 ()
 Builds the LSAs for the topology.
void BuildLsav6 ()
 Builds the LSAs for the topology.
void CheckRoutesv4 (Ptr< Ipv4GlobalRouting > &globalroutingprotocol, std::vector< Ipv4Address > &dests, std::vector< Ipv4Address > &gws)
 function that checks the routing table entries for the expected output.
void CheckRoutesv6 (Ptr< Ipv6GlobalRouting > &globalroutingprotocol, std::vector< Ipv6Address > &dests, std::vector< Ipv6Address > &gws)
 function that checks the routing table entries for the expected output.
void IncrementCountv4 (Ptr< Ipv4Route > &route)
 Helper function that checks the output of the routing path and increments the corresponding route counter.
void IncrementCountv6 (Ptr< Ipv6Route > &route)
 Helper function that checks the output of the routing path and increments the corresponding route counter.

Private Attributes

std::vector< GlobalRoutingLSA< Ipv4Manager > * > m_lsasv4
 The LSAs for the topology.
std::vector< GlobalRoutingLSA< Ipv6Manager > * > m_lsasv6
 The LSAs for the topology.
NodeContainer nodes
 NodeContainer to hold the nodes in the topology.
uint32_t route1v4 = 0
 Counter to keep track of the number of times route1 is used for ipv4.
uint32_t route1v6 = 0
 Counter to keep track of the number of times route1 is used for ipv6.
uint32_t route2v4 = 0
 Counter to keep track of the number of times route2 is used for ipv4.
uint32_t route2v6 = 0
 Counter to keep track of the number of times route2 is used for ipv6.

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...
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 963 of file global-route-manager-impl-test-suite.cc.

Constructor & Destructor Documentation

◆ RandomEcmpTestCase()

RandomEcmpTestCase::RandomEcmpTestCase ( )

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

References ns3::TestCase::TestCase().

Here is the call graph for this function:

Member Function Documentation

◆ BuildLsav4()

void RandomEcmpTestCase::BuildLsav4 ( )
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 1161 of file global-route-manager-impl-test-suite.cc.

References ns3::GlobalRoutingLSA< T >::LSA_SPF_NOT_EXPLORED, m_lsasv4, nodes, ns3::GlobalRoutingLinkRecord< T >::PointToPoint, ns3::GlobalRoutingLSA< T >::RouterLSA, and ns3::GlobalRoutingLinkRecord< T >::StubNetwork.

Referenced by DoRun().

Here is the caller graph for this function:

◆ BuildLsav6()

void RandomEcmpTestCase::BuildLsav6 ( )
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 1307 of file global-route-manager-impl-test-suite.cc.

References ns3::GlobalRoutingLSA< T >::LSA_SPF_NOT_EXPLORED, m_lsasv6, nodes, ns3::GlobalRoutingLinkRecord< T >::PointToPoint, ns3::GlobalRoutingLSA< T >::RouterLSA, and ns3::GlobalRoutingLinkRecord< T >::StubNetwork.

Referenced by DoRun().

Here is the caller graph for this function:

◆ CheckRoutesv4()

void RandomEcmpTestCase::CheckRoutesv4 ( 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 1105 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:

◆ CheckRoutesv6()

void RandomEcmpTestCase::CheckRoutesv6 ( Ptr< Ipv6GlobalRouting > & globalroutingprotocol,
std::vector< Ipv6Address > & dests,
std::vector< Ipv6Address > & 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 1120 of file global-route-manager-impl-test-suite.cc.

References ns3::Ipv6RoutingTableEntry::GetDest(), ns3::Ipv6RoutingTableEntry::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

◆ 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 1033 of file global-route-manager-impl-test-suite.cc.

References ns3::NetDeviceContainer::Add(), ns3::Ipv6AddressHelper::Assign(), ns3::CreateObject(), ns3::SimpleNetDeviceHelper::Install(), nodes, ns3::Ipv6AddressHelper::SetBase(), ns3::Config::SetDefault(), and ns3::SimpleNetDeviceHelper::SetNetDevicePointToPointMode().

Here is the call graph for this function:

◆ IncrementCountv4()

void RandomEcmpTestCase::IncrementCountv4 ( 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 1135 of file global-route-manager-impl-test-suite.cc.

References route1v4, and route2v4.

Referenced by DoRun().

Here is the caller graph for this function:

◆ IncrementCountv6()

void RandomEcmpTestCase::IncrementCountv6 ( Ptr< Ipv6Route > & 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 1148 of file global-route-manager-impl-test-suite.cc.

References route1v6, and route2v6.

Referenced by DoRun().

Here is the caller graph for this function:

Member Data Documentation

◆ m_lsasv4

std::vector<GlobalRoutingLSA<Ipv4Manager>*> RandomEcmpTestCase::m_lsasv4
private

The LSAs for the topology.

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

Referenced by BuildLsav4(), and DoRun().

◆ m_lsasv6

std::vector<GlobalRoutingLSA<Ipv6Manager>*> RandomEcmpTestCase::m_lsasv6
private

The LSAs for the topology.

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

Referenced by BuildLsav6(), and DoRun().

◆ nodes

NodeContainer RandomEcmpTestCase::nodes
private

NodeContainer to hold the nodes in the topology.

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

Referenced by BuildLsav4(), BuildLsav6(), DoRun(), and DoSetup().

◆ route1v4

uint32_t RandomEcmpTestCase::route1v4 = 0
private

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

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

Referenced by DoRun(), and IncrementCountv4().

◆ route1v6

uint32_t RandomEcmpTestCase::route1v6 = 0
private

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

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

Referenced by DoRun(), and IncrementCountv6().

◆ route2v4

uint32_t RandomEcmpTestCase::route2v4 = 0
private

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

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

Referenced by DoRun(), and IncrementCountv4().

◆ route2v6

uint32_t RandomEcmpTestCase::route2v6 = 0
private

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

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

Referenced by DoRun(), and IncrementCountv6().


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