diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2021-09-03 17:23:55 +0200 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2021-09-04 01:15:30 +0200 |
commit | b06469a66c7ef64a19aa54430c45d8a62b8657b2 (patch) | |
tree | 5d4cc0e5b09e2f47fbecf3bf8c830961cb78f9f0 | |
parent | network: introduce KeepMaster= setting (diff) | |
download | systemd-b06469a66c7ef64a19aa54430c45d8a62b8657b2.tar.xz systemd-b06469a66c7ef64a19aa54430c45d8a62b8657b2.zip |
test-network: add tests for KeepMaster=
-rw-r--r-- | test/test-network/conf/23-keep-master.network | 21 | ||||
-rwxr-xr-x | test/test-network/systemd-networkd-tests.py | 51 |
2 files changed, 72 insertions, 0 deletions
diff --git a/test/test-network/conf/23-keep-master.network b/test/test-network/conf/23-keep-master.network new file mode 100644 index 0000000000..2d8371ccd0 --- /dev/null +++ b/test/test-network/conf/23-keep-master.network @@ -0,0 +1,21 @@ +[Match] +Name=dummy98 + +[Network] +LinkLocalAddressing=no +IPv6AcceptRA=no +KeepMaster=true +ActiveSlave=true + +[Bridge] +Cost=400 +HairPin = true +FastLeave = true +UnicastFlood = true +MulticastFlood = false +MulticastToUnicast = true +NeighborSuppression = true +Learning = false +Priority = 23 +UseBPDU = true +AllowPortToBeRoot=true diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py index 02f889ea5e..1754ebd3d6 100755 --- a/test/test-network/systemd-networkd-tests.py +++ b/test/test-network/systemd-networkd-tests.py @@ -3388,6 +3388,7 @@ class NetworkdBondTests(unittest.TestCase, Utilities): '12-dummy.netdev', '23-active-slave.network', '23-bond199.network', + '23-keep-master.network', '23-primary-slave.network', '25-bond-active-backup-slave.netdev', '25-bond.netdev', @@ -3403,6 +3404,23 @@ class NetworkdBondTests(unittest.TestCase, Utilities): remove_unit_from_networkd_path(self.units) stop_networkd(show_logs=True) + def test_bond_keep_master(self): + check_output('ip link add bond199 type bond mode active-backup') + check_output('ip link add dummy98 type dummy') + check_output('ip link set dummy98 master bond199') + + copy_unit_to_networkd_unit_path('23-keep-master.network') + start_networkd() + self.wait_online(['dummy98:enslaved']) + + output = check_output('ip -d link show bond199') + print(output) + self.assertRegex(output, 'active_slave dummy98') + + output = check_output('ip -d link show dummy98') + print(output) + self.assertRegex(output, 'master bond199') + def test_bond_active_slave(self): copy_unit_to_networkd_unit_path('23-active-slave.network', '23-bond199.network', '25-bond-active-backup-slave.netdev', '12-dummy.netdev') start_networkd() @@ -3479,6 +3497,7 @@ class NetworkdBridgeTests(unittest.TestCase, Utilities): '12-dummy.netdev', '21-vlan.netdev', '21-vlan.network', + '23-keep-master.network', '26-bridge.netdev', '26-bridge-configure-without-carrier.network', '26-bridge-issue-20373.netdev', @@ -3562,6 +3581,38 @@ class NetworkdBridgeTests(unittest.TestCase, Utilities): self.assertRegex(output, 'dev bridge99 port bridge99 grp ff02:aaaa:fee5::1:4 temp *vid 4066') self.assertRegex(output, 'dev bridge99 port bridge99 grp 224.0.1.2 temp *vid 4067') + def test_bridge_keep_master(self): + check_output('ip link add bridge99 type bridge') + check_output('ip link set bridge99 up') + check_output('ip link add dummy98 type dummy') + check_output('ip link set dummy98 master bridge99') + + copy_unit_to_networkd_unit_path('23-keep-master.network') + start_networkd() + self.wait_online(['dummy98:enslaved']) + + output = check_output('ip -d link show dummy98') + print(output) + self.assertRegex(output, 'master bridge99') + self.assertRegex(output, 'bridge') + + output = check_output('bridge -d link show dummy98') + print(output) + self.assertEqual(read_bridge_port_attr('bridge99', 'dummy98', 'path_cost'), '400') + self.assertEqual(read_bridge_port_attr('bridge99', 'dummy98', 'hairpin_mode'), '1') + self.assertEqual(read_bridge_port_attr('bridge99', 'dummy98', 'multicast_fast_leave'), '1') + self.assertEqual(read_bridge_port_attr('bridge99', 'dummy98', 'unicast_flood'), '1') + self.assertEqual(read_bridge_port_attr('bridge99', 'dummy98', 'multicast_flood'), '0') + # CONFIG_BRIDGE_IGMP_SNOOPING=y + if (os.path.exists('/sys/devices/virtual/net/bridge00/lower_dummy98/brport/multicast_to_unicast')): + self.assertEqual(read_bridge_port_attr('bridge99', 'dummy98', 'multicast_to_unicast'), '1') + if (os.path.exists('/sys/devices/virtual/net/bridge99/lower_dummy98/brport/neigh_suppress')): + self.assertEqual(read_bridge_port_attr('bridge99', 'dummy98', 'neigh_suppress'), '1') + self.assertEqual(read_bridge_port_attr('bridge99', 'dummy98', 'learning'), '0') + self.assertEqual(read_bridge_port_attr('bridge99', 'dummy98', 'priority'), '23') + self.assertEqual(read_bridge_port_attr('bridge99', 'dummy98', 'bpdu_guard'), '1') + self.assertEqual(read_bridge_port_attr('bridge99', 'dummy98', 'root_block'), '1') + def test_bridge_property(self): copy_unit_to_networkd_unit_path('11-dummy.netdev', '12-dummy.netdev', '26-bridge.netdev', '26-bridge-slave-interface-1.network', '26-bridge-slave-interface-2.network', |