All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: Fam Zheng <famz@redhat.com>
Cc: qemu-devel@nongnu.org, berrange@redhat.com,
	"Philippe Mathieu-Daudé" <f4bug@amsat.org>,
	pbonzini@redhat.com, stefanha@redhat.com,
	"Cleber Rosa" <crosa@redhat.com>,
	"Peter Maydell" <peter.maydell@linaro.org>,
	eblake@redhat.com, "Kamil Rytarowski" <kamil@netbsd.org>
Subject: Re: [Qemu-devel] [PATCH v8 12/13] tests: Add README for vm tests
Date: Mon, 18 Sep 2017 10:43:39 +0100	[thread overview]
Message-ID: <87d16ojq9g.fsf@linaro.org> (raw)
In-Reply-To: <20170918024402.3265-13-famz@redhat.com>


Fam Zheng <famz@redhat.com> writes:

> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
>  tests/vm/README | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 85 insertions(+)
>  create mode 100644 tests/vm/README
>
> diff --git a/tests/vm/README b/tests/vm/README
> new file mode 100644
> index 0000000000..fa30a79ea7
> --- /dev/null
> +++ b/tests/vm/README
> @@ -0,0 +1,85 @@
> +=== VM test suite to run build in guests ===
> +
> +== Intro ==
> +
> +This test suite contains scripts that bootstrap various guest images that have
> +necessary packages to build QEMU. The basic usage is documented in Makefile
> +help which is displayed with "make vm-test".
> +
> +== Quick start ==
> +
> +Run "make vm-test" to list available make targets. Invoke a specific make
> +command to run build test in an image. For example, "make vm-build-freebsd"
> +will build the source tree in the FreeBSD image. The command can be executed
> +from either the source tree or the build dir; if the former, ./configure is not
> +needed. The command will then generate the test image in ./tests/vm/ under the
> +working directory.
> +
> +== QEMU binary ==
> +
> +By default, qemu-system-x86_64 is searched in $PATH to run the guest. If there
> +isn't one, or if it is older than 2.10, the test won't work. In this case,
> +provide the QEMU binary in env var: QEMU=/path/to/qemu-2.10+.
> +
> +== Make jobs ==
> +
> +The "-j$X" option in the make command line is not propagated into the VM,
> +specify "J=$X" to control the make jobs in the guest.
> +
> +== Debugging ==
> +
> +Add "DEBUG=1" and/or "V=1" to the make command to allow interactive debugging
> +and verbose output. If this is not enough, see the next section.
> +
> +== Manual invocation ==
> +
> +Each guest script is an executable script with the same command line options.
> +For example to work with the netbsd guest, use $QEMU_SRC/tests/vm/netbsd:
> +
> +    $ cd $QEMU_SRC/tests/vm
> +
> +    # To bootstrap the image
> +    $ ./netbsd --build-image --image /var/tmp/netbsd.img
> +    <...>
> +
> +    # To run an arbitrary command in guest (the output will not be echoed unless
> +    # --debug is added)
> +    $ ./netbsd --debug --image /var/tmp/netbsd.img uname -a
> +
> +    # To build QEMU in guest
> +    $ ./netbsd --debug --image /var/tmp/netbsd.img --build-qemu
> $QEMU_SRC

This doesn't work:

10:41:38 [alex@zen:~/l/q/q/t/vm] review/fam-vmbuild-v8(+2/-2) ± ./netbsd --debug --image netbsd.img --build-qemu /home/alex/lsrc/qemu/qemu.git/
DEBUG:root:Creating archive ./vm-test-9yVAeh.tmp/data-9b5f9.tar for src_dir dir: /home/alex/lsrc/qemu/qemu.git/
./scripts/archive-source.sh: 27: ./scripts/archive-source.sh: cannot create ./vm-test-9yVAeh.tmp/data-9b5f9.tar.list: Directory nonexistent
Failed to prepare guest environment
Traceback (most recent call last):
  File "/home/alex/lsrc/qemu/qemu.git/tests/vm/basevm.py", line 234, in main
    vm.add_source_dir(args.build_qemu)
  File "/home/alex/lsrc/qemu/qemu.git/tests/vm/basevm.py", line 140, in add_source_dir
    stdout=self._stdout, stderr=self._stderr)
  File "/usr/lib/python2.7/subprocess.py", line 541, in check_call
    raise CalledProcessError(retcode, cmd)
CalledProcessError: Command '['./scripts/archive-source.sh', './vm-test-9yVAeh.tmp/data-9b5f9.tar']' returned non-zero exit status 2

Either adjust the call to be from QEMU_SRC or make the call to
archive-source smarter.

