mirror of https://github.com/xemu-project/xemu.git
tests/avocado: s390x cpu topology entitlement tests
Test changes in the entitlement from both a guest and a host point of view, depending on the polarization. Signed-off-by: Pierre Morel <pmorel@linux.ibm.com> Reviewed-by: Nina Schoetterl-Glausch <nsg@linux.ibm.com> Co-developed-by: Nina Schoetterl-Glausch <nsg@linux.ibm.com> Tested-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Nina Schoetterl-Glausch <nsg@linux.ibm.com> Message-ID: <20231016183925.2384704-18-nsg@linux.ibm.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
parent
cb042c73f3
commit
16ab722edb
|
@ -243,3 +243,65 @@ class S390CPUTopology(QemuSystemTest):
|
|||
res = self.vm.qmp('query-s390x-cpu-polarization')
|
||||
self.assertEqual(res['return']['polarization'], 'horizontal')
|
||||
self.check_topology(0, 0, 0, 0, 'medium', False)
|
||||
|
||||
|
||||
def check_polarization(self, polarization):
|
||||
#We need to wait for the change to have been propagated to the kernel
|
||||
exec_command_and_wait_for_pattern(self,
|
||||
"\n".join([
|
||||
"timeout 1 sh -c 'while true",
|
||||
'do',
|
||||
' syspath="/sys/devices/system/cpu/cpu0/polarization"',
|
||||
' polarization="$(cat "$syspath")" || exit',
|
||||
f' if [ "$polarization" = "{polarization}" ]; then',
|
||||
' exit 0',
|
||||
' fi',
|
||||
' sleep 0.01',
|
||||
#searched for strings mustn't show up in command, '' to obfuscate
|
||||
"done' && echo succ''ess || echo fail''ure",
|
||||
]),
|
||||
"success", "failure")
|
||||
|
||||
|
||||
def test_entitlement(self):
|
||||
"""
|
||||
This test verifies that QEMU modifies the entitlement
|
||||
after a guest request and that the guest sees the change.
|
||||
|
||||
:avocado: tags=arch:s390x
|
||||
:avocado: tags=machine:s390-ccw-virtio
|
||||
"""
|
||||
self.kernel_init()
|
||||
self.vm.launch()
|
||||
self.wait_until_booted()
|
||||
|
||||
self.system_init()
|
||||
|
||||
self.check_polarization('horizontal')
|
||||
self.check_topology(0, 0, 0, 0, 'medium', False)
|
||||
|
||||
self.guest_set_dispatching('1')
|
||||
self.check_polarization('vertical:medium')
|
||||
self.check_topology(0, 0, 0, 0, 'medium', False)
|
||||
|
||||
res = self.vm.qmp('set-cpu-topology',
|
||||
{'core-id': 0, 'entitlement': 'low'})
|
||||
self.assertEqual(res['return'], {})
|
||||
self.check_polarization('vertical:low')
|
||||
self.check_topology(0, 0, 0, 0, 'low', False)
|
||||
|
||||
res = self.vm.qmp('set-cpu-topology',
|
||||
{'core-id': 0, 'entitlement': 'medium'})
|
||||
self.assertEqual(res['return'], {})
|
||||
self.check_polarization('vertical:medium')
|
||||
self.check_topology(0, 0, 0, 0, 'medium', False)
|
||||
|
||||
res = self.vm.qmp('set-cpu-topology',
|
||||
{'core-id': 0, 'entitlement': 'high'})
|
||||
self.assertEqual(res['return'], {})
|
||||
self.check_polarization('vertical:high')
|
||||
self.check_topology(0, 0, 0, 0, 'high', False)
|
||||
|
||||
self.guest_set_dispatching('0');
|
||||
self.check_polarization("horizontal")
|
||||
self.check_topology(0, 0, 0, 0, 'high', False)
|
||||
|
|
Loading…
Reference in New Issue