qemu-ppc
[Top][All Lists]
Advanced

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

Re: [PATCH v3 02/24] tests/functional: Add base classes for the upcoming


From: Daniel P . Berrangé
Subject: Re: [PATCH v3 02/24] tests/functional: Add base classes for the upcoming pytest-based tests
Date: Thu, 1 Aug 2024 11:07:20 +0100
User-agent: Mutt/2.2.12 (2023-09-09)

On Wed, Jul 31, 2024 at 03:24:35PM +0100, Alex Bennée wrote:
> Daniel P. Berrangé <berrange@redhat.com> writes:
> 
> > From: Thomas Huth <thuth@redhat.com>
> >
> > The file is mostly a copy of the tests/avocado/avocado_qemu/__init__.py
> > file with some adjustments to get rid of the Avocado dependencies (i.e.
> > we also have to drop the LinuxSSHMixIn and LinuxTest for now).
> >
> > The emulator binary and build directory are now passed via
> > environment variables that will be set via meson.build later.
> <snip>
> > diff --git a/tests/functional/qemu_test/testcase.py 
> > b/tests/functional/qemu_test/testcase.py
> > new file mode 100644
> > index 0000000000..82cc1d454f
> > --- /dev/null
> > +++ b/tests/functional/qemu_test/testcase.py
> > @@ -0,0 +1,154 @@
> > +# Test class and utilities for functional tests
> > +#
> > +# Copyright 2018, 2024 Red Hat, Inc.
> > +#
> > +# Original Author (Avocado-based tests):
> > +#  Cleber Rosa <crosa@redhat.com>
> > +#
> > +# Adaption for standalone version:
> > +#  Thomas Huth <thuth@redhat.com>
> > +#
> > +# This work is licensed under the terms of the GNU GPL, version 2 or
> > +# later.  See the COPYING file in the top-level directory.
> > +
> > +import logging
> > +import os
> > +import pycotap
> > +import sys
> > +import unittest
> > +import uuid
> > +
> > +from qemu.machine import QEMUMachine
> > +from qemu.utils import kvm_available, tcg_available
> > +
> > +from .cmd import run_cmd
> > +from .config import BUILD_DIR
> > +
> > +
> > +class QemuBaseTest(unittest.TestCase):
> > +
> > +    qemu_bin = os.getenv('QEMU_TEST_QEMU_BINARY')
> > +    arch = None
> > +
> > +    workdir = None
> > +    log = logging.getLogger('qemu-test')
> > +
> > +    def setUp(self, bin_prefix):
> > +        self.assertIsNotNone(self.qemu_bin, 'QEMU_TEST_QEMU_BINARY must be 
> > set')
> > +        self.arch = self.qemu_bin.split('-')[-1]
> > +
> > +        self.workdir = os.path.join(BUILD_DIR, 'tests/functional', 
> > self.arch,
> > +                                    self.id())
> > +        if not os.path.exists(self.workdir):
> > +            os.makedirs(self.workdir)
> 
> This is racy under --repeat:
> 
>   ==================================== 1/4 
> =====================================
>   test:         qemu:func-quick+func-riscv64 / func-riscv64-riscv_opensbi
>   start time:   14:16:52
>   duration:     0.06s
>   result:       exit status 1
>   command:      
> PYTHONPATH=/home/alex/lsrc/qemu.git/python:/home/alex/lsrc/qemu.git/tests/functional
>  QEMU_BUILD_ROOT=/home/alex/lsrc/qemu.git/builds/all QEMU_TEST_QEMU_BINARY=
>   /home/alex/lsrc/qemu.git/builds/all/qemu-system-riscv64 MALLOC_PERTURB_=71 
> QEMU_TEST_QEMU_IMG=/home/alex/lsrc/qemu.git/builds/all/qemu-img 
> /home/alex/lsrc/qemu.git/builds/al
>   l/pyvenv/bin/python3 
> /home/alex/lsrc/qemu.git/tests/functional/test_riscv_opensbi.py
>   ----------------------------------- stdout 
> -----------------------------------
>   TAP version 13
>   not ok 1 test_riscv_opensbi.RiscvOpenSBI.test_riscv_sifive_u
>   not ok 2 test_riscv_opensbi.RiscvOpenSBI.test_riscv_spike
>   not ok 3 test_riscv_opensbi.RiscvOpenSBI.test_riscv_virt
>   1..3
>   ----------------------------------- stderr 
> -----------------------------------
>   Traceback (most recent call last):
>     File "/home/alex/lsrc/qemu.git/tests/functional/qemu_test/testcase.py", 
> line 85, in setUp
>       super().setUp('qemu-system-')
>     File "/home/alex/lsrc/qemu.git/tests/functional/qemu_test/testcase.py", 
> line 45, in setUp
>       os.makedirs(self.workdir)
>     File "<frozen os>", line 225, in makedirs 
>   FileExistsError: [Errno 17] File exists: 
> '/home/alex/lsrc/qemu.git/builds/all/tests/functional/riscv64/test_riscv_opensbi.RiscvOpenSBI.test_riscv_sifive_u'
> 
>   Traceback (most recent call last):
>     File "/home/alex/lsrc/qemu.git/tests/functional/qemu_test/testcase.py", 
> line 85, in setUp
>       super().setUp('qemu-system-')
>     File "/home/alex/lsrc/qemu.git/tests/functional/qemu_test/testcase.py", 
> line 45, in setUp
>       os.makedirs(self.workdir)
>     File "<frozen os>", line 225, in makedirs 
>   FileExistsError: [Errno 17] File exists: 
> '/home/alex/lsrc/qemu.git/builds/all/tests/functional/riscv64/test_riscv_opensbi.RiscvOpenSBI.test_riscv_spike'
> 
>   Traceback (most recent call last):
>     File "/home/alex/lsrc/qemu.git/tests/functional/qemu_test/testcase.py", 
> line 85, in setUp
>       super().setUp('qemu-system-')
>     File "/home/alex/lsrc/qemu.git/tests/functional/qemu_test/testcase.py", 
> line 45, in setUp
>       os.makedirs(self.workdir)
>     File "<frozen os>", line 225, in makedirs 
>   FileExistsError: [Errno 17] File exists: 
> '/home/alex/lsrc/qemu.git/builds/all/tests/functional/riscv64/test_riscv_opensbi.RiscvOpenSBI.test_riscv_virt'
> 
> 
>   (test program exited with status code 1)
> 
> We could just:
> 
>   os.makedirs(self.workdir, exist_ok = True)

Yeah, that's a better approach.

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




reply via email to

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