.travis.yml | 2 +- include/qemu/qemu-plugin.h | 19 +++++ plugins/loader.c | 21 +++++ plugins/plugin.h | 2 + tests/Makefile.include | 2 + tests/plugin/bb.c | 2 + tests/plugin/empty.c | 2 + tests/plugin/hotblocks.c | 2 + tests/plugin/hotpages.c | 2 + tests/plugin/howvec.c | 2 + tests/plugin/insn.c | 2 + tests/plugin/mem.c | 2 + tests/vm/basevm.py | 29 ++++++- tests/vm/netbsd | 188 ++++++++++++++++++++++++++++++++++++++++++--- 14 files changed, 264 insertions(+), 13 deletions(-)
The following changes since commit 039e285e095c20a88e623b927654b161aaf9d914: Merge remote-tracking branch 'remotes/vivier2/tags/trivial-branch-pull-request' into staging (2019-11-12 12:09:19 +0000) are available in the Git repository at: https://github.com/stsquad/qemu.git tags/pull-testing-and-tcg-121119-1 for you to fetch changes up to 3fb356cc86461a14450802e14fa79e8436dbbf31: tcg plugins: expose an API version concept (2019-11-12 14:32:55 +0000) ---------------------------------------------------------------- Testing and plugins for rc1 - add plugin API versioning - tests/vm add netbsd autoinstall - disable ipmi-bt-test for non-Linux - single-thread make check ---------------------------------------------------------------- Alex Bennée (4): tests: only run ipmi-bt-test if CONFIG_LINUX tests/vm: support sites with sha512 checksums .travis.yml: don't run make check with multiple jobs tcg plugins: expose an API version concept Gerd Hoffmann (4): tests/vm: netbsd autoinstall, using serial console tests/vm: add console_consume helper tests/vm: use console_consume for netbsd tests/vm: update netbsd to version 8.1 .travis.yml | 2 +- include/qemu/qemu-plugin.h | 19 +++++ plugins/loader.c | 21 +++++ plugins/plugin.h | 2 + tests/Makefile.include | 2 + tests/plugin/bb.c | 2 + tests/plugin/empty.c | 2 + tests/plugin/hotblocks.c | 2 + tests/plugin/hotpages.c | 2 + tests/plugin/howvec.c | 2 + tests/plugin/insn.c | 2 + tests/plugin/mem.c | 2 + tests/vm/basevm.py | 29 ++++++- tests/vm/netbsd | 188 ++++++++++++++++++++++++++++++++++++++++++--- 14 files changed, 264 insertions(+), 13 deletions(-) -- 2.20.1
On Tue, 12 Nov 2019 at 14:50, Alex Bennée <alex.bennee@linaro.org> wrote: > > The following changes since commit 039e285e095c20a88e623b927654b161aaf9d914: > > Merge remote-tracking branch 'remotes/vivier2/tags/trivial-branch-pull-request' into staging (2019-11-12 12:09:19 +0000) > > are available in the Git repository at: > > https://github.com/stsquad/qemu.git tags/pull-testing-and-tcg-121119-1 > > for you to fetch changes up to 3fb356cc86461a14450802e14fa79e8436dbbf31: > > tcg plugins: expose an API version concept (2019-11-12 14:32:55 +0000) > > ---------------------------------------------------------------- > Testing and plugins for rc1 > > - add plugin API versioning > - tests/vm add netbsd autoinstall > - disable ipmi-bt-test for non-Linux > - single-thread make check Applied, thanks. Please update the changelog at https://wiki.qemu.org/ChangeLog/4.2 for any user-visible changes. PS: just noticed, but shouldn't the plugin-version change have needed an update to the docs ? thanks -- PMM
Peter Maydell <peter.maydell@linaro.org> writes: > On Tue, 12 Nov 2019 at 14:50, Alex Bennée <alex.bennee@linaro.org> wrote: >> >> The following changes since commit 039e285e095c20a88e623b927654b161aaf9d914: >> >> Merge remote-tracking branch 'remotes/vivier2/tags/trivial-branch-pull-request' into staging (2019-11-12 12:09:19 +0000) >> >> are available in the Git repository at: >> >> https://github.com/stsquad/qemu.git tags/pull-testing-and-tcg-121119-1 >> >> for you to fetch changes up to 3fb356cc86461a14450802e14fa79e8436dbbf31: >> >> tcg plugins: expose an API version concept (2019-11-12 14:32:55 +0000) >> >> ---------------------------------------------------------------- >> Testing and plugins for rc1 >> >> - add plugin API versioning >> - tests/vm add netbsd autoinstall >> - disable ipmi-bt-test for non-Linux >> - single-thread make check > > > Applied, thanks. > > Please update the changelog at https://wiki.qemu.org/ChangeLog/4.2 > for any user-visible changes. Yes.. I'll cook something up. > > PS: just noticed, but shouldn't the plugin-version change > have needed an update to the docs ? > > thanks > -- PMM -- Alex Bennée
From: Gerd Hoffmann <kraxel@redhat.com> Instead of fetching the prebuilt image from patchew download the install iso and prepare the image locally. Install to disk, using the serial console. Create qemu user, configure ssh login. Install packages needed for qemu builds. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Reviewed-by: Kamil Rytarowski <n54@gmx.com> Tested-by: Thomas Huth <thuth@redhat.com> [ehabkost: rebased to latest qemu.git master] Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> Message-Id: <20191031085306.28888-2-kraxel@redhat.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com> diff --git a/tests/vm/netbsd b/tests/vm/netbsd index 18aa56ae826..445c34dc495 100755 --- a/tests/vm/netbsd +++ b/tests/vm/netbsd @@ -2,10 +2,11 @@ # # NetBSD VM image # -# Copyright 2017 Red Hat Inc. +# Copyright 2017-2019 Red Hat Inc. # # Authors: # Fam Zheng <famz@redhat.com> +# Gerd Hoffmann <kraxel@redhat.com> # # This code is licensed under the GPL version 2 or later. See # the COPYING file in the top-level directory. @@ -13,20 +14,53 @@ import os import sys +import time import subprocess import basevm class NetBSDVM(basevm.BaseVM): name = "netbsd" arch = "x86_64" + + link = "https://cdn.netbsd.org/pub/NetBSD/NetBSD-8.0/images/NetBSD-8.0-amd64.iso" + size = "20G" + pkgs = [ + # tools + "git-base", + "pkgconf", + "xz", + "python37", + + # gnu tools + "bash", + "gmake", + "gsed", + "flex", "bison", + + # libs: crypto + "gnutls", + + # libs: images + "jpeg", + "png", + + # libs: ui + "SDL2", + "gtk3+", + "libxkbcommon", + ] + BUILD_SCRIPT = """ set -e; - rm -rf /var/tmp/qemu-test.* - cd $(mktemp -d /var/tmp/qemu-test.XXXXXX); + rm -rf /home/qemu/qemu-test.* + cd $(mktemp -d /home/qemu/qemu-test.XXXXXX); + mkdir src build; cd src; tar -xf /dev/rld1a; - ./configure --python=python2.7 {configure_opts}; + cd ../build + ../src/configure --python=python3.7 --disable-opengl {configure_opts}; gmake --output-sync -j{jobs} {target} {verbose}; """ + poweroff = "/sbin/poweroff" # Workaround for NetBSD + IPv6 + slirp issues. # NetBSD seems to ignore the ICMPv6 Destination Unreachable @@ -36,14 +70,147 @@ class NetBSDVM(basevm.BaseVM): ipv6 = False def build_image(self, img): - cimg = self._download_with_cache("http://download.patchew.org/netbsd-7.1-amd64.img.xz", - sha256sum='b633d565b0eac3d02015cd0c81440bd8a7a8df8512615ac1ee05d318be015732') - img_tmp_xz = img + ".tmp.xz" + cimg = self._download_with_cache(self.link) img_tmp = img + ".tmp" - sys.stderr.write("Extracting the image...\n") - subprocess.check_call(["ln", "-f", cimg, img_tmp_xz]) - subprocess.check_call(["xz", "--keep", "-dvf", img_tmp_xz]) + iso = img + ".install.iso" + + self.print_step("Preparing iso and disk image") + subprocess.check_call(["ln", "-f", cimg, iso]) + subprocess.check_call(["qemu-img", "create", "-f", "qcow2", + img_tmp, self.size]) + + self.print_step("Booting installer") + self.boot(img_tmp, extra_args = [ + "-bios", "pc-bios/bios-256k.bin", + "-machine", "graphics=off", + "-cdrom", iso + ]) + self.console_init() + self.console_wait("Primary Bootstrap") + + # serial console boot menu output doesn't work for some + # reason, so we have to fly blind ... + for char in list("5consdev com0\n"): + time.sleep(0.2) + self.console_send(char) + self.console_wait("") + self.console_wait_send("> ", "boot\n") + + self.console_wait_send("Terminal type", "xterm\n") + self.console_wait_send("a: Installation messages", "a\n") + self.console_wait_send("b: US-English", "b\n") + self.console_wait_send("a: Install NetBSD", "a\n") + self.console_wait("Shall we continue?") + self.console_wait_send("b: Yes", "b\n") + + self.console_wait_send("a: ld0", "a\n") + self.console_wait_send("a: This is the correct", "a\n") + self.console_wait_send("b: Use the entire disk", "b\n") + self.console_wait("NetBSD bootcode") + self.console_wait_send("a: Yes", "a\n") + self.console_wait_send("b: Use existing part", "b\n") + self.console_wait_send("x: Partition sizes ok", "x\n") + self.console_wait_send("for your NetBSD disk", "\n") + self.console_wait("Shall we continue?") + self.console_wait_send("b: Yes", "b\n") + + self.console_wait_send("b: Use serial port com0", "b\n") + self.console_wait_send("f: Set serial baud rate", "f\n") + self.console_wait_send("a: 9600", "a\n") + self.console_wait_send("x: Exit", "x\n") + + self.console_wait_send("a: Full installation", "a\n") + self.console_wait_send("a: CD-ROM", "a\n") + + self.print_step("Installation started now, this will take a while") + self.console_wait_send("Hit enter to continue", "\n") + + self.console_wait_send("d: Change root password", "d\n") + self.console_wait_send("a: Yes", "a\n") + self.console_wait("New password:") + self.console_send("%s\n" % self.ROOT_PASS) + self.console_wait("New password:") + self.console_send("%s\n" % self.ROOT_PASS) + self.console_wait("Retype new password:") + self.console_send("%s\n" % self.ROOT_PASS) + + self.console_wait_send("o: Add a user", "o\n") + self.console_wait("username") + self.console_send("%s\n" % self.GUEST_USER) + self.console_wait("to group wheel") + self.console_wait_send("a: Yes", "a\n") + self.console_wait_send("a: /bin/sh", "a\n") + self.console_wait("New password:") + self.console_send("%s\n" % self.GUEST_PASS) + self.console_wait("New password:") + self.console_send("%s\n" % self.GUEST_PASS) + self.console_wait("Retype new password:") + self.console_send("%s\n" % self.GUEST_PASS) + + self.console_wait_send("a: Configure network", "a\n") + self.console_wait_send("a: vioif0", "a\n") + self.console_wait_send("Network media type", "\n") + self.console_wait("autoconfiguration") + self.console_wait_send("a: Yes", "a\n") + self.console_wait_send("DNS domain", "localnet\n") + self.console_wait("Are they OK?") + self.console_wait_send("a: Yes", "a\n") + self.console_wait("installed in /etc") + self.console_wait_send("a: Yes", "a\n") + + self.console_wait_send("e: Enable install", "e\n") + proxy = os.environ.get("http_proxy") + if not proxy is None: + self.console_wait_send("f: Proxy", "f\n") + self.console_wait("Proxy") + self.console_send("%s\n" % proxy) + self.console_wait_send("x: Install pkgin", "x\n") + self.console_init(1200) + self.console_wait_send("Hit enter to continue", "\n") + self.console_init() + + self.console_wait_send("g: Enable sshd", "g\n") + self.console_wait_send("x: Finished conf", "x\n") + self.console_wait_send("Hit enter to continue", "\n") + + self.print_step("Installation finished, rebooting") + self.console_wait_send("d: Reboot the computer", "d\n") + + # setup qemu user + prompt = "localhost$" + self.console_ssh_init(prompt, self.GUEST_USER, self.GUEST_PASS) + self.console_wait_send(prompt, "exit\n") + + # setup root user + prompt = "localhost#" + self.console_ssh_init(prompt, "root", self.ROOT_PASS) + self.console_sshd_config(prompt) + + # setup virtio-blk #1 (tarfile) + self.console_wait(prompt) + self.console_send("echo 'chmod 666 /dev/rld1a' >> /etc/rc.local\n") + + # turn off mprotect (conflicts with tcg) + self.console_wait(prompt) + self.console_send("echo security.pax.mprotect.enabled=0 >> /etc/sysctl.conf\n") + + self.print_step("Configuration finished, rebooting") + self.console_wait_send(prompt, "reboot\n") + self.console_wait("login:") + self.wait_ssh() + + self.print_step("Installing packages") + self.ssh_root_check("pkgin update\n") + self.ssh_root_check("pkgin -y install %s\n" % " ".join(self.pkgs)) + + # shutdown + self.ssh_root(self.poweroff) + self.console_wait("entering state S5") + self.wait() + os.rename(img_tmp, img) + os.remove(iso) + self.print_step("All done") if __name__ == "__main__": sys.exit(basevm.main(NetBSDVM)) -- 2.20.1
From: Gerd Hoffmann <kraxel@redhat.com> Helper function to read all console output. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Message-Id: <20191031085306.28888-3-kraxel@redhat.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com> diff --git a/tests/vm/basevm.py b/tests/vm/basevm.py index 2929de23aa7..086bfb2c66d 100755 --- a/tests/vm/basevm.py +++ b/tests/vm/basevm.py @@ -242,6 +242,25 @@ class BaseVM(object): return False return True + def console_consume(self): + vm = self._guest + output = "" + vm.console_socket.setblocking(0) + while True: + try: + chars = vm.console_socket.recv(1) + except: + break + output += chars.decode("latin1") + if "\r" in output or "\n" in output: + lines = re.split("[\r\n]", output) + output = lines.pop() + if self.debug: + self.console_log("\n".join(lines)) + if self.debug: + self.console_log(output) + vm.console_socket.setblocking(1) + def console_send(self, command): vm = self._guest if self.debug: -- 2.20.1
From: Gerd Hoffmann <kraxel@redhat.com> Use new helper to read all pending console output, not just a single char. Unblocks installer boot. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Message-Id: <20191031085306.28888-4-kraxel@redhat.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com> diff --git a/tests/vm/netbsd b/tests/vm/netbsd index 445c34dc495..0083f7ff6a7 100755 --- a/tests/vm/netbsd +++ b/tests/vm/netbsd @@ -93,7 +93,7 @@ class NetBSDVM(basevm.BaseVM): for char in list("5consdev com0\n"): time.sleep(0.2) self.console_send(char) - self.console_wait("") + self.console_consume() self.console_wait_send("> ", "boot\n") self.console_wait_send("Terminal type", "xterm\n") -- 2.20.1
From: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Message-Id: <20191031085306.28888-5-kraxel@redhat.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com> diff --git a/tests/vm/netbsd b/tests/vm/netbsd index 0083f7ff6a7..c48c60853e7 100755 --- a/tests/vm/netbsd +++ b/tests/vm/netbsd @@ -22,7 +22,7 @@ class NetBSDVM(basevm.BaseVM): name = "netbsd" arch = "x86_64" - link = "https://cdn.netbsd.org/pub/NetBSD/NetBSD-8.0/images/NetBSD-8.0-amd64.iso" + link = "https://cdn.netbsd.org/pub/NetBSD/NetBSD-8.1/images/NetBSD-8.1-amd64.iso" size = "20G" pkgs = [ # tools -- 2.20.1
This test has been unstable on NetBSD for awhile. It seems the mechanism used to listen to a random port is a Linux-ism (although a received wisdom Linux-ism rather than a well documented one). As working around would add more hard to test complexity to the test I've gone for the easier option of making it CONFIG_LINUX only. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Cc: Corey Minyard <cminyard@mvista.com> Cc: Kamil Rytarowski <kamil@netbsd.org> diff --git a/tests/Makefile.include b/tests/Makefile.include index 534ee487436..8566f5f119d 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -177,7 +177,9 @@ check-qtest-i386-$(CONFIG_SGA) += tests/boot-serial-test$(EXESUF) check-qtest-i386-$(CONFIG_SLIRP) += tests/pxe-test$(EXESUF) check-qtest-i386-y += tests/rtc-test$(EXESUF) check-qtest-i386-$(CONFIG_ISA_IPMI_KCS) += tests/ipmi-kcs-test$(EXESUF) +ifdef CONFIG_LINUX check-qtest-i386-$(CONFIG_ISA_IPMI_BT) += tests/ipmi-bt-test$(EXESUF) +endif check-qtest-i386-y += tests/i440fx-test$(EXESUF) check-qtest-i386-y += tests/fw_cfg-test$(EXESUF) check-qtest-i386-y += tests/device-plug-test$(EXESUF) -- 2.20.1
Let's challenge the convention that doing more at a time helps. It certainly doesn't tell you unambiguously where in the test cycle you were before the test hangs and exceeds the job time limit. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> diff --git a/.travis.yml b/.travis.yml index 678e33decc2..b9a026c8eeb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -77,7 +77,7 @@ env: - SRC_DIR="." - BUILD_DIR="." - BASE_CONFIG="--disable-docs --disable-tools" - - TEST_CMD="make check -j3 V=1" + - TEST_CMD="make check V=1" # This is broadly a list of "mainline" softmmu targets which have support across the major distros - MAIN_SOFTMMU_TARGETS="aarch64-softmmu,arm-softmmu,i386-softmmu,mips-softmmu,mips64-softmmu,ppc64-softmmu,riscv64-softmmu,s390x-softmmu,x86_64-softmmu" - CCACHE_SLOPPINESS="include_file_ctime,include_file_mtime" -- 2.20.1
© 2016 - 2024 Red Hat, Inc.