qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v2 1/1] tests/docker: Add a Avocado Docker test


From: Cleber Rosa
Subject: Re: [Qemu-devel] [PATCH v2 1/1] tests/docker: Add a Avocado Docker test
Date: Wed, 23 May 2018 06:14:12 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0

On 05/23/2018 05:35 AM, Lucas Meneghel Rodrigues wrote:
> Me and Cleber were talking about running avocado in containers, and we
> verified there are some things we need to fix in avocado to make it
> work well under container environments. One of the main offenders is
> our service manager library, that was created to deal with sysvinit
> and systemd, but Docker containers usually don't have either. The test
> runner does use the service library to infer a few things about the
> system (even on simple tests), so fixing is needed.
> 

What (I believe) Lucas means is:

 * if you use Avocado-VT tests, like on this proposal, inside
containers, then there's code checking for the libvirtd "service", which
will get the "service manager" (init or systemd) wrong
 * if you run Avocado tests and use the "avocado.utils.service" library
on containers, you can hit a similar issue

We're tracking these issues here:

https://trello.com/c/GX1cdFSp/1330-avocadoutilsservice-adapt-to-service-management-on-containers

Now for other Avocado tests, or for the Avocado test runner itself,
running on containers, there should be no issues:

 $ docker pull clebergnu/fedora-avocado
 $ docker run -t clebergnu/fedora-avocado avocado run /bin/true

- Cleber.

