qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
To: Kevin Wolf <kwolf@redhat.com>
Cc: qemu-block@nongnu.org, qemu-devel@nongnu.org, mreitz@redhat.com,
	den@openvz.org, jsnow@redhat.com
Subject: Re: [PATCH v6 08/11] iotests: add testenv.py
Date: Fri, 15 Jan 2021 16:10:50 +0300	[thread overview]
Message-ID: <41e62d69-30f1-eb86-6cc3-cdd052aadb26@virtuozzo.com> (raw)
In-Reply-To: <20210115124555.GC5429@merkur.fritz.box>

15.01.2021 15:45, Kevin Wolf wrote:
> Am 15.01.2021 um 13:19 hat Vladimir Sementsov-Ogievskiy geschrieben:
>> 15.01.2021 14:18, Kevin Wolf wrote:
>>> Am 09.01.2021 um 13:26 hat Vladimir Sementsov-Ogievskiy geschrieben:
>>>> Add TestEnv class, which will handle test environment in a new python
>>>> iotests running framework.
>>>>
>>>> Difference with current ./check interface:
>>>> - -v (verbose) option dropped, as it is unused
>>>>
>>>> - -xdiff option is dropped, until somebody complains that it is needed
>>>> - same for -n option
>>>>
>>>> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
>>>> ---
>>>>    tests/qemu-iotests/testenv.py | 328 ++++++++++++++++++++++++++++++++++
>>>>    1 file changed, 328 insertions(+)
>>>>    create mode 100755 tests/qemu-iotests/testenv.py
>>>>

[..]

>>>> +    def init_binaries(self):
>>>> +        """Init binary path variables:
>>>> +             PYTHON (for bash tests)
>>>> +             QEMU_PROG, QEMU_IMG_PROG, QEMU_IO_PROG, QEMU_NBD_PROG, QSD_PROG
>>>> +             SOCKET_SCM_HELPER
>>>> +        """
>>>> +        self.python = '/usr/bin/python3 -B'
>>>
>>> This doesn't look right, we need to respect the Python binary set in
>>> configure (which I think we get from common.env)
>>
>> Oh, I missed the change. Then I should just drop this self.python.
> 
> Do we still get the value from elsewhere or do we need to manually parse
> common.env?

Hmm.. Good question. We have either parse common.env, and still create self.python variable.

Or drop it, and include common.env directly to bash tests. For this we'll need to export

BUILD_IOTESTS, and do
  . $BUILD_IOTESTS/common.env

in common.rc..


> 
>>>
>>>> +        def root(*names):
>>>> +            return os.path.join(self.build_root, *names)
>>>> +
>>>> +        arch = os.uname().machine
>>>> +        if 'ppc64' in arch:
>>>> +            arch = 'ppc64'
>>>> +
>>>> +        self.qemu_prog = os.getenv('QEMU_PROG', root(f'qemu-system-{arch}'))
>>>> +        self.qemu_img_prog = os.getenv('QEMU_IMG_PROG', root('qemu-img'))
>>>> +        self.qemu_io_prog = os.getenv('QEMU_IO_PROG', root('qemu-io'))
>>>> +        self.qemu_nbd_prog = os.getenv('QEMU_NBD_PROG', root('qemu-nbd'))
>>>> +        self.qsd_prog = os.getenv('QSD_PROG', root('storage-daemon',
>>>> +                                                   'qemu-storage-daemon'))
>>>> +
>>>> +        for b in [self.qemu_img_prog, self.qemu_io_prog, self.qemu_nbd_prog,
>>>> +                  self.qemu_prog, self.qsd_prog]:
>>>> +            if not os.path.exists(b):
>>>> +                exit('Not such file: ' + b)
>>>> +            if not os.access(b, os.X_OK):
>>>> +                exit('Not executable: ' + b)
>>>> +
>>>> +        helper_path = os.path.join(self.build_iotests, 'socket_scm_helper')
>>>> +        if os.access(helper_path, os.X_OK):
>>>> +            self.socket_scm_helper = helper_path  # SOCKET_SCM_HELPER
>>>> +
>>>> +    def __init__(self, argv: List[str]) -> None:
>>>> +        """Parse args and environment"""
>>>> +
>>>> +        # Initialize generic paths: build_root, build_iotests, source_iotests,
>>>> +        # which are needed to initialize some environment variables. They are
>>>> +        # used by init_*() functions as well.
>>>> +
>>>> +
>>>> +        if os.path.islink(sys.argv[0]):
>>>> +            # called from the build tree
>>>> +            self.source_iotests = os.path.dirname(os.readlink(sys.argv[0]))
>>>> +            self.build_iotests = os.path.dirname(os.path.abspath(sys.argv[0]))
>>>> +        else:
>>>> +            # called from the source tree
>>>> +            self.source_iotests = os.getcwd()
>>>> +            self.build_iotests = self.source_iotests
>>>> +
>>>> +        self.build_root = os.path.join(self.build_iotests, '..', '..')
>>>> +
>>>> +        self.init_handle_argv(argv)
>>>> +        self.init_directories()
>>>> +        self.init_binaries()
>>>> +
>>>> +        # QEMU_OPTIONS
>>>> +        self.qemu_options = '-nodefaults -display none -accel qtest'
>>>> +        machine_map = (
>>>> +            (('arm', 'aarch64'), 'virt'),
>>>
>>> How does this work? Won't we check for "qemu-system-('arm', 'aarch64')"
>>> below, which we'll never find?
>>
>> Hmm. I just took existing logic from check:
>>
>> [..]
>>    case "$QEMU_PROG" in
>>        *qemu-system-arm|*qemu-system-aarch64)
>>            export QEMU_OPTIONS="$QEMU_OPTIONS -machine virt"
>>            ;;
>> [..]
> 
> What I mean is that the code below doesn't look like it's prepared to
> interpret a tuple like ('arm', 'aarch64'), it expects a single string:
> 
>>>
>>>> +            ('avr', 'mega2560'),
>>>> +            ('rx', 'gdbsim-r5f562n8'),
>>>> +            ('tricore', 'tricore_testboard')
>>>> +        )
>>>> +        for suffix, machine in machine_map:
>>>> +            if self.qemu_prog.endswith(f'qemu-system-{suffix}'):
> 
> Here we get effectively:
> 
>      suffix: Tuple[str, str] = ('arm', 'aarch64')
> 
> The formatted string uses str(suffix), which makes the result
> "qemu-system-('arm', 'aarch64')".
> 
> Or am I misunderstanding something here?

