From nobody Sat Feb 7 05:24:22 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1503942724317410.7134948919005; Mon, 28 Aug 2017 10:52:04 -0700 (PDT) Received: from localhost ([::1]:40871 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dmOCf-0001PW-1B for importer@patchew.org; Mon, 28 Aug 2017 13:52:01 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33128) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dmO8C-0006WZ-O6 for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:47:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dmO8C-0001vw-45 for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:47:24 -0400 Received: from mx1.redhat.com ([209.132.183.28]:35552) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dmO8B-0001ux-Tz for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:47:24 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D681CC058EA9; Mon, 28 Aug 2017 17:47:22 +0000 (UTC) Received: from lemon.redhat.com (ovpn-12-121.pek2.redhat.com [10.72.12.121]) by smtp.corp.redhat.com (Postfix) with ESMTP id 815DA7FA48; Mon, 28 Aug 2017 17:47:18 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com D681CC058EA9 Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=famz@redhat.com From: Fam Zheng To: qemu-devel@nongnu.org Date: Tue, 29 Aug 2017 01:46:58 +0800 Message-Id: <20170828174707.20786-2-famz@redhat.com> In-Reply-To: <20170828174707.20786-1-famz@redhat.com> References: <20170828174707.20786-1-famz@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Mon, 28 Aug 2017 17:47:23 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v4 01/10] gitignore: Ignore vm test images X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Fam Zheng , Cleber Rosa , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Kamil Rytarowski , stefanha@redhat.com, pbonzini@redhat.com, =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Fam Zheng Reviewed-by: Stefan Hajnoczi Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index cf65316863..643e23e515 100644 --- a/.gitignore +++ b/.gitignore @@ -52,6 +52,8 @@ /vscclient /vhost-user-scsi /fsdev/virtfs-proxy-helper +/tests/vm/*.img +*.tmp *.[1-9] *.a *.aux --=20 2.13.5 From nobody Sat Feb 7 05:24:22 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1503942577633442.99813403125063; Mon, 28 Aug 2017 10:49:37 -0700 (PDT) Received: from localhost ([::1]:40859 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dmOAJ-0007hd-HU for importer@patchew.org; Mon, 28 Aug 2017 13:49:35 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33156) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dmO8H-0006Z1-M0 for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:47:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dmO8G-00021m-Un for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:47:29 -0400 Received: from mx1.redhat.com ([209.132.183.28]:41274) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dmO8G-00020r-OD for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:47:28 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 8D7244DAFC; Mon, 28 Aug 2017 17:47:27 +0000 (UTC) Received: from lemon.redhat.com (ovpn-12-121.pek2.redhat.com [10.72.12.121]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5E40E7FB47; Mon, 28 Aug 2017 17:47:23 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 8D7244DAFC Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=famz@redhat.com From: Fam Zheng To: qemu-devel@nongnu.org Date: Tue, 29 Aug 2017 01:46:59 +0800 Message-Id: <20170828174707.20786-3-famz@redhat.com> In-Reply-To: <20170828174707.20786-1-famz@redhat.com> References: <20170828174707.20786-1-famz@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Mon, 28 Aug 2017 17:47:27 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v4 02/10] qemu.py: Add "wait()" method X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Fam Zheng , Cleber Rosa , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Kamil Rytarowski , stefanha@redhat.com, pbonzini@redhat.com, =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Fam Zheng Reviewed-by: Stefan Hajnoczi --- scripts/qemu.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/scripts/qemu.py b/scripts/qemu.py index 880e3e8219..153f2d1564 100644 --- a/scripts/qemu.py +++ b/scripts/qemu.py @@ -143,6 +143,13 @@ class QEMUMachine(object): self._post_shutdown() raise =20 + def wait(self): + '''Wait for the VM to power off''' + self._popen.wait() + self._qmp.close() + self._load_io_log() + self._post_shutdown() + def shutdown(self): '''Terminate the VM and clean up''' if self.is_running(): --=20 2.13.5 From nobody Sat Feb 7 05:24:22 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1503942593165987.5158552387277; Mon, 28 Aug 2017 10:49:53 -0700 (PDT) Received: from localhost ([::1]:40861 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dmOAY-0007sP-Qk for importer@patchew.org; Mon, 28 Aug 2017 13:49:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33191) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dmO8R-0006e4-RK for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:47:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dmO8Q-00029n-6o for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:47:39 -0400 Received: from mx1.redhat.com ([209.132.183.28]:53036) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dmO8P-000293-SM for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:47:38 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id C3EC8356E6; Mon, 28 Aug 2017 17:47:36 +0000 (UTC) Received: from lemon.redhat.com (ovpn-12-121.pek2.redhat.com [10.72.12.121]) by smtp.corp.redhat.com (Postfix) with ESMTP id 313F17FA48; Mon, 28 Aug 2017 17:47:27 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com C3EC8356E6 Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=famz@redhat.com From: Fam Zheng To: qemu-devel@nongnu.org Date: Tue, 29 Aug 2017 01:47:00 +0800 Message-Id: <20170828174707.20786-4-famz@redhat.com> In-Reply-To: <20170828174707.20786-1-famz@redhat.com> References: <20170828174707.20786-1-famz@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Mon, 28 Aug 2017 17:47:36 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v4 03/10] tests: Add vm test lib X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Fam Zheng , Cleber Rosa , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Kamil Rytarowski , stefanha@redhat.com, pbonzini@redhat.com, =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This is the common code to implement a "VM test" to 1) Download and initialize a pre-defined VM that has necessary dependencies to build QEMU and SSH access. 2) Archive $SRC_PATH to a .tar file. 3) Boot the VM, and pass the source tar file to the guest. 4) SSH into the VM, untar the source tarball, build from the source. Signed-off-by: Fam Zheng --- tests/vm/basevm.py | 287 +++++++++++++++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 287 insertions(+) create mode 100755 tests/vm/basevm.py diff --git a/tests/vm/basevm.py b/tests/vm/basevm.py new file mode 100755 index 0000000000..d0095c5332 --- /dev/null +++ b/tests/vm/basevm.py @@ -0,0 +1,287 @@ +#!/usr/bin/env python +# +# VM testing base class +# +# Copyright (C) 2017 Red Hat Inc. +# +# Authors: +# Fam Zheng +# +# 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 logging +import time +import datetime +sys.path.append(os.path.join(os.path.dirname(__file__), "..", "..", "scrip= ts")) +from qemu import QEMUMachine +import subprocess +import hashlib +import optparse +import atexit +import tempfile +import shutil +import multiprocessing +import traceback + +SSH_KEY =3D """\ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAopAuOlmLV6LVHdFBj8/eeOwI9CqguIJPp7eAQSZvOiB4Ag/R +coEhl/RBbrV5Yc/SmSD4PTpJO/iM10RwliNjDb4a3I8q3sykRJu9c9PI/YsH8WN9 ++NH2NjKPtJIcKTu287IM5JYxyB6nDoOzILbTyJ1TDR/xH6qYEfBAyiblggdjcvhA +RTf93QIn39F/xLypXvT1K2O9BJEsnJ8lEUvB2UXhKo/JTfSeZF8wPBeowaP9EONk +7b+nuJOWHGg68Ji6wVi62tjwl2Szch6lxIhZBpnV7QNRKMfYHP6eIyF4pusazzZq +Telsq6xI2ghecWLzb/MF5A+rklsGx2FNuJSAJwIDAQABAoIBAHHi4o/8VZNivz0x +cWXn8erzKV6tUoWQvW85Lj/2RiwJvSlsnYZDkx5af1CpEE2HA/pFT8PNRqsd+MWC +7AEy710cVsM4BYerBFYQaYxwzblaoojo88LSjVPw3h5Z0iLM8+IMVd36nwuc9dpE +R8TecMZ1+U4Tl6BgqkK+9xToZRdPKdjS8L5MoFhGN+xY0vRbbJbGaV9Q0IHxLBkB +rEBV7T1mUynneCHRUQlJQEwJmKpT8MH3IjsUXlG5YvnuuvcQJSNTaW2iDLxuOKp8 +cxW8+qL88zpb1D5dppoIu6rlrugN0azSq70ruFJQPc/A8GQrDKoGgRQiagxNY3u+ +vHZzXlECgYEA0dKO3gfkSxsDBb94sQwskMScqLhcKhztEa8kPxTx6Yqh+x8/scx3 +XhJyOt669P8U1v8a/2Al+s81oZzzfQSzO1Q7gEwSrgBcRMSIoRBUw9uYcy02ngb/ +j/ng3DGivfJztjjiSJwb46FHkJ2JR8mF2UisC6UMXk3NgFY/3vWQx78CgYEAxlcG +T3hfSWSmTgKRczMJuHQOX9ULfTBIqwP5VqkkkiavzigGRirzb5lgnmuTSPTpF0LB +XVPjR2M4q+7gzP0Dca3pocrvLEoxjwIKnCbYKnyyvnUoE9qHv4Kr+vDbgWpa2LXG +JbLmE7tgTCIp20jOPPT4xuDvlbzQZBJ5qCQSoZkCgYEAgrotSSihlCnAOFSTXbu4 +CHp3IKe8xIBBNENq0eK61kcJpOxTQvOha3sSsJsU4JAM6+cFaxb8kseHIqonCj1j +bhOM/uJmwQJ4el/4wGDsbxriYOBKpyq1D38gGhDS1IW6kk3erl6VAb36WJ/OaGum +eTpN9vNeQWM4Jj2WjdNx4QECgYAwTdd6mU1TmZCrJRL5ZG+0nYc2rbMrnQvFoqUi +BvWiJovggHzur90zy73tNzPaq9Ls2FQxf5G1vCN8NCRJqEEjeYCR59OSDMu/EXc2 +CnvQ9SevHOdS1oEDEjcCWZCMFzPi3XpRih1gptzQDe31uuiHjf3cqcGPzTlPdfRt +D8P92QKBgC4UaBvIRwREVJsdZzpIzm224Bpe8LOmA7DeTnjlT0b3lkGiBJ36/Q0p +VhYh/6cjX4/iuIs7gJbGon7B+YPB8scmOi3fj0+nkJAONue1mMfBNkba6qQTc6Y2 +5mEKw2/O7/JpND7ucU3OK9plcw/qnrWDgHxl0Iz95+OzUIIagxne +-----END RSA PRIVATE KEY----- +""" +SSH_PUB_KEY =3D """\ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCikC46WYtXotUd0UGPz9547Aj0KqC4gk+nt4= BBJm86IHgCD9FygSGX9EFutXlhz9KZIPg9Okk7+IzXRHCWI2MNvhrcjyrezKREm71z08j9iwfxY= 3340fY2Mo+0khwpO7bzsgzkljHIHqcOg7MgttPInVMNH/EfqpgR8EDKJuWCB2Ny+EBFN/3dAiff= 0X/EvKle9PUrY70EkSycnyURS8HZReEqj8lN9J5kXzA8F6jBo/0Q42Ttv6e4k5YcaDrwmLrBWLr= a2PCXZLNyHqXEiFkGmdXtA1Eox9gc/p4jIXim6xrPNmpN6WyrrEjaCF5xYvNv8wXkD6uSWwbHYU= 24lIAn qemu-vm-key +""" + +class BaseVM(object): + GUEST_USER =3D "qemu" + GUEST_PASS =3D "qemupass" + ROOT_PASS =3D "qemupass" + + # The script to run in the guest that builds QEMU + BUILD_SCRIPT =3D "" + # The guest name, to be overridden by subclasses + name =3D "#base" + def __init__(self, debug=3DFalse, vcpus=3DNone): + self._guest =3D None + self._tmpdir =3D tempfile.mkdtemp(prefix=3D"qemu-vm-") + atexit.register(shutil.rmtree, self._tmpdir) + + self._ssh_key_file =3D os.path.join(self._tmpdir, "id_rsa") + open(self._ssh_key_file, "w").write(SSH_KEY) + subprocess.check_call(["chmod", "600", self._ssh_key_file]) + + self._ssh_pub_key_file =3D os.path.join(self._tmpdir, "id_rsa.pub") + open(self._ssh_pub_key_file, "w").write(SSH_PUB_KEY) + + self.debug =3D debug + self._stderr =3D sys.stderr + self._devnull =3D open("/dev/null", "w") + if self.debug: + self._stdout =3D sys.stdout + else: + self._stdout =3D self._devnull + self._args =3D [ \ + "-nodefaults", "-m", "2G", + "-cpu", "host", + "-netdev", "user,id=3Dvnet,hostfwd=3D:0.0.0.0:0-:22", + "-device", "virtio-net-pci,netdev=3Dvnet", + "-vnc", ":0,to=3D20", + "-serial", "file:%s" % os.path.join(self._tmpdir, "serial.out"= )] + if vcpus: + self._args +=3D ["-smp", str(vcpus)] + if os.access("/dev/kvm", os.R_OK | os.W_OK): + self._args +=3D ["-enable-kvm"] + else: + logging.info("KVM not available, not using -enable-kvm") + self._data_args =3D [] + + def _download_with_cache(self, url, sha256sum=3DNone): + def check_sha256sum(fname): + if not sha256sum: + return True + checksum =3D subprocess.check_output(["sha256sum", fname]).spl= it()[0] + return sha256sum =3D=3D checksum + + cache_dir =3D os.path.expanduser("~/.cache/qemu-vm/download") + if not os.path.exists(cache_dir): + os.makedirs(cache_dir) + fname =3D os.path.join(cache_dir, hashlib.sha1(url).hexdigest()) + if os.path.exists(fname) and check_sha256sum(fname): + return fname + logging.debug("Downloading %s to %s...", url, fname) + subprocess.check_call(["wget", "-c", url, "-O", fname + ".download= "], + stdout=3Dself._stdout, stderr=3Dself._stderr) + os.rename(fname + ".download", fname) + return fname + + def _ssh_do(self, user, cmd, check, interactive=3DFalse): + ssh_cmd =3D ["ssh", "-q", + "-o", "StrictHostKeyChecking=3Dno", + "-o", "UserKnownHostsFile=3D/dev/null", + "-o", "ConnectTimeout=3D1", + "-p", self.ssh_port, "-i", self._ssh_key_file] + if interactive: + ssh_cmd +=3D ['-t'] + assert not isinstance(cmd, str) + ssh_cmd +=3D ["%s@127.0.0.1" % user] + list(cmd) + logging.debug("ssh_cmd: %s", " ".join(ssh_cmd)) + r =3D subprocess.call(ssh_cmd, + stdin=3Dsys.stdin if interactive else self._de= vnull, + stdout=3Dsys.stdout if interactive else self._= stdout, + stderr=3Dsys.stderr if interactive else self._= stderr) + if check and r !=3D 0: + raise Exception("SSH command failed: %s" % cmd) + return r + + def ssh(self, *cmd): + return self._ssh_do(self.GUEST_USER, cmd, False) + + def ssh_interactive(self, *cmd): + return self._ssh_do(self.GUEST_USER, cmd, False, True) + + def ssh_root(self, *cmd): + return self._ssh_do("root", cmd, False) + + def ssh_check(self, *cmd): + self._ssh_do(self.GUEST_USER, cmd, True) + + def ssh_root_check(self, *cmd): + self._ssh_do("root", cmd, True) + + def build_image(self, img): + raise NotImplementedError + + def add_source_dir(self, data_dir): + name =3D "data-" + hashlib.sha1(data_dir).hexdigest()[:5] + tarfile =3D os.path.join(self._tmpdir, name + ".tar") + logging.debug("Creating archive %s for data dir: %s", tarfile, dat= a_dir) + if subprocess.call("type gtar", stdout=3Dself._devnull, + stderr=3Dself._devnull, shell=3DTrue) =3D=3D 0: + tar_cmd =3D "gtar" + else: + tar_cmd =3D "tar" + subprocess.check_call([tar_cmd, + "--exclude-vcs", + "--exclude=3Dtests/vm/*.img", + "--exclude=3Dtests/vm/*.img.*", + "--exclude=3D*.d", + "--exclude=3D*.o", + "--exclude=3Ddocker-src.*", + "-cf", tarfile, '.'], cwd=3Ddata_dir, + stdin=3Dself._devnull, stdout=3Dself._stdout) + self._data_args +=3D ["-drive", + "file=3D%s,if=3Dnone,id=3D%s,cache=3Dwriteback= ,format=3Draw" % \ + (tarfile, name), + "-device", + "virtio-blk,drive=3D%s,serial=3D%s,bootindex= =3D1" % (name, name)] + + def boot(self, img, extra_args=3D[]): + args =3D self._args + [ + "-device", "VGA", + "-drive", "file=3D%s,if=3Dnone,id=3Ddrive0,cache=3Dwriteback" = % img, + "-device", "virtio-blk,drive=3Ddrive0,bootindex=3D0"] + args +=3D self._data_args + extra_args + logging.debug("QEMU args: %s", " ".join(args)) + guest =3D QEMUMachine(binary=3Dos.environ.get("QEMU", "qemu-system= -x86_64"), + args=3Dargs) + guest.launch() + atexit.register(self.shutdown) + self._guest =3D guest + usernet_info =3D guest.qmp("human-monitor-command", + command_line=3D"info usernet") + self.ssh_port =3D None + for l in usernet_info["return"].splitlines(): + fields =3D l.split() + if "TCP[HOST_FORWARD]" in fields and "22" in fields: + self.ssh_port =3D l.split()[3] + if not self.ssh_port: + raise Exception("Cannot find ssh port from 'info usernet':\n%s= " % \ + usernet_info) + + def wait_ssh(self, seconds=3D120): + starttime =3D datetime.datetime.now() + guest_up =3D False + while (datetime.datetime.now() - starttime).total_seconds() < seco= nds: + if self.ssh("exit 0") =3D=3D 0: + guest_up =3D True + break + time.sleep(1) + if not guest_up: + raise TimeoutError("Timeout while waiting for guest ssh") + + def shutdown(self): + self._guest.shutdown() + + def wait(self): + self._guest.wait() + + def qmp(self, *args, **kwargs): + return self._guest.qmp(*args, **kwargs) + +def parse_args(vm_name): + parser =3D optparse.OptionParser(description=3D""" + VM test utility. Exit codes: 0 =3D success, 1 =3D command line error,= 2 =3D environment initialization failed, 3 =3D test command failed""") + parser.add_option("--debug", "-D", action=3D"store_true", + help=3D"enable debug output") + parser.add_option("--image", "-i", default=3D"%s.img" % vm_name, + help=3D"image file name") + parser.add_option("--force", "-f", action=3D"store_true", + help=3D"force build image even if image exists") + parser.add_option("--jobs", type=3Dint, default=3Dmultiprocessing.cpu_= count(), + help=3D"number of virtual CPUs") + parser.add_option("--build-image", "-b", action=3D"store_true", + help=3D"build image") + parser.add_option("--build-qemu", + help=3D"build QEMU from source in guest") + parser.add_option("--interactive", "-I", action=3D"store_true", + help=3D"Interactively run command") + parser.disable_interspersed_args() + return parser.parse_args() + +def main(vmcls): + try: + args, argv =3D parse_args(vmcls.name) + if not argv and not args.build_qemu and not args.build_image: + print "Nothing to do?" + return 1 + if args.debug: + logging.getLogger().setLevel(logging.DEBUG) + vm =3D vmcls(debug=3Dargs.debug, vcpus=3Dargs.jobs) + if args.build_image: + if os.path.exists(args.image) and not args.force: + sys.stderr.writelines(["Image file exists: %s\n" % args.im= age, + "Use --force option to overwrite\n"]) + return 1 + return vm.build_image(args.image) + if args.build_qemu: + vm.add_source_dir(args.build_qemu) + cmd =3D [vm.BUILD_SCRIPT.format( + configure_opts =3D " ".join(argv), + jobs=3Dargs.jobs)] + else: + cmd =3D argv + vm.boot(args.image + ",snapshot=3Don") + vm.wait_ssh() + except Exception as e: + if isinstance(e, SystemExit) and e.code =3D=3D 0: + return 0 + sys.stderr.write("Failed to prepare guest environment\n") + traceback.print_exc() + return 2 + + if args.interactive: + if vm.ssh_interactive(*cmd) =3D=3D 0: + return 0 + vm.ssh_interactive() + return 3 + else: + if vm.ssh(*cmd) !=3D 0: + return 3 --=20 2.13.5 From nobody Sat Feb 7 05:24:22 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1503942750441815.4053396522862; Mon, 28 Aug 2017 10:52:30 -0700 (PDT) Received: from localhost ([::1]:40872 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dmOD6-0001kN-CI for importer@patchew.org; Mon, 28 Aug 2017 13:52:28 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33223) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dmO8X-0006hO-2l for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:47:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dmO8U-0002DS-Tc for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:47:45 -0400 Received: from mx1.redhat.com ([209.132.183.28]:53228) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dmO8U-0002Ch-Kg for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:47:42 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 8432A356E6; Mon, 28 Aug 2017 17:47:41 +0000 (UTC) Received: from lemon.redhat.com (ovpn-12-121.pek2.redhat.com [10.72.12.121]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4D1FD7FA4D; Mon, 28 Aug 2017 17:47:37 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 8432A356E6 Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=famz@redhat.com From: Fam Zheng To: qemu-devel@nongnu.org Date: Tue, 29 Aug 2017 01:47:01 +0800 Message-Id: <20170828174707.20786-5-famz@redhat.com> In-Reply-To: <20170828174707.20786-1-famz@redhat.com> References: <20170828174707.20786-1-famz@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Mon, 28 Aug 2017 17:47:41 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v4 04/10] tests: Add ubuntu.i386 image X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Fam Zheng , Cleber Rosa , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Kamil Rytarowski , stefanha@redhat.com, pbonzini@redhat.com, =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This adds a 32bit guest. The official LTS cloud image is downloaded and initialized with cloud-init. Signed-off-by: Fam Zheng --- 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 +# +# 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 =3D "ubuntu.i386" + BUILD_SCRIPT =3D """ + 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 =3D self._tmpdir + mdata =3D open(os.path.join(cidir, "meta-data"), "w") + mdata.writelines(["instance-id: ubuntu-vm-0\n", + "local-hostname: ubuntu-guest\n"]) + mdata.close() + udata =3D 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_PAS= S), + " expire: False\n", + "users:\n", + " - name: %s\n" % self.GUEST_USER, + " sudo: ALL=3D(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=3Dcidir, + stdin=3Dself._devnull, stdout=3Dself._stdou= t, + stderr=3Dself._stdout) + return os.path.join(cidir, "cloud-init.iso") + + def build_image(self, img): + cimg =3D self._download_with_cache("https://cloud-images.ubuntu.co= m/releases/16.04/release/ubuntu-16.04-server-cloudimg-i386-disk1.img") + img_tmp =3D 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 =3D ["-cdrom", self._gen_cloud_init_= iso()]) + self.wait_ssh() + self.ssh_root_check("touch /etc/cloud/cloud-init.disabled") + self.ssh_root_check("apt-get update") + self.ssh_root_check("apt-get install -y cloud-initramfs-growroot") + # Don't check the status in case the guest hang up too quickly + self.ssh_root("sync && reboot") + time.sleep(5) + self.wait_ssh() + # The previous update sometimes doesn't survive a reboot, so do it= again + self.ssh_root_check("apt-get update") + self.ssh_root_check("apt-get build-dep -y qemu") + self.ssh_root_check("apt-get install -y libfdt-dev") + self.ssh_root("poweroff") + self.wait() + if os.path.exists(img): + os.remove(img) + os.rename(img_tmp, img) + return 0 + +if __name__ =3D=3D "__main__": + sys.exit(basevm.main(UbuntuX86VM)) --=20 2.13.5 From nobody Sat Feb 7 05:24:22 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1503942763569342.67128308331894; Mon, 28 Aug 2017 10:52:43 -0700 (PDT) Received: from localhost ([::1]:40874 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dmODJ-0001vg-Nq for importer@patchew.org; Mon, 28 Aug 2017 13:52:41 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33273) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dmO8b-0006jy-LR for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:47:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dmO8a-0002Hi-4J for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:47:49 -0400 Received: from mx1.redhat.com ([209.132.183.28]:42590) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dmO8Z-0002HJ-UD for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:47:48 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D974846217; Mon, 28 Aug 2017 17:47:46 +0000 (UTC) Received: from lemon.redhat.com (ovpn-12-121.pek2.redhat.com [10.72.12.121]) by smtp.corp.redhat.com (Postfix) with ESMTP id 24D3E7FA50; Mon, 28 Aug 2017 17:47:41 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com D974846217 Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=famz@redhat.com From: Fam Zheng To: qemu-devel@nongnu.org Date: Tue, 29 Aug 2017 01:47:02 +0800 Message-Id: <20170828174707.20786-6-famz@redhat.com> In-Reply-To: <20170828174707.20786-1-famz@redhat.com> References: <20170828174707.20786-1-famz@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Mon, 28 Aug 2017 17:47:47 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v4 05/10] tests: Add FreeBSD image X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Fam Zheng , Cleber Rosa , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Kamil Rytarowski , stefanha@redhat.com, pbonzini@redhat.com, =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The image is prepared following instructions as in: https://wiki.qemu.org/Hosts/BSD Signed-off-by: Fam Zheng --- tests/vm/freebsd | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100755 tests/vm/freebsd diff --git a/tests/vm/freebsd b/tests/vm/freebsd new file mode 100755 index 0000000000..6840da0bf0 --- /dev/null +++ b/tests/vm/freebsd @@ -0,0 +1,42 @@ +#!/usr/bin/env python +# +# FreeBSD VM image +# +# Copyright (C) 2017 Red Hat Inc. +# +# Authors: +# Fam Zheng +# +# 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 + +class FreeBSDVM(basevm.BaseVM): + name =3D "freebsd" + BUILD_SCRIPT =3D """ + set -e; + cd $(mktemp -d /var/tmp/qemu-test.XXXXXX); + tar -xf /dev/vtbd1; + ./configure {configure_opts}; + gmake -j{jobs}; + gmake check; + """ + + def build_image(self, img): + cimg =3D self._download_with_cache("http://download.patchew.org/fr= eebsd-11.1-amd64.img.xz", + sha256sum=3D'adcb771549b37bc63826c501f05121a206ed3d9f55f49= 145908f7e1432d65891') + img_tmp_xz =3D img + ".tmp.xz" + img_tmp =3D img + ".tmp" + subprocess.check_call(["cp", "-f", cimg, img_tmp_xz]) + subprocess.check_call(["xz", "-df", img_tmp_xz]) + if os.path.exists(img): + os.remove(img) + os.rename(img_tmp, img) + +if __name__ =3D=3D "__main__": + sys.exit(basevm.main(FreeBSDVM)) --=20 2.13.5 From nobody Sat Feb 7 05:24:22 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1503942910898846.1687642227583; Mon, 28 Aug 2017 10:55:10 -0700 (PDT) Received: from localhost ([::1]:40880 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dmOFg-0003t8-PC for importer@patchew.org; Mon, 28 Aug 2017 13:55:08 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33346) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dmO8r-0006x4-Od for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:48:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dmO8n-0002Ry-S1 for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:48:05 -0400 Received: from mx1.redhat.com ([209.132.183.28]:43394) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dmO8n-0002RO-LY for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:48:01 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 9029613A97; Mon, 28 Aug 2017 17:48:00 +0000 (UTC) Received: from lemon.redhat.com (ovpn-12-121.pek2.redhat.com [10.72.12.121]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5897188D69; Mon, 28 Aug 2017 17:47:47 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 9029613A97 Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=famz@redhat.com From: Fam Zheng To: qemu-devel@nongnu.org Date: Tue, 29 Aug 2017 01:47:03 +0800 Message-Id: <20170828174707.20786-7-famz@redhat.com> In-Reply-To: <20170828174707.20786-1-famz@redhat.com> References: <20170828174707.20786-1-famz@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Mon, 28 Aug 2017 17:48:00 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v4 06/10] tests: Add NetBSD image X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Fam Zheng , Cleber Rosa , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Kamil Rytarowski , stefanha@redhat.com, pbonzini@redhat.com, =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The image is prepared following instructions as in: https://wiki.qemu.org/Hosts/BSD Signed-off-by: Fam Zheng Reviewed-by: Kamil Rytarowski --- tests/vm/netbsd | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100755 tests/vm/netbsd diff --git a/tests/vm/netbsd b/tests/vm/netbsd new file mode 100755 index 0000000000..559e89c8a6 --- /dev/null +++ b/tests/vm/netbsd @@ -0,0 +1,42 @@ +#!/usr/bin/env python +# +# NetBSD VM image +# +# Copyright (C) 2017 Red Hat Inc. +# +# Authors: +# Fam Zheng +# +# 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 + +class NetBSDVM(basevm.BaseVM): + name =3D "netbsd" + BUILD_SCRIPT =3D """ + set -e; + cd $(mktemp -d /var/tmp/qemu-test.XXXXXX); + tar -xf /dev/rld1a; + ./configure --python=3Dpython2.7 {configure_opts}; + gmake -j{jobs}; + gmake check; + """ + + def build_image(self, img): + cimg =3D self._download_with_cache("http://download.patchew.org/ne= tbsd-7.1-amd64.img.xz", + sha256sum=3D'b633d565b0eac3d02015= cd0c81440bd8a7a8df8512615ac1ee05d318be015732') + img_tmp_xz =3D img + ".tmp.xz" + img_tmp =3D img + ".tmp" + subprocess.check_call(["cp", "-f", cimg, img_tmp_xz]) + subprocess.check_call(["xz", "-df", img_tmp_xz]) + if os.path.exists(img): + os.remove(img) + os.rename(img_tmp, img) + +if __name__ =3D=3D "__main__": + sys.exit(basevm.main(NetBSDVM)) --=20 2.13.5 From nobody Sat Feb 7 05:24:22 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1503942756995696.0919769452134; Mon, 28 Aug 2017 10:52:36 -0700 (PDT) Received: from localhost ([::1]:40873 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dmODD-0001of-1W for importer@patchew.org; Mon, 28 Aug 2017 13:52:35 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33375) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dmO8x-00072I-MY for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:48:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dmO8w-0002XS-OI for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:48:11 -0400 Received: from mx1.redhat.com ([209.132.183.28]:19200) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dmO8w-0002Wz-Hb for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:48:10 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 5EF9881DE7; Mon, 28 Aug 2017 17:48:09 +0000 (UTC) Received: from lemon.redhat.com (ovpn-12-121.pek2.redhat.com [10.72.12.121]) by smtp.corp.redhat.com (Postfix) with ESMTP id 29D027FA5C; Mon, 28 Aug 2017 17:48:00 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 5EF9881DE7 Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=famz@redhat.com From: Fam Zheng To: qemu-devel@nongnu.org Date: Tue, 29 Aug 2017 01:47:04 +0800 Message-Id: <20170828174707.20786-8-famz@redhat.com> In-Reply-To: <20170828174707.20786-1-famz@redhat.com> References: <20170828174707.20786-1-famz@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Mon, 28 Aug 2017 17:48:09 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v4 07/10] tests: Add OpenBSD image X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Fam Zheng , Cleber Rosa , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Kamil Rytarowski , stefanha@redhat.com, pbonzini@redhat.com, =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The image is prepared following instructions as in: https://wiki.qemu.org/Hosts/BSD Signed-off-by: Fam Zheng --- tests/vm/openbsd | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100755 tests/vm/openbsd diff --git a/tests/vm/openbsd b/tests/vm/openbsd new file mode 100755 index 0000000000..57b10105f7 --- /dev/null +++ b/tests/vm/openbsd @@ -0,0 +1,43 @@ +#!/usr/bin/env python +# +# OpenBSD VM image +# +# Copyright (C) 2017 Red Hat Inc. +# +# Authors: +# Fam Zheng +# +# 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 + +class OpenBSDVM(basevm.BaseVM): + name =3D "openbsd" + BUILD_SCRIPT =3D """ + set -e; + cd $(mktemp -d /var/tmp/qemu-test.XXXXXX); + tar -xf /dev/rsd1c; + ./configure --cc=3Dx86_64-unknown-openbsd6.1-gcc-4.9.4 --python=3D= python2.7 {configure_opts}; + gmake -j{jobs}; + # XXX: "gmake check" seems to always hang or fail + #gmake check; + """ + + def build_image(self, img): + cimg =3D self._download_with_cache("http://download.patchew.org/op= enbsd-6.1-amd64.img.xz", + sha256sum=3D'8c6cedc483e602cfee5e04f0406c64eb99138495e8ca5= 80bc0293bcf0640c1bf') + img_tmp_xz =3D img + ".tmp.xz" + img_tmp =3D img + ".tmp" + subprocess.check_call(["cp", "-f", cimg, img_tmp_xz]) + subprocess.check_call(["xz", "-df", img_tmp_xz]) + if os.path.exists(img): + os.remove(img) + os.rename(img_tmp, img) + +if __name__ =3D=3D "__main__": + sys.exit(basevm.main(OpenBSDVM)) --=20 2.13.5 From nobody Sat Feb 7 05:24:22 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 150394288537777.62562371744502; Mon, 28 Aug 2017 10:54:45 -0700 (PDT) Received: from localhost ([::1]:40879 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dmOFH-0003XE-Fb for importer@patchew.org; Mon, 28 Aug 2017 13:54:43 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33457) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dmO96-00079v-6W for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:48:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dmO95-0002d5-53 for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:48:20 -0400 Received: from mx1.redhat.com ([209.132.183.28]:54728) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dmO94-0002cU-SE for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:48:19 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id C4A8D80099; Mon, 28 Aug 2017 17:48:17 +0000 (UTC) Received: from lemon.redhat.com (ovpn-12-121.pek2.redhat.com [10.72.12.121]) by smtp.corp.redhat.com (Postfix) with ESMTP id DD1057FA5C; Mon, 28 Aug 2017 17:48:09 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com C4A8D80099 Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=famz@redhat.com From: Fam Zheng To: qemu-devel@nongnu.org Date: Tue, 29 Aug 2017 01:47:05 +0800 Message-Id: <20170828174707.20786-9-famz@redhat.com> In-Reply-To: <20170828174707.20786-1-famz@redhat.com> References: <20170828174707.20786-1-famz@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Mon, 28 Aug 2017 17:48:17 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v4 08/10] Makefile: Add rules to run vm tests X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Fam Zheng , Cleber Rosa , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Kamil Rytarowski , stefanha@redhat.com, pbonzini@redhat.com, =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Fam Zheng Reviewed-by: Stefan Hajnoczi --- Makefile | 2 ++ configure | 2 +- tests/vm/Makefile.include | 40 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 tests/vm/Makefile.include diff --git a/Makefile b/Makefile index 81447b1f08..2798a5ca69 100644 --- a/Makefile +++ b/Makefile @@ -813,6 +813,7 @@ endif -include $(wildcard *.d tests/*.d) =20 include $(SRC_PATH)/tests/docker/Makefile.include +include $(SRC_PATH)/tests/vm/Makefile.include =20 .PHONY: help help: @@ -836,6 +837,7 @@ help: @echo 'Test targets:' @echo ' check - Run all tests (check-help for details)' @echo ' docker - Help about targets running tests inside Docke= r containers' + @echo ' vm-test - Help about targets running tests inside VM' @echo '' @echo 'Documentation targets:' @echo ' html info pdf txt' diff --git a/configure b/configure index dd73cce62f..9a3052e9ad 100755 --- a/configure +++ b/configure @@ -6544,7 +6544,7 @@ if test "$ccache_cpp2" =3D "yes"; then fi =20 # build tree in object directory in case the source is not in the current = directory -DIRS=3D"tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/q= api-schema tests/tcg/xtensa tests/qemu-iotests" +DIRS=3D"tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/q= api-schema tests/tcg/xtensa tests/qemu-iotests tests/vm" DIRS=3D"$DIRS docs docs/interop fsdev" DIRS=3D"$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw" DIRS=3D"$DIRS roms/seabios roms/vgabios" diff --git a/tests/vm/Makefile.include b/tests/vm/Makefile.include new file mode 100644 index 0000000000..6e133ae2a6 --- /dev/null +++ b/tests/vm/Makefile.include @@ -0,0 +1,40 @@ +# Makefile for VM tests + +.PHONY: vm-build-all + +IMAGES :=3D ubuntu.i386 freebsd netbsd openbsd +IMAGE_FILES :=3D $(patsubst %, tests/vm/%.img, $(IMAGES)) + +.PRECIOUS: $(IMAGE_FILES) + +vm-test: + @echo "vm-test: Test QEMU in preconfigured virtual machines" + @echo + @echo " vm-build-ubuntu.i386 - Build QEMU in ubuntu i386 VM" + @echo " vm-build-freebsd - Build QEMU in FreeBSD VM" + @echo " vm-build-netbsd - Build QEMU in NetBSD VM" + @echo " vm-build-freebsd - Build QEMU in OpenBSD VM" + +vm-build-all: $(addprefix vm-build-, $(IMAGES)) + +tests/vm/%.img: $(SRC_PATH)/tests/vm/% + $(call quiet-command, \ + $(SRC_PATH)/tests/vm/$* \ + $(if $(V)$(DEBUG), --debug) \ + --image "$@" \ + --force \ + --build-image $@, \ + " VM-IMAGE $*") + + +# Build in VM $(IMAGE) +vm-build-%: tests/vm/%.img + $(call quiet-command, \ + $(SRC_PATH)/tests/vm/$* \ + $(if $(V)$(DEBUG), --debug) \ + $(if $(DEBUG), --interactive) \ + $(if $(J),--jobs $(J)) \ + --image "$<" \ + --build-qemu $(SRC_PATH), \ + " VM-BUILD $*") + --=20 2.13.5 From nobody Sat Feb 7 05:24:22 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1503943043796433.29210698377426; Mon, 28 Aug 2017 10:57:23 -0700 (PDT) Received: from localhost ([::1]:40896 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dmOHp-00061J-85 for importer@patchew.org; Mon, 28 Aug 2017 13:57:21 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33523) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dmO9D-0007E0-NC for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:48:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dmO99-0002gz-SP for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:48:27 -0400 Received: from mx1.redhat.com ([209.132.183.28]:48626) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dmO99-0002gX-LE for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:48:23 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 9561881DE6; Mon, 28 Aug 2017 17:48:22 +0000 (UTC) Received: from lemon.redhat.com (ovpn-12-121.pek2.redhat.com [10.72.12.121]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4CFDC7FA48; Mon, 28 Aug 2017 17:48:18 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 9561881DE6 Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=famz@redhat.com From: Fam Zheng To: qemu-devel@nongnu.org Date: Tue, 29 Aug 2017 01:47:06 +0800 Message-Id: <20170828174707.20786-10-famz@redhat.com> In-Reply-To: <20170828174707.20786-1-famz@redhat.com> References: <20170828174707.20786-1-famz@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Mon, 28 Aug 2017 17:48:22 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v4 09/10] MAINTAINERS: Add tests/vm entry X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Fam Zheng , Cleber Rosa , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Kamil Rytarowski , stefanha@redhat.com, pbonzini@redhat.com, =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Fam Zheng Reviewed-by: Stefan Hajnoczi --- MAINTAINERS | 1 + 1 file changed, 1 insertion(+) diff --git a/MAINTAINERS b/MAINTAINERS index ccee28b12d..0ed607d003 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1881,6 +1881,7 @@ S: Maintained F: .travis.yml F: .shippable.yml F: tests/docker/ +F: tests/vm/ W: https://travis-ci.org/qemu/qemu W: https://app.shippable.com/github/qemu/qemu W: http://patchew.org/QEMU/ --=20 2.13.5 From nobody Sat Feb 7 05:24:22 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 150394291583290.91499716810927; Mon, 28 Aug 2017 10:55:15 -0700 (PDT) Received: from localhost ([::1]:40882 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dmOFl-0003x6-PY for importer@patchew.org; Mon, 28 Aug 2017 13:55:13 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33555) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dmO9F-0007EY-Rz for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:48:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dmO9E-0002ik-Sm for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:48:29 -0400 Received: from mx1.redhat.com ([209.132.183.28]:48798) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dmO9E-0002iM-Ie for qemu-devel@nongnu.org; Mon, 28 Aug 2017 13:48:28 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7F8AE81DF1; Mon, 28 Aug 2017 17:48:27 +0000 (UTC) Received: from lemon.redhat.com (ovpn-12-121.pek2.redhat.com [10.72.12.121]) by smtp.corp.redhat.com (Postfix) with ESMTP id 24F177FA48; Mon, 28 Aug 2017 17:48:22 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 7F8AE81DF1 Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=famz@redhat.com From: Fam Zheng To: qemu-devel@nongnu.org Date: Tue, 29 Aug 2017 01:47:07 +0800 Message-Id: <20170828174707.20786-11-famz@redhat.com> In-Reply-To: <20170828174707.20786-1-famz@redhat.com> References: <20170828174707.20786-1-famz@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Mon, 28 Aug 2017 17:48:27 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v4 10/10] tests: Add README for vm tests X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Fam Zheng , Cleber Rosa , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Kamil Rytarowski , stefanha@redhat.com, pbonzini@redhat.com, =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Fam Zheng --- tests/vm/README | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 63 insertions(+) create mode 100644 tests/vm/README diff --git a/tests/vm/README b/tests/vm/README new file mode 100644 index 0000000000..66d53cff60 --- /dev/null +++ b/tests/vm/README @@ -0,0 +1,63 @@ +=3D=3D=3D VM test suite to run build in guests =3D=3D=3D + +=3D=3D Intro =3D=3D + +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". + +=3D=3D Quick start =3D=3D + +Run "make vm-test" to list available make targets. + +=3D=3D Manual invocation =3D=3D + +Each guest script is an executable script with the same command line optio= ns. +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 /tmp/netbsd.img uname -a + + # To build QEMU in guest + $ ./netbsd --debug --image /tmp/netbsd.img --build-qemu $QEMU_SRC + + # To get to an interactive shell + $ ./netbsd --interactive --image /tmp/netbsd.img sh + +=3D=3D Adding new guests =3D=3D + +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 predef= ined + 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 sh= ould + 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, BaseVM.SSH_PUB_KEY is ad= ded + to authorized_keys 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 bui= ld + QEMU + + - Write a proper BUILD_SCRIPT template, which should be a shell script t= hat + untars a raw virtio-blk block device, which is the tarball data blob o= f the + QEMU source tree, then configure/build it. Running "make check" is also + recommended. + --=20 2.13.5