From: Yu Watanabe Date: Sat, 2 Mar 2024 05:48:33 +0000 (+0900) Subject: test-network: wait for the interface being processed by udevd X-Git-Tag: v256-rc1~666^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F31587%2Fhead;p=thirdparty%2Fsystemd.git test-network: wait for the interface being processed by udevd Otherwise, even if the interface is available, the requested config may not be applied to the interface yet. This also merges multiple tests for RPS setting. Hopefully the performance of the test is improved. --- diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py index 51a92cb965e..3825490d5f1 100755 --- a/test/test-network/systemd-networkd-tests.py +++ b/test/test-network/systemd-networkd-tests.py @@ -2466,22 +2466,12 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities): self.wait_online('ifb99:degraded') - def test_rps_cpu_0(self): - copy_network_unit('12-dummy.netdev', '25-rps-cpu-0.link') - start_networkd() - - self.wait_links('dummy98') - - output = check_output('cat /sys/class/net/dummy98/queues/rx-0/rps_cpus') - print(output) - self.assertEqual(int(output.replace(',', ''), base=16), 1) - @unittest.skipUnless(os.cpu_count() >= 2, reason="CPU count should be >= 2 to pass this test") def test_rps_cpu_1(self): - copy_network_unit('12-dummy.netdev', '25-rps-cpu-1.link') + copy_network_unit('12-dummy.netdev', '12-dummy.network', '25-rps-cpu-1.link') start_networkd() - self.wait_links('dummy98') + self.wait_online('dummy98:carrier') output = check_output('cat /sys/class/net/dummy98/queues/rx-0/rps_cpus') print(output) @@ -2489,10 +2479,10 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities): @unittest.skipUnless(os.cpu_count() >= 2, reason="CPU count should be >= 2 to pass this test") def test_rps_cpu_0_1(self): - copy_network_unit('12-dummy.netdev', '25-rps-cpu-0-1.link') + copy_network_unit('12-dummy.netdev', '12-dummy.network', '25-rps-cpu-0-1.link') start_networkd() - self.wait_links('dummy98') + self.wait_online('dummy98:carrier') output = check_output('cat /sys/class/net/dummy98/queues/rx-0/rps_cpus') print(output) @@ -2500,96 +2490,86 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities): @unittest.skipUnless(os.cpu_count() >= 4, reason="CPU count should be >= 4 to pass this test") def test_rps_cpu_multi(self): - copy_network_unit('12-dummy.netdev', '25-rps-cpu-multi.link') + copy_network_unit('12-dummy.netdev', '12-dummy.network', '25-rps-cpu-multi.link') start_networkd() - self.wait_links('dummy98') + self.wait_online('dummy98:carrier') output = check_output('cat /sys/class/net/dummy98/queues/rx-0/rps_cpus') print(output) self.assertEqual(int(output.replace(',', ''), base=16), 15) - def test_rps_cpu_all(self): + def test_rps_cpu(self): cpu_count = os.cpu_count() - copy_network_unit('12-dummy.netdev', '25-rps-cpu-all.link') + copy_network_unit('12-dummy.netdev', '12-dummy.network') start_networkd() - self.wait_links('dummy98') + self.wait_online('dummy98:carrier') + # 0 + copy_network_unit('25-rps-cpu-0.link') + udevadm_trigger('/sys/class/net/dummy98') output = check_output('cat /sys/class/net/dummy98/queues/rx-0/rps_cpus') print(output) - self.assertEqual(f"{int(output.replace(',', ''), base=16):x}", f'{(1 << cpu_count) - 1:x}') - - def test_rps_cpu_disable(self): - copy_network_unit('12-dummy.netdev', '25-rps-cpu-all.link', '24-rps-cpu-disable.link') - start_networkd() - - self.wait_links('dummy98') + self.assertEqual(int(output.replace(',', ''), base=16), 1) + remove_network_unit('25-rps-cpu-0.link') + # all + copy_network_unit('25-rps-cpu-all.link') + udevadm_trigger('/sys/class/net/dummy98') output = check_output('cat /sys/class/net/dummy98/queues/rx-0/rps_cpus') print(output) - self.assertEqual(int(output.replace(',', ''), base=16), 0) - - def test_rps_cpu_empty(self): - copy_network_unit('12-dummy.netdev', '24-rps-cpu-empty.link') - start_networkd() - - self.wait_links('dummy98') + self.assertEqual(f"{int(output.replace(',', ''), base=16):x}", f'{(1 << cpu_count) - 1:x}') + remove_network_unit('25-rps-cpu-all.link') + # disable + copy_network_unit('24-rps-cpu-disable.link') + udevadm_trigger('/sys/class/net/dummy98') output = check_output('cat /sys/class/net/dummy98/queues/rx-0/rps_cpus') print(output) self.assertEqual(int(output.replace(',', ''), base=16), 0) + remove_network_unit('24-rps-cpu-disable.link') - def test_rps_cpu_0_empty(self): - copy_network_unit('12-dummy.netdev', '25-rps-cpu-0-empty.link') - start_networkd() - - self.wait_links('dummy98') - + # set all again + copy_network_unit('25-rps-cpu-all.link') + udevadm_trigger('/sys/class/net/dummy98') output = check_output('cat /sys/class/net/dummy98/queues/rx-0/rps_cpus') print(output) - self.assertEqual(int(output.replace(',', ''), base=16), 0) - - def test_rps_cpu_0_and_empty(self): - copy_network_unit('12-dummy.netdev', '25-rps-cpu-0.link', '24-rps-cpu-empty.link') - start_networkd() - - self.wait_links('dummy98') + self.assertEqual(f"{int(output.replace(',', ''), base=16):x}", f'{(1 << cpu_count) - 1:x}') + remove_network_unit('25-rps-cpu-all.link') + # empty -> unchanged + copy_network_unit('24-rps-cpu-empty.link') + udevadm_trigger('/sys/class/net/dummy98') output = check_output('cat /sys/class/net/dummy98/queues/rx-0/rps_cpus') print(output) - self.assertEqual(int(output.replace(',', ''), base=16), 0) - - def test_rps_cpu_invalid(self): - copy_network_unit('12-dummy.netdev', '24-rps-cpu-invalid.link') - start_networkd() - - self.wait_links('dummy98') + self.assertEqual(f"{int(output.replace(',', ''), base=16):x}", f'{(1 << cpu_count) - 1:x}') + remove_network_unit('24-rps-cpu-empty.link') + # 0, then empty -> unchanged + copy_network_unit('25-rps-cpu-0-empty.link') + udevadm_trigger('/sys/class/net/dummy98') output = check_output('cat /sys/class/net/dummy98/queues/rx-0/rps_cpus') print(output) - self.assertEqual(int(output.replace(',', ''), base=16), 0) - - def test_rps_cpu_0_invalid(self): - copy_network_unit('12-dummy.netdev', '25-rps-cpu-0-invalid.link') - start_networkd() - - self.wait_links('dummy98') + self.assertEqual(f"{int(output.replace(',', ''), base=16):x}", f'{(1 << cpu_count) - 1:x}') + remove_network_unit('25-rps-cpu-0-empty.link') + # 0, then invalid -> 0 + copy_network_unit('25-rps-cpu-0-invalid.link') + udevadm_trigger('/sys/class/net/dummy98') output = check_output('cat /sys/class/net/dummy98/queues/rx-0/rps_cpus') print(output) self.assertEqual(int(output.replace(',', ''), base=16), 1) + remove_network_unit('25-rps-cpu-0-invalid.link') - def test_rps_cpu_0_and_invalid(self): - copy_network_unit('12-dummy.netdev', '25-rps-cpu-0.link', '24-rps-cpu-invalid.link') - start_networkd() - - self.wait_links('dummy98') - + # invalid -> unchanged + copy_network_unit('24-rps-cpu-invalid.link') + udevadm_trigger('/sys/class/net/dummy98') output = check_output('cat /sys/class/net/dummy98/queues/rx-0/rps_cpus') print(output) - self.assertEqual(int(output.replace(',', ''), base=16), 0) + self.assertEqual(int(output.replace(',', ''), base=16), 1) + remove_network_unit('24-rps-cpu-invalid.link') class NetworkdL2TPTests(unittest.TestCase, Utilities):