X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=test%2Ftest-network%2Fsystemd-networkd-tests.py;h=3e57b335ceeef1b25bddb1da68447c9f50cdfb5a;hb=05d418fed94ce94ff21f05ea85ad1a4922fdcbcf;hp=6660ce06afb0495ea409bea33741c82cb845c802;hpb=4b6bc95c013ce43a92209d46fe3b045ccba4a224;p=thirdparty%2Fsystemd.git diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py index 6660ce06afb..3e57b335cee 100755 --- a/test/test-network/systemd-networkd-tests.py +++ b/test/test-network/systemd-networkd-tests.py @@ -233,6 +233,18 @@ def expectedFailureIfETSIsNotAvailable(): return f +def expectedFailureIfFQPIEIsNotAvailable(): + def f(func): + call('ip link add dummy98 type dummy', stderr=subprocess.DEVNULL) + rc = call('tc qdisc add dev dummy98 parent root fq_pie', stderr=subprocess.DEVNULL) + call('ip link del dummy98', stderr=subprocess.DEVNULL) + if rc == 0: + return func + else: + return unittest.expectedFailure(func) + + return f + def setUpModule(): global running_units @@ -732,6 +744,7 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities): links = [ '6rdtun99', + 'bareudp99', 'bond99', 'bridge99', 'dropin-test', @@ -785,6 +798,7 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities): 'vtitun98', 'vtitun99', 'vxcan99', + 'vxlan98', 'vxlan99', 'wg97', 'wg98', @@ -805,6 +819,7 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities): '21-vlan.netdev', '21-vlan.network', '25-6rd-tunnel.netdev', + '25-bareudp.netdev', '25-bond.netdev', '25-bond-balanced-tlb.netdev', '25-bridge.netdev', @@ -870,6 +885,7 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities): '25-vti-tunnel-remote-any.netdev', '25-vti-tunnel.netdev', '25-vxcan.netdev', + '25-vxlan-independent.netdev', '25-vxlan.netdev', '25-wireguard-23-peers.netdev', '25-wireguard-23-peers.network', @@ -950,6 +966,18 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities): self.wait_operstate('bridge99', '(off|no-carrier)', setup_state='configuring') self.wait_operstate('test1', 'degraded') + @expectedFailureIfModuleIsNotAvailable('bareudp') + def test_bareudp(self): + copy_unit_to_networkd_unit_path('25-bareudp.netdev', 'netdev-link-local-addressing-yes.network') + start_networkd() + + self.wait_online(['bareudp99:degraded']) + + output = check_output('ip -d link show bareudp99') + print(output) + self.assertRegex(output, 'dstport 1000 ') + self.assertRegex(output, 'ethertype ip ') + def test_bridge(self): copy_unit_to_networkd_unit_path('25-bridge.netdev', '25-bridge-configure-without-carrier.network') start_networkd() @@ -1516,10 +1544,11 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities): def test_vxlan(self): copy_unit_to_networkd_unit_path('25-vxlan.netdev', 'vxlan.network', + '25-vxlan-independent.netdev', 'netdev-link-local-addressing-yes.network', '11-dummy.netdev', 'vxlan-test1.network') start_networkd() - self.wait_online(['test1:degraded', 'vxlan99:degraded']) + self.wait_online(['test1:degraded', 'vxlan99:degraded', 'vxlan98:degraded']) output = check_output('ip -d link show vxlan99') print(output) @@ -1546,6 +1575,9 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities): self.assertRegex(output, 'Destination Port: 5555') self.assertRegex(output, 'Underlying Device: test1') + output = check_output('ip -d link show vxlan98') + print(output) + def test_macsec(self): copy_unit_to_networkd_unit_path('25-macsec.netdev', '25-macsec.network', '25-macsec.key', 'macsec.network', '12-dummy.netdev') @@ -1714,6 +1746,7 @@ class NetworkdNetworkTests(unittest.TestCase, Utilities): '25-qdisc-clsact-and-htb.network', '25-qdisc-drr.network', '25-qdisc-ets.network', + '25-qdisc-fq_pie.network', '25-qdisc-hhf.network', '25-qdisc-ingress-netem-compat.network', '25-qdisc-pie.network', @@ -2647,11 +2680,24 @@ class NetworkdNetworkTests(unittest.TestCase, Utilities): output = check_output('tc qdisc show dev dummy98') print(output) + self.assertRegex(output, 'qdisc ets 3a: root') self.assertRegex(output, 'bands 10 strict 3') self.assertRegex(output, 'quanta 1 2 3 4 5') self.assertRegex(output, 'priomap 3 4 5 6 7') + @expectedFailureIfFQPIEIsNotAvailable() + def test_qdisc_fq_pie(self): + copy_unit_to_networkd_unit_path('25-qdisc-fq_pie.network', '12-dummy.netdev') + start_networkd() + self.wait_online(['dummy98:routable']) + + output = check_output('tc qdisc show dev dummy98') + print(output) + + self.assertRegex(output, 'qdisc fq_pie 3a: root') + self.assertRegex(output, 'limit 200000p') + @expectedFailureIfNetdevsimWithSRIOVIsNotAvailable() def test_sriov(self): call('rmmod netdevsim', stderr=subprocess.DEVNULL) @@ -2870,6 +2916,8 @@ class NetworkdBridgeTests(unittest.TestCase, Utilities): '12-dummy.netdev', '26-bridge.netdev', '26-bridge-configure-without-carrier.network', + '26-bridge-mdb-master.network', + '26-bridge-mdb-slave.network', '26-bridge-slave-interface-1.network', '26-bridge-slave-interface-2.network', '26-bridge-vlan-master.network', @@ -2910,6 +2958,22 @@ class NetworkdBridgeTests(unittest.TestCase, Utilities): self.assertRegex(output, f'{i}') self.assertNotRegex(output, '4095') + def test_bridge_mdb(self): + copy_unit_to_networkd_unit_path('11-dummy.netdev', '26-bridge-mdb-slave.network', + '26-bridge.netdev', '26-bridge-mdb-master.network') + start_networkd() + self.wait_online(['test1:enslaved', 'bridge99:degraded']) + + output = check_output('bridge mdb show dev bridge99') + print(output) + self.assertRegex(output, 'dev bridge99 port test1 grp ff02:aaaa:fee5::1:3 permanent *vid 4064') + self.assertRegex(output, 'dev bridge99 port test1 grp 224.0.1.1 permanent *vid 4065') + + # Old kernel may not support bridge MDB entries on bridge master + if call('bridge mdb add dev bridge99 port bridge99 grp 224.0.1.3 temp vid 4068', stderr=subprocess.DEVNULL) == 0: + 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_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',