diff mbox series

[v19,17/21] tests/avocado: s390x cpu topology test dedicated CPU

Message ID 20230403162905.17703-18-pmorel@linux.ibm.com (mailing list archive)
State New, archived
Headers show
Series s390x: CPU Topology | expand

Commit Message

Pierre Morel April 3, 2023, 4:29 p.m. UTC
A dedicated CPU in vertical polarization can only have
a high entitlement.
Let's check this.

Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
---
 tests/avocado/s390_topology.py | 43 +++++++++++++++++++++++++++++++++-
 1 file changed, 42 insertions(+), 1 deletion(-)

Comments

Cédric Le Goater April 4, 2023, 9:19 a.m. UTC | #1
On 4/3/23 18:29, Pierre Morel wrote:
> A dedicated CPU in vertical polarization can only have
> a high entitlement.
> Let's check this.
> 
> Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
> ---
>   tests/avocado/s390_topology.py | 43 +++++++++++++++++++++++++++++++++-
>   1 file changed, 42 insertions(+), 1 deletion(-)
> 
> diff --git a/tests/avocado/s390_topology.py b/tests/avocado/s390_topology.py
> index f12f0ae148..6a41f08897 100644
> --- a/tests/avocado/s390_topology.py
> +++ b/tests/avocado/s390_topology.py
> @@ -52,6 +52,7 @@ class S390CPUTopology(LinuxKernelTest):
>       The polarization is changed on a request from the guest.
>       """
>       timeout = 90
> +    skip_basis = False
>   

This should come through its own patch.


>       def check_topology(self, c, s, b, d, e, t):
> @@ -116,12 +117,14 @@ def system_init(self):
>           exec_command_and_wait_for_pattern(self,
>                   '/bin/cat /sys/devices/system/cpu/dispatching', '0')
>   
> +    @skipIf(skip_basis, 'skipping basis tests')
>       def test_single(self):
>           self.kernel_init()
>           self.vm.launch()
>           self.wait_for_console_pattern('no job control')
>           self.check_topology(0, 0, 0, 0, 'medium', False)
>   
> +    @skipIf(skip_basis, 'skipping basis tests')
>       def test_default(self):
>           """
>           This test checks the implicite topology.
> @@ -147,6 +150,7 @@ def test_default(self):
>           self.check_topology(11, 2, 1, 0, 'medium', False)
>           self.check_topology(12, 0, 0, 1, 'medium', False)
>   
> +    @skipIf(skip_basis, 'skipping basis tests')
>       def test_move(self):
>           """
>           This test checks the topology modification by moving a CPU
> @@ -167,6 +171,7 @@ def test_move(self):
>           self.assertEqual(res['return'], {})
>           self.check_topology(0, 2, 0, 0, 'low', False)
>   
> +    @skipIf(skip_basis, 'skipping basis tests')
>       def test_hotplug(self):
>           """
>           This test verifies that a CPU defined with '-device' command line
> @@ -184,6 +189,7 @@ def test_hotplug(self):
>   
>           self.check_topology(10, 2, 1, 0, 'medium', False)
>   
> +    @skipIf(skip_basis, 'skipping basis tests')
>       def test_hotplug_full(self):
>           """
>           This test verifies that a hotplugged fully defined with '-device'
> @@ -202,6 +208,7 @@ def test_hotplug_full(self):
>           self.wait_for_console_pattern('no job control')
>           self.check_topology(1, 1, 1, 1, 'medium', False)
>   
> +    @skipIf(skip_basis, 'skipping basis tests')
>       def test_polarisation(self):
>           """
>           This test verifies that QEMU modifies the entitlement change after
> @@ -231,7 +238,7 @@ def test_polarisation(self):
>   
>           self.check_topology(0, 0, 0, 0, 'medium', False)
>   
> -    def test_set_cpu_topology_entitlement(self):
> +    def test_entitlement(self):

May be introduce the correct name in the first patch.


