]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test-network: Add test for rps_cpu_mask option 31293/head
authorRenjaya Raga Zenta <ragazenta@gmail.com>
Fri, 16 Feb 2024 07:01:47 +0000 (14:01 +0700)
committerRenjaya Raga Zenta <ragazenta@gmail.com>
Wed, 28 Feb 2024 04:37:18 +0000 (11:37 +0700)
test/test-network/conf/24-rps-cpu-disable.link [new file with mode: 0644]
test/test-network/conf/24-rps-cpu-empty.link [new file with mode: 0644]
test/test-network/conf/24-rps-cpu-invalid.link [new file with mode: 0644]
test/test-network/conf/25-rps-cpu-0-1.link [new file with mode: 0644]
test/test-network/conf/25-rps-cpu-0-empty.link [new file with mode: 0644]
test/test-network/conf/25-rps-cpu-0-invalid.link [new file with mode: 0644]
test/test-network/conf/25-rps-cpu-0.link [new file with mode: 0644]
test/test-network/conf/25-rps-cpu-1.link [new file with mode: 0644]
test/test-network/conf/25-rps-cpu-all.link [new file with mode: 0644]
test/test-network/conf/25-rps-cpu-multi.link [new file with mode: 0644]
test/test-network/systemd-networkd-tests.py

diff --git a/test/test-network/conf/24-rps-cpu-disable.link b/test/test-network/conf/24-rps-cpu-disable.link
new file mode 100644 (file)
index 0000000..fb3451a
--- /dev/null
@@ -0,0 +1,6 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+[Match]
+OriginalName=dummy98
+
+[Link]
+ReceivePacketSteeringCPUMask=disable
diff --git a/test/test-network/conf/24-rps-cpu-empty.link b/test/test-network/conf/24-rps-cpu-empty.link
new file mode 100644 (file)
index 0000000..fc1342b
--- /dev/null
@@ -0,0 +1,6 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+[Match]
+OriginalName=dummy98
+
+[Link]
+ReceivePacketSteeringCPUMask=
diff --git a/test/test-network/conf/24-rps-cpu-invalid.link b/test/test-network/conf/24-rps-cpu-invalid.link
new file mode 100644 (file)
index 0000000..76d6713
--- /dev/null
@@ -0,0 +1,6 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+[Match]
+OriginalName=dummy98
+
+[Link]
+ReceivePacketSteeringCPUMask=0 3 8-invalid
diff --git a/test/test-network/conf/25-rps-cpu-0-1.link b/test/test-network/conf/25-rps-cpu-0-1.link
new file mode 100644 (file)
index 0000000..d026248
--- /dev/null
@@ -0,0 +1,6 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+[Match]
+OriginalName=dummy98
+
+[Link]
+ReceivePacketSteeringCPUMask=0 1
diff --git a/test/test-network/conf/25-rps-cpu-0-empty.link b/test/test-network/conf/25-rps-cpu-0-empty.link
new file mode 100644 (file)
index 0000000..b25b417
--- /dev/null
@@ -0,0 +1,7 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+[Match]
+OriginalName=dummy98
+
+[Link]
+ReceivePacketSteeringCPUMask=0
+ReceivePacketSteeringCPUMask=
diff --git a/test/test-network/conf/25-rps-cpu-0-invalid.link b/test/test-network/conf/25-rps-cpu-0-invalid.link
new file mode 100644 (file)
index 0000000..26147a0
--- /dev/null
@@ -0,0 +1,7 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+[Match]
+OriginalName=dummy98
+
+[Link]
+ReceivePacketSteeringCPUMask=0
+ReceivePacketSteeringCPUMask=invalid
diff --git a/test/test-network/conf/25-rps-cpu-0.link b/test/test-network/conf/25-rps-cpu-0.link
new file mode 100644 (file)
index 0000000..b1f4bc2
--- /dev/null
@@ -0,0 +1,6 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+[Match]
+OriginalName=dummy98
+
+[Link]
+ReceivePacketSteeringCPUMask=0
diff --git a/test/test-network/conf/25-rps-cpu-1.link b/test/test-network/conf/25-rps-cpu-1.link
new file mode 100644 (file)
index 0000000..d24d713
--- /dev/null
@@ -0,0 +1,6 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+[Match]
+OriginalName=dummy98
+
+[Link]
+ReceivePacketSteeringCPUMask=1
diff --git a/test/test-network/conf/25-rps-cpu-all.link b/test/test-network/conf/25-rps-cpu-all.link
new file mode 100644 (file)
index 0000000..b7a8eda
--- /dev/null
@@ -0,0 +1,6 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+[Match]
+OriginalName=dummy98
+
+[Link]
+ReceivePacketSteeringCPUMask=all
diff --git a/test/test-network/conf/25-rps-cpu-multi.link b/test/test-network/conf/25-rps-cpu-multi.link
new file mode 100644 (file)
index 0000000..d7d4d04
--- /dev/null
@@ -0,0 +1,7 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+[Match]
+OriginalName=dummy98
+
+[Link]
+ReceivePacketSteeringCPUMask=0 1
+ReceivePacketSteeringCPUMask=2,3
index aa7bd1e87aa7cf576d0927cc42f7ccdd4077c477..4f088f3f76e1202c13bd3e6d7536b2e64d066867 100755 (executable)
@@ -2459,6 +2459,131 @@ 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')
+        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), 2)
+
+    @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')
+        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), 3)
+
+    @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')
+        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), 15)
+
+    def test_rps_cpu_all(self):
+        cpu_count = os.cpu_count()
+
+        copy_network_unit('12-dummy.netdev', '25-rps-cpu-all.link')
+        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')
+
+        output = check_output('cat /sys/class/net/dummy98/queues/rx-0/rps_cpus')
+        print(output)
+        self.assertEqual(int(output.replace(',', ''), base=16), 1)
+
+    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')
+
+        output = check_output('cat /sys/class/net/dummy98/queues/rx-0/rps_cpus')
+        print(output)
+        self.assertEqual(int(output.replace(',', ''), base=16), 0)
+
 class NetworkdL2TPTests(unittest.TestCase, Utilities):
 
     def setUp(self):