From patchwork Fri Jul 13 07:18:29 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Fam Zheng X-Patchwork-Id: 10522681 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 8F5B860626 for ; Fri, 13 Jul 2018 07:20:29 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 71C7229960 for ; Fri, 13 Jul 2018 07:20:29 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 6F8E029959; Fri, 13 Jul 2018 07:20:29 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00, MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 1A27529959 for ; Fri, 13 Jul 2018 07:20:27 +0000 (UTC) Received: from localhost ([::1]:35612 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fdsNO-0000i6-9c for patchwork-qemu-devel@patchwork.kernel.org; Fri, 13 Jul 2018 03:20:26 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52801) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fdsLu-0008FC-UU for qemu-devel@nongnu.org; Fri, 13 Jul 2018 03:19:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fdsLZ-0006HO-UA for qemu-devel@nongnu.org; Fri, 13 Jul 2018 03:18:54 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:42270 helo=mx1.redhat.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fdsLZ-0006Dx-3w for qemu-devel@nongnu.org; Fri, 13 Jul 2018 03:18:33 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 006B740122CF; Fri, 13 Jul 2018 07:18:32 +0000 (UTC) Received: from localhost (ovpn-12-84.pek2.redhat.com [10.72.12.84]) by smtp.corp.redhat.com (Postfix) with ESMTP id 44D6B1C67A; Fri, 13 Jul 2018 07:18:30 +0000 (UTC) Date: Fri, 13 Jul 2018 15:18:29 +0800 From: Fam Zheng To: Philippe =?iso-8859-1?Q?Mathieu-Daud=E9?= Message-ID: <20180713071829.GB3916@lemon.usersys.redhat.com> References: <20180712012829.20231-1-famz@redhat.com> <20180712012829.20231-5-famz@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.10.0 (2018-05-17) X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.5]); Fri, 13 Jul 2018 07:18:32 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.5]); Fri, 13 Jul 2018 07:18:32 +0000 (UTC) for IP:'10.11.54.5' DOMAIN:'int-mx05.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'famz@redhat.com' RCPT:'' X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 66.187.233.73 Subject: Re: [Qemu-devel] [PATCH v3 4/4] tests: Add centos VM testing 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: pbonzini@redhat.com, Alex =?iso-8859-1?Q?Benn=E9e?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP On Thu, 07/12 12:02, Philippe Mathieu-Daudé wrote: > Hi Fam, > > On 07/11/2018 10:28 PM, Fam Zheng wrote: > > This one does docker testing in the VM. It is intended to replace the > > native docker testing on patchew testers. > > > > Signed-off-by: Fam Zheng > > --- > > tests/vm/Makefile.include | 3 +- > > tests/vm/centos | 84 +++++++++++++++++++++++++++++++++++++++ > > 2 files changed, 86 insertions(+), 1 deletion(-) > > create mode 100755 tests/vm/centos > > > > diff --git a/tests/vm/Makefile.include b/tests/vm/Makefile.include > > index 5daa2a3b73..af19b7a4e6 100644 > > --- a/tests/vm/Makefile.include > > +++ b/tests/vm/Makefile.include > > @@ -2,7 +2,7 @@ > > > > .PHONY: vm-build-all > > > > -IMAGES := ubuntu.i386 freebsd netbsd openbsd > > +IMAGES := ubuntu.i386 freebsd netbsd openbsd centos > > IMAGE_FILES := $(patsubst %, tests/vm/%.img, $(IMAGES)) > > > > .PRECIOUS: $(IMAGE_FILES) > > @@ -14,6 +14,7 @@ vm-test: > > @echo " vm-build-freebsd - Build QEMU in FreeBSD VM" > > @echo " vm-build-netbsd - Build QEMU in NetBSD VM" > > @echo " vm-build-openbsd - Build QEMU in OpenBSD VM" > > + @echo " vm-build-centos - Build QEMU in CentOS VM, with Docker" > > > > vm-build-all: $(addprefix vm-build-, $(IMAGES)) > > > > diff --git a/tests/vm/centos b/tests/vm/centos > > new file mode 100755 > > index 0000000000..afd560c564 > > --- /dev/null > > +++ b/tests/vm/centos > > @@ -0,0 +1,84 @@ > > +#!/usr/bin/env python > > +# > > +# CentOS image > > +# > > +# Copyright 2018 Red Hat Inc. > > +# > > +# Authors: > > +# Fam Zheng > > +# > > +# This code is licensed under the GPL version 2 or later. See > > +# the COPYING file in the top-level directory. > > +# > > + > > +import os > > +import sys > > +import subprocess > > +import basevm > > +import time > > + > > +class CentosVM(basevm.BaseVM): > > + name = "centos" > > + BUILD_SCRIPT = """ > > + set -e; > > + cd $(mktemp -d); > > + export SRC_ARCHIVE=/dev/vdb; > > + sudo chmod a+r $SRC_ARCHIVE; > > + tar -xf $SRC_ARCHIVE; > > + make docker-test-block@centos7 V={verbose} J={jobs}; > > + make docker-test-quick@centos7 V={verbose} J={jobs}; > > + make docker-test-mingw@fedora V={verbose} J={jobs}; > > + """ > > + > > + def _gen_cloud_init_iso(self): > > + cidir = self._tmpdir > > + mdata = open(os.path.join(cidir, "meta-data"), "w") > > + mdata.writelines(["instance-id: centos-vm-0\n", > > + "local-hostname: centos-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, > > + "locale: en_US.UTF-8\n"]) > > + 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.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-1802.qcow2.xz") > > + img_tmp = img + ".tmp" > > + subprocess.check_call(["cp", "-f", cimg, img_tmp + ".xz"]) > > + subprocess.check_call(["xz", "-df", img_tmp + ".xz"]) > > + subprocess.check_call(["qemu-img", "resize", img_tmp, "50G"]) > > + self.boot(img_tmp, extra_args = ["-cdrom", self._gen_cloud_init_iso()]) > > + self.wait_ssh() > > + self.ssh_root_check("touch /etc/cloud/cloud-init.disabled") > > Here I had to add: > > for k, v in os.environ.iteritems(): > if k.lower() == "http_proxy": > self.ssh_root_check("echo 'proxy=" + v + "' >> /etc/yum.conf") > > I understood we will fix this corporate firewall issue later in basevm, > still I couldn't test your series without. Could you test this patch? diff --git a/tests/vm/basevm.py b/tests/vm/basevm.py index 25361c6b7d..4bc1a657d3 100755 --- a/tests/vm/basevm.py +++ b/tests/vm/basevm.py @@ -106,7 +106,10 @@ class BaseVM(object): if interactive: ssh_cmd += ['-t'] assert not isinstance(cmd, str) - ssh_cmd += ["%s@127.0.0.1" % user] + list(cmd) + env_names = ['ftp_proxy', 'http_proxy', 'https_proxy'] + envs = ["%s=%s" % (k, v) for k, v in os.environ.items() \ + if k.lower() in env_names] + ssh_cmd += ["%s@127.0.0.1" % user] + envs + list(cmd) logging.debug("ssh_cmd: %s", " ".join(ssh_cmd)) r = subprocess.call(ssh_cmd) if check and r != 0: