From e5dc563406d8cf0ac015fa5e057053ed615f84d5 Mon Sep 17 00:00:00 2001 From: Tommaso Pecorella Date: Fri, 11 Apr 2025 22:07:53 +0200 Subject: [PATCH] internet: (fixes #1210) Clarify routing decisions in ipv4-global-routing test --- .../test/ipv4-global-routing-test-suite.cc | 104 +++++++----------- 1 file changed, 40 insertions(+), 64 deletions(-) diff --git a/src/internet/test/ipv4-global-routing-test-suite.cc b/src/internet/test/ipv4-global-routing-test-suite.cc index ecc00d3b8..27f09ba54 100644 --- a/src/internet/test/ipv4-global-routing-test-suite.cc +++ b/src/internet/test/ipv4-global-routing-test-suite.cc @@ -875,8 +875,8 @@ Ipv4DynamicGlobalRoutingTestCase::Ipv4DynamicGlobalRoutingTestCase() : TestCase("Dynamic global routing example"), m_count(0) { - m_firstInterface.resize(16); - m_secondInterface.resize(16); + m_firstInterface.resize(16, 0); + m_secondInterface.resize(16, 0); m_dataRate = DataRate("2kbps"); m_packetSize = 50; } @@ -1071,69 +1071,45 @@ Ipv4DynamicGlobalRoutingTestCase::DoRun() Simulator::Run(); NS_TEST_ASSERT_MSG_EQ(m_count, 70, "Dynamic global routing did not deliver all packets"); - // Test that for node n6, the interface facing n5 receives packets at + // Test that for node n6, the interface facing n1 receives packets at // times (1-2), (4-6), (8-10), (11-12), (14-16) and the interface - // facing n1 receives packets at times (2-4), (6-8), (12-13) - NS_TEST_ASSERT_MSG_EQ(m_firstInterface[1], - 5, - "Dynamic global routing did not deliver all packets " - << int(m_firstInterface[1])); - NS_TEST_ASSERT_MSG_EQ(m_secondInterface[2], - 5, - "Dynamic global routing did not deliver all packets " - << int(m_secondInterface[2])); - NS_TEST_ASSERT_MSG_EQ(m_secondInterface[3], - 5, - "Dynamic global routing did not deliver all packets " - << int(m_secondInterface[3])); - NS_TEST_ASSERT_MSG_EQ(m_firstInterface[4], - 5, - "Dynamic global routing did not deliver all packets " - << int(m_firstInterface[4])); - NS_TEST_ASSERT_MSG_EQ(m_firstInterface[5], - 5, - "Dynamic global routing did not deliver all packets " - << int(m_firstInterface[5])); - NS_TEST_ASSERT_MSG_EQ(m_secondInterface[6], - 5, - "Dynamic global routing did not deliver all packets " - << int(m_secondInterface[6])); - NS_TEST_ASSERT_MSG_EQ(m_secondInterface[7], - 5, - "Dynamic global routing did not deliver all packets " - << int(m_secondInterface[7])); - NS_TEST_ASSERT_MSG_EQ(m_firstInterface[8], - 5, - "Dynamic global routing did not deliver all packets " - << int(m_firstInterface[8])); - NS_TEST_ASSERT_MSG_EQ(m_firstInterface[9], - 5, - "Dynamic global routing did not deliver all packets " - << int(m_firstInterface[9])); - NS_TEST_ASSERT_MSG_EQ(m_firstInterface[10], - 0, - "Dynamic global routing did not deliver all packets " - << int(m_firstInterface[10])); - NS_TEST_ASSERT_MSG_EQ(m_firstInterface[11], - 5, - "Dynamic global routing did not deliver all packets " - << int(m_firstInterface[11])); - NS_TEST_ASSERT_MSG_EQ(m_secondInterface[12], - 5, - "Dynamic global routing did not deliver all packets " - << int(m_secondInterface[12])); - NS_TEST_ASSERT_MSG_EQ(m_secondInterface[13], - 5, - "Dynamic global routing did not deliver all packets " - << int(m_secondInterface[13])); - NS_TEST_ASSERT_MSG_EQ(m_firstInterface[14], - 5, - "Dynamic global routing did not deliver all packets " - << int(m_firstInterface[14])); - NS_TEST_ASSERT_MSG_EQ(m_firstInterface[15], - 5, - "Dynamic global routing did not deliver all packets " - << int(m_firstInterface[15])); + // facing n5 receives packets at times (2-4), (6-8), (12-13) + + // Note: there are two sending sockets, both on n1. + // The first socket sends packets at time (1-10), the second at time (11, 16). + // The first socket sends packets to n6, targeting the address facing n5. + // The second socket sends packets to n6, targeting the address facing n1. + // This actually doesn't matter, as n6 will accept packets sent to the "wrong" address. + // + // The shortest path netween n1 and n6 is the direct one, but the topology changes during the + // simulation: + // - (2-4): removal from n1 of the interface toward n6 + // - (6-8): removal from n6 of the interface toward n1 + // - (12-14): removal from n1 of the interface toward n6 + // When the link is broken, packets are rerouted though the longest (and only) path, reaching + // n6 though n5. + + std::vector firstInterfaceTest{0, 5, 0, 0, 5, 5, 0, 0, 5, 5, 0, 5, 0, 0, 5, 5}; + std::vector secondInterfaceTest{0, 0, 5, 5, 0, 0, 5, 5, 0, 0, 0, 0, 5, 5, 0, 0}; + + for (uint32_t index = 0; index < firstInterfaceTest.size(); index++) + { + NS_TEST_ASSERT_MSG_EQ(firstInterfaceTest[index], + m_firstInterface[index], + "Dynamic global routing did deliver the wrong number of packets " + "to the first interface at time " + << index); + } + + for (uint32_t index = 0; index < secondInterfaceTest.size(); index++) + { + NS_TEST_ASSERT_MSG_EQ(secondInterfaceTest[index], + m_secondInterface[index], + "Dynamic global routing did deliver the wrong number of packets " + "to the second interface at time " + << index); + } + Simulator::Destroy(); }