Ah, you are right:) Will fix. I interpreted your

   Won't we check for "qemu-system-('arm', 'aarch64')"

as
   
   Won't we check for "qemu-system-arm" or "qemu-system-aarch64"



-- 
Best regards,
Vladimir


  reply	other threads:[~2021-01-15 13:17 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-09 12:26 [PATCH v6 00/11] Rework iotests/check Vladimir Sementsov-Ogievskiy
2021-01-09 12:26 ` [PATCH v6 01/11] iotests/277: use dot slash for nbd-fault-injector.py running Vladimir Sementsov-Ogievskiy
2021-01-13 22:37   ` Eric Blake
2021-01-09 12:26 ` [PATCH v6 02/11] iotests/303: use dot slash for qcow2.py running Vladimir Sementsov-Ogievskiy
2021-01-13 22:38   ` Eric Blake
2021-01-09 12:26 ` [PATCH v6 03/11] iotests: fix some whitespaces in test output files Vladimir Sementsov-Ogievskiy
2021-01-13 22:51   ` Eric Blake
2021-01-09 12:26 ` [PATCH v6 04/11] iotests: make tests executable Vladimir Sementsov-Ogievskiy
2021-01-13 22:53   ` Eric Blake
2021-01-09 12:26 ` [PATCH v6 05/11] iotests/294: add shebang line Vladimir Sementsov-Ogievskiy
2021-01-13 22:54   ` Eric Blake
2021-01-09 12:26 ` [PATCH v6 06/11] iotests: define group in each iotest Vladimir Sementsov-Ogievskiy
2021-01-13 23:01   ` Eric Blake
2021-01-09 12:26 ` [PATCH v6 07/11] iotests: add findtests.py Vladimir Sementsov-Ogievskiy
2021-01-12 16:42   ` Kevin Wolf
2021-01-13 10:37     ` Vladimir Sementsov-Ogievskiy
2021-01-13 11:18       ` Kevin Wolf
2021-01-14  7:38     ` Vladimir Sementsov-Ogievskiy
2021-01-14 10:48       ` Kevin Wolf
2021-01-13 23:10   ` Eric Blake
2021-01-09 12:26 ` [PATCH v6 08/11] iotests: add testenv.py Vladimir Sementsov-Ogievskiy
2021-01-12 17:36   ` Kevin Wolf
2021-01-14  6:14     ` Vladimir Sementsov-Ogievskiy
2021-01-14  6:16       ` Vladimir Sementsov-Ogievskiy
2021-01-14  4:28   ` Vladimir Sementsov-Ogievskiy
2021-01-14 11:14     ` Kevin Wolf
2021-01-14 11:26       ` Vladimir Sementsov-Ogievskiy
2021-01-15 11:18   ` Kevin Wolf
2021-01-15 12:19     ` Vladimir Sementsov-Ogievskiy
2021-01-15 12:45       ` Kevin Wolf
2021-01-15 13:10         ` Vladimir Sementsov-Ogievskiy [this message]
2021-01-15 13:20           ` Kevin Wolf
2021-01-15 13:30             ` Vladimir Sementsov-Ogievskiy
2021-01-16 11:03               ` Vladimir Sementsov-Ogievskiy
2021-01-16 11:19                 ` Vladimir Sementsov-Ogievskiy
2021-01-18  9:59                 ` Kevin Wolf
2021-01-18 17:00                   ` Vladimir Sementsov-Ogievskiy
2021-01-09 12:26 ` [PATCH v6 09/11] iotests: add testrunner.py Vladimir Sementsov-Ogievskiy
2021-01-09 12:26 ` [PATCH v6 10/11] iotests: rewrite check into python Vladimir Sementsov-Ogievskiy
2021-01-12 17:41   ` Kevin Wolf
2021-01-13 23:20   ` Eric Blake
2021-01-14  0:18     ` John Snow
2021-01-09 12:26 ` [PATCH v6 11/11] iotests: rename and move 169 and 199 tests Vladimir Sementsov-Ogievskiy

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=41e62d69-30f1-eb86-6cc3-cdd052aadb26@virtuozzo.com \
    --to=vsementsov@virtuozzo.com \
    --cc=den@openvz.org \
    --cc=jsnow@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /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).