qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v4 3/3] Add "boot_linux" acceptance test for x86


From: Cleber Rosa
Subject: Re: [Qemu-devel] [PATCH v4 3/3] Add "boot_linux" acceptance test for x86_64 and pc machine type
Date: Tue, 12 Mar 2019 15:49:38 -0400
User-agent: NeoMutt/20180716

On Fri, Feb 08, 2019 at 11:52:02AM +0100, Cornelia Huck wrote:
> On Thu,  7 Feb 2019 13:00:12 -0500
> Cleber Rosa <address@hidden> wrote:
> 
> 
> > diff --git a/tests/acceptance/boot_linux.py b/tests/acceptance/boot_linux.py
> > new file mode 100644
> > index 0000000000..927fac2959
> > --- /dev/null
> > +++ b/tests/acceptance/boot_linux.py
> > @@ -0,0 +1,51 @@
> > +# Functional test that boots a complete Linux system via a cloud image
> > +#
> > +# Copyright (c) 2018-2019 Red Hat, Inc.
> > +#
> > +# Author:
> > +#  Cleber Rosa <address@hidden>
> > +#
> > +# 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 os
> > +
> > +from avocado_qemu import Test
> > +
> > +from avocado.utils import cloudinit
> > +from avocado.utils import network
> > +from avocado.utils import vmimage
> > +
> > +
> > +class BootLinux(Test):
> > +    """
> > +    Boots a Linux system, checking for a successful initialization
> > +
> > +    :avocado: enable
> > +    """
> > +
> > +    timeout = 600
> > +
> > +    def test_x86_64_pc(self):
> > +        """
> > +        :avocado: tags=arch:x86_64
> > +        :avocado: tags=machine:pc
> > +        """
> > +        self.vm.set_machine('pc')
> > +        self.vm.add_args('-m', '1024')
> > +        boot = vmimage.get('fedora', arch='x86_64', version='29',
> > +                           cache_dir=self.cache_dirs[0],
> 
> Somewhat related: I looked at
> https://avocado-framework.readthedocs.io/en/67.0/api/utils/avocado.utils.html#module-avocado.utils.vmimage
> to find out how caching works, but could not find it... does it match
> the checksum?

The "get()" utility function does have a checksum parameter.

https://avocado-framework.readthedocs.io/en/67.0/api/utils/avocado.utils.html#avocado.utils.vmimage.get

And caching is available both with or without a checksum option given.
Now that you've mention this, for this use case, it's desirable to
provide the checksum.

> 
> I think we want to make this benign for people on a slow and/or
> data-capped network connection. 'make check-acceptance' downloading
> tons of stuff might come as a bad surprise, and it's probably best to
> avoid doing more of that than strictly necessary.
>

This test can easily take around 10x more the slowest test available
(boot_linux_console.py).  So, I'm wondering if it sounds like a good
idea to define some very rough ranges at this point:

 * quick: <= 0.5s
 * normal (doesn't have to exist as an explicit category, IMO)
 * slow: >= 30s

But again, it's hard to come up even with the right times... unless we
had a baseline environment that could be reused by all.  Ideas?

- Cleber.

> > +                           snapshot_dir=self.workdir)
> > +        self.vm.add_args('-drive', 'file=%s' % boot.path)
> > +
> > +        cloudinit_iso = os.path.join(self.workdir, 'cloudinit.iso')
> > +        phone_home_port = network.find_free_port()
> > +        cloudinit.iso(cloudinit_iso, self.name,
> > +                      # QEMU's hard coded usermode router address
> > +                      phone_home_host='10.0.2.2',
> > +                      phone_home_port=phone_home_port)
> > +        self.vm.add_args('-drive', 'file=%s' % cloudinit_iso)
> > +
> > +        self.vm.launch()
> > +        self.log.info('VM launched, waiting for boot confirmation from 
> > guest')
> > +        cloudinit.wait_for_phone_home(('0.0.0.0', phone_home_port), 
> > self.name)



reply via email to

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