>           """
>           This test verifies that QEMU modifies the polarization
>           after a guest request.
> @@ -286,3 +293,37 @@ def test_set_cpu_topology_entitlement(self):
>           self.check_topology(1, 0, 0, 0, 'medium', False)
>           self.check_topology(2, 1, 0, 0, 'high', False)
>           self.check_topology(3, 1, 0, 0, 'high', False)
> +
> +    def test_dedicated(self):
> +        """
> +        This test verifies that QEMU modifies the entitlement change correctly
> +        for a dedicated CPU after several guest polarization change requests.
> +
> +        :avocado: tags=arch:s390x
> +        :avocado: tags=machine:s390-ccw-virtio
> +        """
> +        self.kernel_init()
> +        self.vm.launch()
> +        self.wait_for_console_pattern('no job control')
> +
> +        self.system_init()
> +
> +        res = self.vm.qmp('set-cpu-topology',
> +                          {'core-id': 0, 'dedicated': True})
> +        self.assertEqual(res['return'], {})
> +
> +        self.check_topology(0, 0, 0, 0, 'high', True)
> +
> +        exec_command(self, 'echo 1 > /sys/devices/system/cpu/dispatching')
> +        time.sleep(0.2)
> +        exec_command_and_wait_for_pattern(self,
> +                '/bin/cat /sys/devices/system/cpu/dispatching', '1')
> +
> +        self.check_topology(0, 0, 0, 0, 'high', True)
> +
> +        exec_command(self, 'echo 0 > /sys/devices/system/cpu/dispatching')
> +        time.sleep(0.2)
> +        exec_command_and_wait_for_pattern(self,
> +                '/bin/cat /sys/devices/system/cpu/dispatching', '0')
> +
> +        self.check_topology(0, 0, 0, 0, 'high', True)
Pierre Morel April 4, 2023, 12:02 p.m. UTC | #2
On 4/4/23 11:19, Cédric Le Goater wrote:
> On 4/3/23 18:29, Pierre Morel wrote:
>> A dedicated CPU in vertical polarization can only have
>> a high entitlement.
>> Let's check this.
>>
>> Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
>> ---
>>   tests/avocado/s390_topology.py | 43 +++++++++++++++++++++++++++++++++-
>>   1 file changed, 42 insertions(+), 1 deletion(-)
>>
>> diff --git a/tests/avocado/s390_topology.py 
>> b/tests/avocado/s390_topology.py
>> index f12f0ae148..6a41f08897 100644
>> --- a/tests/avocado/s390_topology.py
>> +++ b/tests/avocado/s390_topology.py
>> @@ -52,6 +52,7 @@ class S390CPUTopology(LinuxKernelTest):
>>       The polarization is changed on a request from the guest.
>>       """
>>       timeout = 90
>> +    skip_basis = False
>
> This should come through its own patch.

OK, this is more a debug help, I wonder if I should not just remove it


>
>
>>       def check_topology(self, c, s, b, d, e, t):
>> @@ -116,12 +117,14 @@ def system_init(self):
>>           exec_command_and_wait_for_pattern(self,
>>                   '/bin/cat /sys/devices/system/cpu/dispatching', '0')
>>   +    @skipIf(skip_basis, 'skipping basis tests')
>>       def test_single(self):
>>           self.kernel_init()
>>           self.vm.launch()
>>           self.wait_for_console_pattern('no job control')
>>           self.check_topology(0, 0, 0, 0, 'medium', False)
>>   +    @skipIf(skip_basis, 'skipping basis tests')
>>       def test_default(self):
>>           """
>>           This test checks the implicite topology.
>> @@ -147,6 +150,7 @@ def test_default(self):
>>           self.check_topology(11, 2, 1, 0, 'medium', False)
>>           self.check_topology(12, 0, 0, 1, 'medium', False)
>>   +    @skipIf(skip_basis, 'skipping basis tests')
>>       def test_move(self):
>>           """
>>           This test checks the topology modification by moving a CPU
>> @@ -167,6 +171,7 @@ def test_move(self):
>>           self.assertEqual(res['return'], {})
>>           self.check_topology(0, 2, 0, 0, 'low', False)
>>   +    @skipIf(skip_basis, 'skipping basis tests')
>>       def test_hotplug(self):
>>           """
>>           This test verifies that a CPU defined with '-device' 
>> command line
>> @@ -184,6 +189,7 @@ def test_hotplug(self):
>>             self.check_topology(10, 2, 1, 0, 'medium', False)
>>   +    @skipIf(skip_basis, 'skipping basis tests')
>>       def test_hotplug_full(self):
>>           """
>>           This test verifies that a hotplugged fully defined with 
>> '-device'
>> @@ -202,6 +208,7 @@ def test_hotplug_full(self):
>>           self.wait_for_console_pattern('no job control')
>>           self.check_topology(1, 1, 1, 1, 'medium', False)
>>   +    @skipIf(skip_basis, 'skipping basis tests')
>>       def test_polarisation(self):
>>           """
>>           This test verifies that QEMU modifies the entitlement 
>> change after
>> @@ -231,7 +238,7 @@ def test_polarisation(self):
>>             self.check_topology(0, 0, 0, 0, 'medium', False)
>>   -    def test_set_cpu_topology_entitlement(self):
>> +    def test_entitlement(self):
>
> May be introduce the correct name in the first patch.


right.


Thanks,

Pierre
diff mbox series

Patch

diff --git a/tests/avocado/s390_topology.py b/tests/avocado/s390_topology.py
index f12f0ae148..6a41f08897 100644
--- a/tests/avocado/s390_topology.py
+++ b/tests/avocado/s390_topology.py
@@ -52,6 +52,7 @@  class S390CPUTopology(LinuxKernelTest):
     The polarization is changed on a request from the guest.
     """
     timeout = 90
