From 4b35dab86a22e20e3011958574500fdcac73ff1b Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Sat, 2 Mar 2024 14:48:33 +0900 Subject: [PATCH] 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. --- test/test-network/systemd-networkd-tests.py | 114 ++++++++------------ 1 file changed, 47 insertions(+), 67 deletions(-) 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): -- 2.47.3