> +
> +    # To get to an interactive shell
> +    $ ./netbsd --interactive --image /var/tmp/netbsd.img sh
> +
> +== Adding new guests ==
> +
> +Please look at existing guest scripts for how to add new guests.
> +
> +Most importantly, create a subclass of BaseVM and implement build_image()
> +method and define BUILD_SCRIPT, then finally call basevm.main() from the
> +script's main().
> +
> +  - Usually in build_image(), a template image is downloaded from a predefined
> +    URL. BaseVM._download_with_cache() takes care of the cache and the
> +    checksum, so consider using it.
> +
> +  - Once the image is downloaded, users, SSH server and QEMU build deps should
> +    be set up:
> +
> +    * Root password set to BaseVM.ROOT_PASS
> +    * User BaseVM.GUEST_USER is created, and password set to BaseVM.GUEST_PASS
> +    * SSH service is enabled and started on boot,
> +      $QEMU_SRC/tests/keys/id_rsa.pub is added to ssh's "authorized_keys" file
> +      of both root and the normal user
> +    * DHCP client service is enabled and started on boot, so that it can
> +      automatically configure the virtio-net-pci NIC and communicate with QEMU
> +      user net (10.0.2.2)
> +    * Necessary packages are installed to untar the source tarball and build
> +      QEMU
> +
> +  - Write a proper BUILD_SCRIPT template, which should be a shell script that
> +    untars a raw virtio-blk block device, which is the tarball data blob of the
> +    QEMU source tree, then configure/build it. Running "make check" is also
> +    recommended.
> +


--
Alex Bennée

  reply	other threads:[~2017-09-18  9:43 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-18  2:43 [Qemu-devel] [PATCH v8 00/13] tests: Add VM based build tests (for non-x86_64 and/or non-Linux) Fam Zheng
2017-09-18  2:43 ` [Qemu-devel] [PATCH v8 01/13] gitignore: Ignore vm test images Fam Zheng
2017-09-18  2:43 ` [Qemu-devel] [PATCH v8 02/13] qemu.py: Add "wait()" method Fam Zheng
2017-09-18  2:43 ` [Qemu-devel] [PATCH v8 03/13] scripts: Add archive-source.sh Fam Zheng
2017-09-18  9:26   ` Alex Bennée
2017-09-18 15:14   ` Eric Blake
2017-09-18  2:43 ` [Qemu-devel] [PATCH v8 04/13] tests: Add a test key pair Fam Zheng
2017-09-18 15:17   ` Eric Blake
2017-09-19  2:10     ` Fam Zheng
2017-09-18  2:43 ` [Qemu-devel] [PATCH v8 05/13] tests: Add vm test lib Fam Zheng
2017-09-18 10:14   ` Alex Bennée
2017-09-18  2:43 ` [Qemu-devel] [PATCH v8 06/13] tests: Add ubuntu.i386 image Fam Zheng
2017-09-18  2:43 ` [Qemu-devel] [PATCH v8 07/13] tests: Add FreeBSD image Fam Zheng
2017-09-18  2:43 ` [Qemu-devel] [PATCH v8 08/13] tests: Add NetBSD image Fam Zheng
2017-09-18  2:43 ` [Qemu-devel] [PATCH v8 09/13] tests: Add OpenBSD image Fam Zheng
2017-09-18  2:43 ` [Qemu-devel] [PATCH v8 10/13] Makefile: Add rules to run vm tests Fam Zheng
2017-09-18 11:42   ` Alex Bennée
2017-09-18  2:44 ` [Qemu-devel] [PATCH v8 11/13] MAINTAINERS: Add tests/vm entry Fam Zheng
2017-09-18  2:44 ` [Qemu-devel] [PATCH v8 12/13] tests: Add README for vm tests Fam Zheng
2017-09-18  9:43   ` Alex Bennée [this message]
2017-09-18 12:03     ` Fam Zheng
2017-09-18 15:20   ` Eric Blake
2017-09-18  2:44 ` [Qemu-devel] [PATCH v8 13/13] docker: Use archive-source.py Fam Zheng
2017-09-18  9:29   ` Alex Bennée
2017-09-18  3:09 ` [Qemu-devel] [PATCH v8 00/13] tests: Add VM based build tests (for non-x86_64 and/or non-Linux) no-reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87d16ojq9g.fsf@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=berrange@redhat.com \
    --cc=crosa@redhat.com \
    --cc=eblake@redhat.com \
    --cc=f4bug@amsat.org \
    --cc=famz@redhat.com \
    --cc=kamil@netbsd.org \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.