> So your docker proposal as of is now depends on us fixing those bugs
> for it to be functional. Please bear with us meanwhile.
> 
> On Tue, May 22, 2018 at 10:14 PM, Lucas Meneghel Rodrigues
> <address@hidden> wrote:
>> On Tue, May 22, 2018 at 9:50 PM, Cleber Rosa <address@hidden> wrote:
>>>
>>>
>>> On 05/21/2018 07:32 PM, Philippe Mathieu-Daudé wrote:
>>>> On 05/21/2018 07:33 PM, Alistair Francis wrote:
>>>>> On Sun, May 20, 2018 at 8:16 PM, Fam Zheng <address@hidden> wrote:
>>>>>> On Fri, 05/18 11:34, Alistair Francis wrote:
>>>>>>> Avocado is not trivial to setup on non-Fedora systems. To simplfying
>>>>>>> future testing add a docker test image that runs Avocado tests.
>>>>>>>
>>>>>>> Signed-off-by: Alistair Francis <address@hidden>
>>>>>>> ---
>>>>>>> v2:
>>>>>>>  - Add a seperate fedora-avocado Docker image
>>>>>>>  - Move the avocado vt-bootstrap into the Docker file
>>>>>>>
>>>>>>>  tests/docker/Makefile.include                 |  1 +
>>>>>>>  .../docker/dockerfiles/fedora-avocado.docker  | 25 +++++++++++++++++
>>>>>>>  tests/docker/test-avocado                     | 28 +++++++++++++++++++
>>>>>>>  3 files changed, 54 insertions(+)
>>>>>>>  create mode 100644 tests/docker/dockerfiles/fedora-avocado.docker
>>>>>>>  create mode 100755 tests/docker/test-avocado
>>>>>>>
>>>>>>> diff --git a/tests/docker/Makefile.include 
>>>>>>> b/tests/docker/Makefile.include
>>>>>>> index ef1a3e62eb..0e3d108dde 100644
>>>>>>> --- a/tests/docker/Makefile.include
>>>>>>> +++ b/tests/docker/Makefile.include
>>>>>>> @@ -60,6 +60,7 @@ docker-image-debian-ppc64el-cross: 
>>>>>>> docker-image-debian9
>>>>>>>  docker-image-debian-s390x-cross: docker-image-debian9
>>>>>>>  docker-image-debian-win32-cross: docker-image-debian8-mxe
>>>>>>>  docker-image-debian-win64-cross: docker-image-debian8-mxe
>>>>>>> +docker-image-fedora-avocado: docker-image-fedora
>>>>>>>  docker-image-travis: NOUSER=1
>>>>>>>
>>>>>>>  # Expand all the pre-requistes for each docker image and test 
>>>>>>> combination
>>>>>>> diff --git a/tests/docker/dockerfiles/fedora-avocado.docker 
>>>>>>> b/tests/docker/dockerfiles/fedora-avocado.docker
>>>>>>> new file mode 100644
>>>>>>> index 0000000000..55b19eebbf
>>>>>>> --- /dev/null
>>>>>>> +++ b/tests/docker/dockerfiles/fedora-avocado.docker
>>>>>>> @@ -0,0 +1,25 @@
>>>>>>> +FROM qemu:fedora
>>>>>>> +
>>>>>>> +ENV PACKAGES \
>>>>>>> +    libvirt-devel \
>>>>>>> +    nc \
>>>>>>> +    python-avocado \
>>>
>>> python-avocado is a "Provides" of python2-avocado, but that may may go
>>> away soon (as soon as Fedora 29).  I'd recommend using python2-avocado,
>>> which is the proper package name available on Fedora.
>>>
>>>>>>> +    python2-devel python3-devel \
>>>>>>> +    qemu-kvm \
>>>>>>> +    tcpdump \
>>>>>>> +    xz
>>>>>>> +ENV PIP_PACKAGES \
>>>>>>> +    avocado-qemu \
>>>
>>> +CC: Amador Pahim
>>>
>>> This pip package was created by Amador Pahim, but was intended for demo
>>> purposes only.  Upon finding about this, he (cc'ed here) said that the
>>> package is going to be removed to avoid further confusion.
>>>
>>> BTW, the intention is to have this supporting code for QEMU tests in the
>>> QEMU tree itself.  Myself and Eduardo are working on a new version of
>>> that supporting code.  Also, based on what I see on the test-avocado
>>> file, this code is not needed at this point.
>>>
>>>>>>> +    avocado-framework-plugin-runner-remote \
>>>>>>> +    avocado-framework-plugin-runner-vm \
>>>
>>> These two plugins are only needed if you intend to run tests on remote
>>> machines.  Given "test-avocado" is not making use of those features,
>>> there's no need to install them.
>>>
>>> As a side note, plugins are also available on Fedora as RPM packages, so
>>> if I failed to understand the requirements for these plugins here, they
>>> could still be installed as the python2-avocado-plugins-runner-remote
>>> and python2-avocado-plugins-runner-vm RPM packages.
>>>
>>>>>>> +    avocado-framework-plugin-vt
>>>>>>> +
>>>
>>> +CC: Lucas Rodrigues
>>>
>>> This is a pip package created by Lucas Rodrigues, and this code is
>>> certainly used in the "test-avocado" file.  He told me he's using it to
>>> run Avocado-VT tests in a venv on Ubuntu, Amazon Linux, etc, and he's
>>> willing to maintain and update it.
>>
>> I'd suggest to look into virtual environments to run avocado-vt.
>> virtual environments are more lightweight than using a docker
>> container to run things and achieve similar functionality. Since I
>> mostly never install python libraries and projects system wide these
>> days, I didn't test this install mode in a docker container. Here's
>> what I'd do on my Ubuntu 16.04 development laptop:
>>
>> $ virtualenv avocado_vt_demo
>> Running virtualenv with interpreter /usr/bin/python2
>> New python executable in /home/lmr/avocado_vt_demo/bin/python2
>> Also creating executable in /home/lmr/avocado_vt_demo/bin/python
>> Installing setuptools, pkg_resources, pip, wheel...done.
>>
>> $ source avocado_vt_demo/bin/activate
>>
>> (avocado_vt_demo) $ pip install avocado-framework-plugin-vt
>> ... output trimmed ...
>> Successfully built avocado-framework-plugin-vt autotest aexpect simplejson
>> Installing collected packages: pbr, six, stevedore, avocado-framework,
>> autotest, aexpect, simplejson, netaddr, netifaces,
>> avocado-framework-plugin-vt
>> Successfully installed aexpect-1.4.0 autotest-0.16.4
>> avocado-framework-61.0 avocado-framework-plugin-vt-57.4 netaddr-0.7.19
>> netifaces-0.10.7 pbr-4.0.3 simplejson-3.15.0 six-1.11.0
>> stevedore-1.28.0
>>
>> (avocado_vt_demo) $ avocado vt-bootstrap --yes-to-all --vt-type qemu
>> Failed to load plugin from module "avocado_vt.plugins.vt_list":
>> EnvironmentError("Bootstrap missing. Execute 'avocado vt-bootstrap' or
>> disable this plugin to get rid of this message",)
>> Failed to load plugin from module "avocado_vt.plugins.vt":
>> EnvironmentError("Bootstrap missing. Execute 'avocado vt-bootstrap' or
>> disable this plugin to get rid of this message",)
>> Running bootstrap for qemu
>>
>> 1 - Checking the mandatory programs and headers
>> /usr/bin/xz OK
>> /usr/sbin/tcpdump OK
>> /bin/nc OK
>> /bin/ip OK
>> /usr/bin/arping OK
>> /usr/bin/gcc OK
>> /usr/include/python2.7/Python.h OK
>> /usr/include/linux/types.h OK
>> /usr/include/linux/unistd.h OK
>> /usr/include/linux/socket.h OK
>>
>> ... output trimmed ...
>>
>> 9 - Checking for modules kvm, kvm-intel
>> Module kvm loaded
>> Module kvm-intel loaded
>>
>> VT-BOOTSTRAP FINISHED
>> You may take a look at the following online docs for more info:
>>  - http://avocado-vt.readthedocs.org/
>>  - http://avocado-framework.readthedocs.org/
>>
>> (avocado_vt_demo) $ avocado run boot
>> JOB ID     : 2ffba3965cd327e768bd8dadf4f82d6416a4f293
>> JOB LOG    : 
>> /home/lmr/avocado/job-results/job-2018-05-22T22.09-2ffba39/job.log
>>  (1/1) io-github-autotest-qemu.boot: PASS (31.31 s)
>> RESULTS    : PASS 1 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0
>> | CANCEL 0
>> JOB TIME   : 33.25 s
>>
>> I can maintain the pip package mostly in sync with the other avocado
>> releases. Just keep in mind that my bandwidth for maintenance tasks
>> outside of my job @Amazon is limited, so you will have to nudge me if
>> you need something urgently.
>>
>> Cheers,
>>
>> Lucas
>>
>>>>>>> +ENV QEMU_CONFIGURE_OPTS --python=/usr/bin/python3
>>>
>>> OK, "python3-avocado" is not yet available on Fedora, because it still
>>> tracks the 52.x (LTS) series.  So, if Python 3 is the version chosen, it
>>> maybe a good idea to remove "python-avocado" from "PACKAGES" completely
>>> and use "avocado-framework" instead on "PIP_PACKAGES".
>>>
>>>>>>
>>>>>> I think this is inherited from qemu:fedora, no?
>>>>>
>>>>> It is, I have removed it.
>>>>>
>>>>>>
>>>>>>> +
>>>>>>> +RUN dnf install -y $PACKAGES
>>>>>>> +RUN pip install $PIP_PACKAGES
>>>>>>> +RUN avocado vt-bootstrap --yes-to-all --vt-type qemu
>>>>>>> +
>>>>>>> +RUN rpm -q $PACKAGES | sort > /packages.txt
>>>>>>
>>>>>> Can you keep the parent image's list with ">>" or appending to the old 
>>>>>> $PACKAGES
>>>>>> in the above "ENV" directive?
>>>>>>
>>>>>>> +
>>>>>>> +ENV FEATURES mingw clang pyyaml asan avocado
>>>>>>
>>>>>> Similarly, is it possible to append to the parent list instead of 
>>>>>> overriding?
>>>>>
>>>>> I have changed both of these to append to the original variables.
>>>>
>>>> Feel free to add my R-b then:
>>>> Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
>>>>
>>>> I'll wait your respin to try again, hoping I got my proxy issues solved.
>>>>
>>>>>>
>>>>>>> diff --git a/tests/docker/test-avocado b/tests/docker/test-avocado
>>>>>>> new file mode 100755
>>>>>>> index 0000000000..40474db2ce
>>>>>>> --- /dev/null
>>>>>>> +++ b/tests/docker/test-avocado
>>>>>>> @@ -0,0 +1,28 @@
>>>>>>> +#!/bin/bash -e
>>>>>>> +#
>>>>>>> +# Avocado tests on Fedora, as these are a real pain on Debian systems
>>>>>>
>>>>>> Shouldn't pip packages work just well on Debian too? What are the pain?
>>>>>> (Cc'ing Cleber who may want to know this).
>>>>>
>>>>> There is no debian package at the moment.
>>>>>
>>>
>>> That's why Fam said *pip* packages.  In my experience with pip packages
>>> on Debian:
>>>
>>>  * avocado-framework: installation and general usage works well.  Found
>>> one issue though when running on containers, though, with an easy
>>> workaround[1]
>>>
>>>  * avocado-framework-plugins-vt: currently at version 57.x, and when
>>> used outside of venvs, doesn't get the "test-providers" directory
>>> right[2].  Same happened with latest master (using pip install -e
>>> git+https://github.com/avocado-framework/avocado-vt.git#egg=avocado-plugins-vt)
>>>
>>> [1] -
>>> https://trello.com/c/yEH8ixps/1328-avocado-crashes-on-systems-without-less
>>>
>>> [2] -
>>> https://trello.com/c/0BZZE4CR/1329-avocado-vt-bootstrap-from-pip-package-fails-to-find-test-providers-dir
>>>
>>> - Cleber.
>>>
>>>>> Alistair
>>>>>
>>>>>>
>>>>>> Fam
>>>>>>
>>>>>>> +#
>>>>>>> +# Copyright (c) 2018 Western Digital.
>>>>>>> +#
>>>>>>> +# Authors:
>>>>>>> +#  Alistair Francis <address@hidden>
>>>>>>> +#
>>>>>>> +# This work is licensed under the terms of the GNU GPL, version 2
>>>>>>> +# or (at your option) any later version. See the COPYING file in
>>>>>>> +# the top-level directory.
>>>>>>> +#
>>>>>>> +# Run this test: NOUSER=1 make address@hidden
>>>>>>> +
>>>>>>> +. common.rc
>>>>>>> +
>>>>>>> +requires avocado
>>>>>>> +
>>>>>>> +cd "$BUILD_DIR"
>>>>>>> +
>>>>>>> +DEF_TARGET_LIST="x86_64-softmmu"
>>>>>>> +TARGET_LIST=${TARGET_LIST:-$DEF_TARGET_LIST} \
>>>>>>> +build_qemu
>>>>>>> +install_qemu
>>>>>>> +
>>>>>>> +export PATH="${PATH}:$(pwd)"
>>>>>>> +avocado run boot --vt-qemu-bin ./x86_64-softmmu/qemu-system-x86_64
>>>>>>> --
>>>>>>> 2.17.0
>>>>>>>
>>>>
>>
>>
>>
>> --
>> Lucas
> 
> 
> 



reply via email to

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