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.
This commit is contained in:
Yu Watanabe 2024-03-02 14:48:33 +09:00
parent a39a2a8121
commit 4b35dab86a

View file

@ -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')
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')
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')
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_empty(self):
copy_network_unit('12-dummy.netdev', '25-rps-cpu-0-empty.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), 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')
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')
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.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(int(output.replace(',', ''), base=16), 1)
remove_network_unit('25-rps-cpu-0.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')
# 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(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')
# 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(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(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(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')
# 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), 1)
remove_network_unit('24-rps-cpu-invalid.link')
class NetworkdL2TPTests(unittest.TestCase, Utilities):