qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v22 16/20] tests/avocado: s390x cpu topology entitlement test


From: Nina Schoetterl-Glausch
Subject: Re: [PATCH v22 16/20] tests/avocado: s390x cpu topology entitlement tests
Date: Fri, 08 Sep 2023 20:30:29 +0200
User-agent: Evolution 3.48.4 (3.48.4-1.fc38)

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 <pmorel@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 <pmorel@linux.ibm.com>
> > Co-developed-by: Nina Schoetterl-Glausch <nsg@linux.ibm.com>
> > Signed-off-by: Nina Schoetterl-Glausch <nsg@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
> 
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]