+    skip_basis = False
 
 
     def check_topology(self, c, s, b, d, e, t):
@@ -116,12 +117,14 @@  def system_init(self):
         exec_command_and_wait_for_pattern(self,
                 '/bin/cat /sys/devices/system/cpu/dispatching', '0')
 
+    @skipIf(skip_basis, 'skipping basis tests')
     def test_single(self):
         self.kernel_init()
         self.vm.launch()
         self.wait_for_console_pattern('no job control')
         self.check_topology(0, 0, 0, 0, 'medium', False)
 
+    @skipIf(skip_basis, 'skipping basis tests')
     def test_default(self):
         """
         This test checks the implicite topology.
@@ -147,6 +150,7 @@  def test_default(self):
         self.check_topology(11, 2, 1, 0, 'medium', False)
         self.check_topology(12, 0, 0, 1, 'medium', False)
 
+    @skipIf(skip_basis, 'skipping basis tests')
     def test_move(self):
         """
         This test checks the topology modification by moving a CPU
@@ -167,6 +171,7 @@  def test_move(self):
         self.assertEqual(res['return'], {})
         self.check_topology(0, 2, 0, 0, 'low', False)
 
+    @skipIf(skip_basis, 'skipping basis tests')
     def test_hotplug(self):
         """
         This test verifies that a CPU defined with '-device' command line
@@ -184,6 +189,7 @@  def test_hotplug(self):
 
         self.check_topology(10, 2, 1, 0, 'medium', False)
 
+    @skipIf(skip_basis, 'skipping basis tests')
     def test_hotplug_full(self):
         """
         This test verifies that a hotplugged fully defined with '-device'
@@ -202,6 +208,7 @@  def test_hotplug_full(self):
         self.wait_for_console_pattern('no job control')
         self.check_topology(1, 1, 1, 1, 'medium', False)
 
+    @skipIf(skip_basis, 'skipping basis tests')
     def test_polarisation(self):
         """
         This test verifies that QEMU modifies the entitlement change after
@@ -231,7 +238,7 @@  def test_polarisation(self):
 
         self.check_topology(0, 0, 0, 0, 'medium', False)
 
-    def test_set_cpu_topology_entitlement(self):
+    def test_entitlement(self):
         """
         This test verifies that QEMU modifies the polarization
         after a guest request.
@@ -286,3 +293,37 @@  def test_set_cpu_topology_entitlement(self):
         self.check_topology(1, 0, 0, 0, 'medium', False)
         self.check_topology(2, 1, 0, 0, 'high', False)
         self.check_topology(3, 1, 0, 0, 'high', False)
+
+    def test_dedicated(self):
+        """
+        This test verifies that QEMU modifies the entitlement change correctly
+        for a dedicated CPU after several guest polarization change requests.
+
+        :avocado: tags=arch:s390x
+        :avocado: tags=machine:s390-ccw-virtio
+        """
+        self.kernel_init()
+        self.vm.launch()
+        self.wait_for_console_pattern('no job control')
+
+        self.system_init()
+
+        res = self.vm.qmp('set-cpu-topology',
+                          {'core-id': 0, 'dedicated': True})
+        self.assertEqual(res['return'], {})
+
+        self.check_topology(0, 0, 0, 0, 'high', True)
+
+        exec_command(self, 'echo 1 > /sys/devices/system/cpu/dispatching')
+        time.sleep(0.2)
+        exec_command_and_wait_for_pattern(self,
+                '/bin/cat /sys/devices/system/cpu/dispatching', '1')
+
+        self.check_topology(0, 0, 0, 0, 'high', True)
+
+        exec_command(self, 'echo 0 > /sys/devices/system/cpu/dispatching')
+        time.sleep(0.2)
+        exec_command_and_wait_for_pattern(self,
+                '/bin/cat /sys/devices/system/cpu/dispatching', '0')
+
+        self.check_topology(0, 0, 0, 0, 'high', True)