On Thu, 2023-09-07 at 11:05 +0200, Thomas Huth wrote: > On 01/09/2023 17.58, Nina Schoetterl-Glausch wrote: > > From: Pierre Morel <pmo...@linux.ibm.com> > > > > Test changes in the entitlement from both a guest and a host point of > > view, depending on the polarization. > > > > Signed-off-by: Pierre Morel <pmo...@linux.ibm.com> > > Co-developed-by: Nina Schoetterl-Glausch <n...@linux.ibm.com> > > Signed-off-by: Nina Schoetterl-Glausch <n...@linux.ibm.com> > > --- > > tests/avocado/s390_topology.py | 55 ++++++++++++++++++++++++++++++++++ > > 1 file changed, 55 insertions(+) > > > > diff --git a/tests/avocado/s390_topology.py b/tests/avocado/s390_topology.py > > index d7ee36cb89..733093723a 100644 > > --- a/tests/avocado/s390_topology.py > > +++ b/tests/avocado/s390_topology.py > > @@ -243,3 +243,58 @@ def test_polarization(self): > > 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 the polarization change to get stabilized in kernel > > + before we check it through the sysfs. > > + """ > > + exec_command_and_wait_for_pattern(self, > > + """ sleep 1 ; > > + /bin/cat /sys/devices/system/cpu/cpu0/polarization """, > > + polarization) > > Using "sleep" in a function that is called multiple times will blow up the > testing time quite a bit ... could this be done in a different way instead, > e.g. by polling the sysfs file for the right value, or maybe there is > something in the "dmesg" output that could be used as a reference?
Nothing in dmesg. This works: 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") > > Thomas > >