qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Kevin Wolf <kwolf@redhat.com>
To: Max Reitz <mreitz@redhat.com>
Cc: Thomas Huth <thuth@redhat.com>, John Snow <jsnow@redhat.com>,
	qemu-devel@nongnu.org, qemu-block@nongnu.org
Subject: Re: [Qemu-devel] [PATCH v3 6/8] iotests: Test driver whitelisting in 093
Date: Tue, 17 Sep 2019 10:40:12 +0200	[thread overview]
Message-ID: <20190917084012.GA4824@localhost.localdomain> (raw)
In-Reply-To: <c38acedf-d3db-384f-4aea-967ef3f87fdd@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 3479 bytes --]

Am 17.09.2019 um 10:18 hat Max Reitz geschrieben:
> On 13.09.19 20:30, John Snow wrote:
> > 
> > 
> > On 9/13/19 8:47 AM, Max Reitz wrote:
> >> On 20.08.19 23:32, John Snow wrote:
> >>>
> >>>
> >>> On 8/19/19 4:18 PM, Max Reitz wrote:
> >>>> null-aio may not be whitelisted.  Skip all test cases that require it.
> >>>>
> >>>> Signed-off-by: Max Reitz <mreitz@redhat.com>
> >>>> ---
> >>>>  tests/qemu-iotests/093 | 12 +++++++++---
> >>>>  1 file changed, 9 insertions(+), 3 deletions(-)
> >>>>
> >>>> diff --git a/tests/qemu-iotests/093 b/tests/qemu-iotests/093
> >>>> index 50c1e7f2ec..f03fa24a07 100755
> >>>> --- a/tests/qemu-iotests/093
> >>>> +++ b/tests/qemu-iotests/093
> >>>> @@ -24,7 +24,7 @@ import iotests
> >>>>  nsec_per_sec = 1000000000
> >>>>  
> >>>>  class ThrottleTestCase(iotests.QMPTestCase):
> >>>> -    test_img = "null-aio://"
> >>>> +    test_driver = "null-aio"
> >>>>      max_drives = 3
> >>>>  
> >>>>      def blockstats(self, device):
> >>>> @@ -35,10 +35,14 @@ class ThrottleTestCase(iotests.QMPTestCase):
> >>>>                  return stat['rd_bytes'], stat['rd_operations'], stat['wr_bytes'], stat['wr_operations']
> >>>>          raise Exception("Device not found for blockstats: %s" % device)
> >>>>  
> >>>> +    def required_drivers(self):
> >>>> +        return [self.test_driver]
> >>>> +
> >>>> +    @iotests.skip_if_unsupported(required_drivers)
> >>>
> >>> Oh, I see why you're passing args[0] back to the callback now. Why not
> >>> just pass self.required_drivers and call it with no arguments instead?
> >>>
> >>> You can get a bound version that way that doesn't need additional
> >>> arguments, and then the callback is free to take generic callables of
> >>> any kind.
> >>
> >> Am I doing something wrong?
> >>
> >> I just get
> >>
> >> +Traceback (most recent call last):
> >> +  File "093", line 26, in <module>
> >> +    class ThrottleTestCase(iotests.QMPTestCase):
> >> +  File "093", line 41, in ThrottleTestCase
> >> +    @iotests.skip_if_unsupported(self.required_drivers)
> >> +NameError: name 'self' is not defined
> >>
> >> this way.
> >>
> >> Max
> >>
> > What was I even talking about? :\ Well.
> > 
> > I'd still like to define func_wrapper with a nod to the type constraint
> > it has:
> > 
> > def func_wrapper(instance: iotests.QMPTestCase, *args, **kwargs):
> >     [...]
> > 
> > 
> > Then, you'd write:
> > 
> > if callable(required_formats):
> >     fmts = required_formats(instance)
> > else:
> >     fmts = required_formats
> 
> Yep, that anyway.  (Although I didn’t know about the “param: type”
> syntax and put that constraint in a comment instead.  Thanks again :-))

Note that function annotations are Python 3 only, so we can't use that
syntax yet anyway. If you want to use type hints that are understood by
tools (like mypy) and compatible with Python 2, you have to use
something like this (feel free to be more specific than Any):

    def func_wrapper(instance, *args, **kwargs):
        # type: (iotests.QMPTestCase, Any, Any) -> None
        [...]

Or if you only want to declare the type for one parameter:

    def func_wrapper(instance,  # type: iotests.QMPTestCase
                     *args,
                     **kwargs):
        [...]

Especially the latter syntax might be sufficiently ugly that just doing
a free-form comment that can't be parsed by tools is justifiable.

Kevin

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 801 bytes --]

  parent reply	other threads:[~2019-09-17  8:41 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-19 20:18 [Qemu-devel] [PATCH v3 0/8] iotests: Selfish patches Max Reitz
2019-08-19 20:18 ` [Qemu-devel] [PATCH v3 1/8] iotests: Add -display none to the qemu options Max Reitz
2019-08-20  6:36   ` Thomas Huth
2019-08-19 20:18 ` [Qemu-devel] [PATCH v3 2/8] iotests: Prefer null-co over null-aio Max Reitz
2019-08-19 20:22   ` Max Reitz
2019-08-20 21:05     ` John Snow
2019-08-20  6:38   ` Thomas Huth
2019-08-19 20:18 ` [Qemu-devel] [PATCH v3 3/8] iotests: Allow skipping test cases Max Reitz
2019-08-20 21:17   ` John Snow
2019-08-21 17:39   ` Andrey Shinkevich
2019-08-19 20:18 ` [Qemu-devel] [PATCH v3 4/8] iotests: Use case_skip() in skip_if_unsupported() Max Reitz
2019-08-20 21:27   ` John Snow
2019-08-21 10:50     ` Max Reitz
2019-08-19 20:18 ` [Qemu-devel] [PATCH v3 5/8] iotests: Let skip_if_unsupported() accept a method Max Reitz
2019-08-20 21:31   ` John Snow
2019-08-21 10:54     ` Max Reitz
2019-08-19 20:18 ` [Qemu-devel] [PATCH v3 6/8] iotests: Test driver whitelisting in 093 Max Reitz
2019-08-20  6:40   ` Thomas Huth
2019-08-20 12:23     ` Max Reitz
2019-08-20 21:32   ` John Snow
2019-08-21 10:55     ` Max Reitz
2019-09-13 12:47     ` Max Reitz
2019-09-13 18:30       ` John Snow
2019-09-17  8:18         ` Max Reitz
2019-09-17  8:29           ` Max Reitz
2019-09-17  8:32             ` Max Reitz
2019-09-17  8:40           ` Kevin Wolf [this message]
2019-09-17 11:07             ` Max Reitz
2019-09-17 11:22               ` Kevin Wolf
2019-09-17 13:09                 ` John Snow
2019-09-17 13:42                   ` Kevin Wolf
2019-09-17 13:44                     ` John Snow
2019-09-17 14:05                       ` Kevin Wolf
2019-09-17 14:12                 ` Max Reitz
2019-08-19 20:18 ` [Qemu-devel] [PATCH v3 7/8] iotests: Test driver whitelisting in 136 Max Reitz
2019-08-19 20:18 ` [Qemu-devel] [PATCH v3 8/8] iotests: Cache supported_formats() Max Reitz
2019-08-20 21:10   ` John Snow

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190917084012.GA4824@localhost.localdomain \
    --to=kwolf@redhat.com \
    --cc=jsnow@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=thuth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).