The purpose of this test is to check if Equal Cost MultiPath (ECMP) Routes are being built and used correctly. More...
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 |
| TestCase & | operator= (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. | |
| 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. | |
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.
| RandomEcmpTestCase::RandomEcmpTestCase | ( | ) |
Definition at line 1027 of file global-route-manager-impl-test-suite.cc.
References ns3::TestCase::TestCase().
|
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().
|
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().
|
private |
function that checks the routing table entries for the expected output.
| globalroutingprotocol | The routing protocol for the node whose routing table is to be checked. |
| dests | The expected destinations. |
| gws | The 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().
|
private |
function that checks the routing table entries for the expected output.
| globalroutingprotocol | The routing protocol for the node whose routing table is to be checked. |
| dests | The expected destinations. |
| gws | The 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().
|
overridevirtual |
Implementation to actually run this TestCase.
Subclasses should override this method to conduct their tests.
Implements ns3::TestCase.
Definition at line 1465 of file global-route-manager-impl-test-suite.cc.
References BuildLsav4(), BuildLsav6(), CheckRoutesv4(), CheckRoutesv6(), ns3::Create(), ns3::Simulator::Destroy(), ns3::RngSeedManager::GetRun(), ns3::RngSeedManager::GetSeed(), IncrementCountv4(), IncrementCountv6(), m_lsasv4, m_lsasv6, nodes, NS_TEST_ASSERT_MSG_EQ, NS_TEST_ASSERT_MSG_GT_OR_EQ, NS_TEST_ASSERT_MSG_NE, route1v4, route1v6, route2v4, route2v6, ns3::Simulator::Run(), ns3::Seconds(), ns3::Ipv4Header::SetDestination(), ns3::Ipv6Header::SetDestination(), ns3::RngSeedManager::SetRun(), ns3::RngSeedManager::SetSeed(), ns3::Ipv4Header::SetSource(), ns3::Ipv6Header::SetSource(), and ns3::Simulator::Stop().
|
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().
Helper function that checks the output of the routing path and increments the corresponding route counter.
| route | The routing path to check |
Definition at line 1135 of file global-route-manager-impl-test-suite.cc.
References route1v4, and route2v4.
Referenced by DoRun().
Helper function that checks the output of the routing path and increments the corresponding route counter.
| route | The routing path to check |
Definition at line 1148 of file global-route-manager-impl-test-suite.cc.
References route1v6, and route2v6.
Referenced by DoRun().
|
private |
The LSAs for the topology.
Definition at line 1023 of file global-route-manager-impl-test-suite.cc.
Referenced by BuildLsav4(), and DoRun().
|
private |
The LSAs for the topology.
Definition at line 1024 of file global-route-manager-impl-test-suite.cc.
Referenced by BuildLsav6(), and DoRun().
|
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().
|
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().
|
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().
|
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().
|
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().