From: Yu Watanabe Date: Thu, 13 May 2021 02:11:48 +0000 (+0900) Subject: test-network: add a test case for nexthop Group= setting X-Git-Tag: v249-rc1~176^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F19594%2Fhead;p=thirdparty%2Fsystemd.git test-network: add a test case for nexthop Group= setting --- diff --git a/test/test-network/conf/25-nexthop-dummy.network b/test/test-network/conf/25-nexthop-dummy.network new file mode 100644 index 00000000000..e494aca8e34 --- /dev/null +++ b/test/test-network/conf/25-nexthop-dummy.network @@ -0,0 +1,13 @@ +[Match] +Name=dummy98 + +[Network] +Address=192.168.20.20/24 + +[NextHop] +Id=20 +Gateway=192.168.20.1 + +[NextHop] +Id=21 +Group=1:3 20:1 diff --git a/test/test-network/conf/25-nexthop.network b/test/test-network/conf/25-nexthop.network index 8b3e4b65c56..6f54e3f0d50 100644 --- a/test/test-network/conf/25-nexthop.network +++ b/test/test-network/conf/25-nexthop.network @@ -72,3 +72,7 @@ Destination=10.10.10.13 [Route] NextHop=7 Destination=2001:1234:5:8f62::2 + +[Route] +NextHop=21 +Destination=10.10.10.14 diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py index 23b8abfbaaf..56a22b0a448 100755 --- a/test/test-network/systemd-networkd-tests.py +++ b/test/test-network/systemd-networkd-tests.py @@ -1819,6 +1819,7 @@ class NetworkdNetworkTests(unittest.TestCase, Utilities): '25-neighbor-ipv6.network', '25-neighbor-ip-dummy.network', '25-neighbor-ip.network', + '25-nexthop-dummy.network', '25-nexthop-nothing.network', '25-nexthop.network', '25-qdisc-cake.network', @@ -2844,48 +2845,68 @@ class NetworkdNetworkTests(unittest.TestCase, Utilities): @expectedFailureIfNexthopIsNotAvailable() def test_nexthop(self): - copy_unit_to_networkd_unit_path('25-nexthop.network', '25-veth.netdev', '25-veth-peer.network') - start_networkd() - self.wait_online(['veth99:routable', 'veth-peer:routable']) + def check_nexthop(self): + self.wait_online(['veth99:routable', 'veth-peer:routable', 'dummy98:routable']) - output = check_output('ip nexthop list dev veth99') - print(output) - self.assertIn('id 1 via 192.168.5.1 dev veth99', output) - self.assertIn('id 2 via 2001:1234:5:8f63::2 dev veth99', output) - self.assertIn('id 3 dev veth99', output) - self.assertIn('id 4 dev veth99', output) - self.assertRegex(output, 'id 5 via 192.168.10.1 dev veth99 .*onlink') - self.assertRegex(output, r'id [0-9]* via 192.168.5.2 dev veth99') + output = check_output('ip nexthop list dev veth99') + print(output) + self.assertIn('id 1 via 192.168.5.1 dev veth99', output) + self.assertIn('id 2 via 2001:1234:5:8f63::2 dev veth99', output) + self.assertIn('id 3 dev veth99', output) + self.assertIn('id 4 dev veth99', output) + self.assertRegex(output, 'id 5 via 192.168.10.1 dev veth99 .*onlink') + self.assertRegex(output, r'id [0-9]* via 192.168.5.2 dev veth99') + + output = check_output('ip nexthop list dev dummy98') + print(output) + self.assertIn('id 20 via 192.168.20.1 dev dummy98', output) - # kernel manages blackhole nexthops on lo - output = check_output('ip nexthop list dev lo') - print(output) - self.assertIn('id 6 blackhole', output) - self.assertIn('id 7 blackhole', output) + # kernel manages blackhole nexthops on lo + output = check_output('ip nexthop list dev lo') + print(output) + self.assertIn('id 6 blackhole', output) + self.assertIn('id 7 blackhole', output) - output = check_output('ip route show dev veth99 10.10.10.10') - print(output) - self.assertEqual('10.10.10.10 nhid 1 via 192.168.5.1 proto static', output) + # group nexthops are shown with -0 option + output = check_output('ip -0 nexthop list id 21') + print(output) + self.assertRegex(output, r'id 21 group (1,3/20|20/1,3)') - output = check_output('ip route show dev veth99 10.10.10.11') - print(output) - self.assertEqual('10.10.10.11 nhid 2 via inet6 2001:1234:5:8f63::2 proto static', output) + output = check_output('ip route show dev veth99 10.10.10.10') + print(output) + self.assertEqual('10.10.10.10 nhid 1 via 192.168.5.1 proto static', output) - output = check_output('ip route show dev veth99 10.10.10.12') - print(output) - self.assertEqual('10.10.10.12 nhid 5 via 192.168.10.1 proto static onlink', output) + output = check_output('ip route show dev veth99 10.10.10.11') + print(output) + self.assertEqual('10.10.10.11 nhid 2 via inet6 2001:1234:5:8f63::2 proto static', output) - output = check_output('ip -6 route show dev veth99 2001:1234:5:8f62::1') - print(output) - self.assertEqual('2001:1234:5:8f62::1 nhid 2 via 2001:1234:5:8f63::2 proto static metric 1024 pref medium', output) + output = check_output('ip route show dev veth99 10.10.10.12') + print(output) + self.assertEqual('10.10.10.12 nhid 5 via 192.168.10.1 proto static onlink', output) - output = check_output('ip route show 10.10.10.13') - print(output) - self.assertEqual('blackhole 10.10.10.13 nhid 6 dev lo proto static', output) + output = check_output('ip -6 route show dev veth99 2001:1234:5:8f62::1') + print(output) + self.assertEqual('2001:1234:5:8f62::1 nhid 2 via 2001:1234:5:8f63::2 proto static metric 1024 pref medium', output) - output = check_output('ip -6 route show 2001:1234:5:8f62::2') - print(output) - self.assertEqual('blackhole 2001:1234:5:8f62::2 nhid 7 dev lo proto static metric 1024 pref medium', output) + output = check_output('ip route show 10.10.10.13') + print(output) + self.assertEqual('blackhole 10.10.10.13 nhid 6 dev lo proto static', output) + + output = check_output('ip -6 route show 2001:1234:5:8f62::2') + print(output) + self.assertEqual('blackhole 2001:1234:5:8f62::2 nhid 7 dev lo proto static metric 1024 pref medium', output) + + output = check_output('ip route show 10.10.10.14') + print(output) + self.assertIn('10.10.10.14 nhid 21 proto static', output) + self.assertIn('nexthop via 192.168.20.1 dev dummy98 weight 1', output) + self.assertIn('nexthop via 192.168.5.1 dev veth99 weight 3', output) + + copy_unit_to_networkd_unit_path('25-nexthop.network', '25-veth.netdev', '25-veth-peer.network', + '12-dummy.netdev', '25-nexthop-dummy.network') + start_networkd() + + check_nexthop(self) remove_unit_from_networkd_path(['25-nexthop.network']) copy_unit_to_networkd_unit_path('25-nexthop-nothing.network') @@ -2904,11 +2925,13 @@ class NetworkdNetworkTests(unittest.TestCase, Utilities): remove_unit_from_networkd_path(['25-nexthop-nothing.network']) copy_unit_to_networkd_unit_path('25-nexthop.network') + rc = call(*networkctl_cmd, 'reconfigure', 'dummy98', env=env) + self.assertEqual(rc, 0) rc = call(*networkctl_cmd, 'reload', env=env) self.assertEqual(rc, 0) time.sleep(1) - self.wait_online(['veth99:routable', 'veth-peer:routable']) + check_nexthop(self) rc = call('ip link del veth99') self.assertEqual(rc, 0)