On Fri, 09/01 16:50, Philippe Mathieu-Daudé wrote:
> Hi Fam,
> 
> On 08/31/2017 03:42 AM, Fam Zheng wrote:
> > This adds a 32bit guest.
> > 
> > The official LTS cloud image is downloaded and initialized with
> > cloud-init.
> > 
> > Signed-off-by: Fam Zheng <f...@redhat.com>
> > ---
> >   tests/vm/ubuntu.i386 | 88 
> > ++++++++++++++++++++++++++++++++++++++++++++++++++++
> >   1 file changed, 88 insertions(+)
> >   create mode 100755 tests/vm/ubuntu.i386
> > 
> > diff --git a/tests/vm/ubuntu.i386 b/tests/vm/ubuntu.i386
> > new file mode 100755
> > index 0000000000..1a55856d9c
> > --- /dev/null
> > +++ b/tests/vm/ubuntu.i386
> > @@ -0,0 +1,88 @@
> > +#!/usr/bin/env python
> > +#
> > +# Ubuntu i386 image
> > +#
> > +# Copyright (C) 2017 Red Hat Inc.
> > +#
> > +# Authors:
> > +#  Fam Zheng <f...@redhat.com>
> > +#
> > +# This work is licensed under the terms of the GNU GPL, version 2.  See
> > +# the COPYING file in the top-level directory.
> > +#
> > +
> > +import os
> > +import sys
> > +import subprocess
> > +import basevm
> > +import time
> > +
> > +class UbuntuX86VM(basevm.BaseVM):
> > +    name = "ubuntu.i386"
> > +    BUILD_SCRIPT = """
> > +        set -e;
> > +        cd $(mktemp -d);
> > +        sudo chmod a+r /dev/vdb;
> > +        tar -xf /dev/vdb;
> > +        ./configure {configure_opts};
> > +        make -j{jobs};
> > +        make check;
> > +    """
> > +
> > +    def _gen_cloud_init_iso(self):
> > +        cidir = self._tmpdir
> > +        mdata = open(os.path.join(cidir, "meta-data"), "w")
> > +        mdata.writelines(["instance-id: ubuntu-vm-0\n",
> > +                         "local-hostname: ubuntu-guest\n"])
> > +        mdata.close()
> > +        udata = open(os.path.join(cidir, "user-data"), "w")
> > +        udata.writelines(["#cloud-config\n",
> > +                          "chpasswd:\n",
> > +                          "  list: |\n",
> > +                          "    root:%s\n" % self.ROOT_PASS,
> > +                          "    %s:%s\n" % (self.GUEST_USER, 
> > self.GUEST_PASS),
> > +                          "  expire: False\n",
> > +                          "users:\n",
> > +                          "  - name: %s\n" % self.GUEST_USER,
> > +                          "    sudo: ALL=(ALL) NOPASSWD:ALL\n",
> > +                          "    ssh-authorized-keys:\n",
> > +                          "    - %s\n" % basevm.SSH_PUB_KEY,
> > +                          "  - name: root\n",
> > +                          "    ssh-authorized-keys:\n",
> > +                          "    - %s\n" % basevm.SSH_PUB_KEY])
> > +        udata.close()
> > +        subprocess.check_call(["genisoimage", "-output", "cloud-init.iso",
> > +                               "-volid", "cidata", "-joliet", "-rock",
> > +                               "user-data", "meta-data"],
> > +                               cwd=cidir,
> > +                               stdin=self._devnull, stdout=self._stdout,
> > +                               stderr=self._stdout)
> > +        return os.path.join(cidir, "cloud-init.iso")
> > +
> > +    def build_image(self, img):
> > +        cimg = 
> > self._download_with_cache("https://cloud-images.ubuntu.com/releases/16.04/release/ubuntu-16.04-server-cloudimg-i386-disk1.img";)
> > +        img_tmp = img + ".tmp"
> > +        subprocess.check_call(["cp", "-f", cimg, img_tmp])
> > +        subprocess.check_call(["qemu-img", "resize", img_tmp, "50G"])
> > +        self.boot(img_tmp, extra_args = ["-cdrom", 
> > self._gen_cloud_init_iso()])
> 
> I'd rather test a 32bit cpu, not 64bit cpu in 32bit mode.
> 
> I first tested with "-cpu pentium2" which worked, I then find it easier this
> way:
> 
> if /dev/kvm: "kvm32"
> else: "qemu32"
> 
> What do you think?

No, I don't think so, I'm not testing the cpu emulation here. Let's focus on the
test subject which is what happens in the guest, not how it is emulated, as long
as it works.

Fam

Reply via email to