From nobody Wed May 8 12:00:02 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) client-ip=205.139.110.61; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1588932675; cv=none; d=zohomail.com; s=zohoarc; b=YJQndH93JdGqrBt6y7sxCYaC5udCNogVyv3/SCRv7mGQuZbfDgX/EzH/Y6f0R3m95BGVeHvk3BndtMg7E4BHokKkdH0WfTyUP/FxkYSkg+4Zuold3K/UVgTdHsjQip6CsHyAktAgn93GoL0NXqfZr15ulJPLxJ+rc4apI5oP340= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1588932675; h=Content-Type:Content-Transfer-Encoding:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=sOJolQ+e7O+JBp+9X582gbRhwWpwiPhEhLUElSvbzEU=; b=bGBOrip/RcNRRaTaY2DpQM4fqh9Ii56PubFAEM1rRDHSpb0HpmLF9ushYfQuG40YW7WI4miLPPqFCHNOVvLrcw5V6X1fJKlgv8+7514rzD5BHNCJheru1496stq62EyvRbWCPCRL13NWxkGV6GqHxYYUo9Pm7a3mDUWfNGiztnI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) by mx.zohomail.com with SMTPS id 1588932675616172.7100299993457; Fri, 8 May 2020 03:11:15 -0700 (PDT) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-484-nJprleb-Ooa1uZn3yChjAA-1; Fri, 08 May 2020 06:11:11 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id D5DB146B; Fri, 8 May 2020 10:11:05 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 31D2919451; Fri, 8 May 2020 10:11:05 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 248231809543; Fri, 8 May 2020 10:11:03 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 048AB24d005745 for ; Fri, 8 May 2020 06:11:02 -0400 Received: by smtp.corp.redhat.com (Postfix) id 354335D9CC; Fri, 8 May 2020 10:11:02 +0000 (UTC) Received: from kinshicho.usersys.redhat.com (unknown [10.40.192.96]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 140555D9CA for ; Fri, 8 May 2020 10:10:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1588932674; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=sOJolQ+e7O+JBp+9X582gbRhwWpwiPhEhLUElSvbzEU=; b=CpeF4GdUDAczzE+sfjOFk/61Hi7vYnAvAYJXJyT5qDcngA29LsFR4lPuTHDLvwJ/gf/NGm xz7YQx1KubFKXJHyfdpiSfS4UeLbkteleyu6mS4k0Tv3bDmax9Yt9BLihbRYMGMoQ7XzOA IhuOf9x+q6GME7a7Um+VPeR/RoxOhjA= X-MC-Unique: nJprleb-Ooa1uZn3yChjAA-1 From: Andrea Bolognani To: libvir-list@redhat.com Subject: [libvirt PATCH] Revert "tests: Use qemu:///embed to simplify fakerootdir management" Date: Fri, 8 May 2020 12:10:55 +0200 Message-Id: <20200508101055.12421-1-abologna@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-loop: libvir-list@redhat.com X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" Turns out that it's not enough to pass the qemu:///embed root to virQEMUDriverConfigNew(), you also have to make sure the same string is copied into the virQEMUDriver structure yourself, and not doing so in our case resulted in the cleanup never happening and in distcheck failing because of that. On the other hand, actually setting config->embeddedRoot would result in different paths being generated for each test run, which would obviously break qemuxml2argvtest, so that's not an option either. This reverts commit d98cc1968e7961cb02ed07406451a7b710cc2f24. Signed-off-by: Andrea Bolognani --- Pushed as a CI fix yesterday, forgot to forward it to the list. tests/qemuhotplugtest.c | 15 ++++++++++++++ tests/qemumemlocktest.c | 20 ++++++++++++++++++- tests/qemuxml2argvtest.c | 16 +++++++++++++++ tests/qemuxml2xmltest.c | 16 +++++++++++++++ tests/testutilsqemu.c | 43 ++++++++++++++++++++++++++-------------- 5 files changed, 94 insertions(+), 16 deletions(-) diff --git a/tests/qemuhotplugtest.c b/tests/qemuhotplugtest.c index a67b6ce607..cf87de187f 100644 --- a/tests/qemuhotplugtest.c +++ b/tests/qemuhotplugtest.c @@ -594,6 +594,8 @@ testQemuHotplugCpuIndividual(const void *opaque) return ret; } =20 +#define FAKEROOTDIRTEMPLATE abs_builddir "/fakerootdir-XXXXXX" + =20 static int mymain(void) @@ -602,8 +604,18 @@ mymain(void) int ret =3D 0; struct qemuHotplugTestData data =3D {0}; struct testQemuHotplugCpuParams cpudata; + g_autofree char *fakerootdir =3D NULL; g_autoptr(virQEMUDriverConfig) cfg =3D NULL; =20 + fakerootdir =3D g_strdup(FAKEROOTDIRTEMPLATE); + + if (!g_mkdtemp(fakerootdir)) { + fprintf(stderr, "Cannot create fakerootdir"); + abort(); + } + + g_setenv("LIBVIRT_FAKE_ROOT_DIR", fakerootdir, TRUE); + if (qemuTestDriverInit(&driver) < 0) return EXIT_FAILURE; =20 @@ -879,6 +891,9 @@ mymain(void) DO_TEST_CPU_INDIVIDUAL("ppc64-modern-individual", "16-22", true, true,= true); DO_TEST_CPU_INDIVIDUAL("ppc64-modern-individual", "17", true, true, tr= ue); =20 + if (getenv("LIBVIRT_SKIP_CLEANUP") =3D=3D NULL) + virFileDeleteTree(fakerootdir); + qemuTestDriverFree(&driver); virObjectUnref(data.vm); return (ret =3D=3D 0) ? EXIT_SUCCESS : EXIT_FAILURE; diff --git a/tests/qemumemlocktest.c b/tests/qemumemlocktest.c index 4813c7beb0..3f18fed1c3 100644 --- a/tests/qemumemlocktest.c +++ b/tests/qemumemlocktest.c @@ -51,14 +51,28 @@ testCompareMemLock(const void *data) return ret; } =20 +# define FAKEROOTDIRTEMPLATE abs_builddir "/fakerootdir-XXXXXX" + static int mymain(void) { int ret =3D 0; + char *fakerootdir; virQEMUCapsPtr qemuCaps =3D NULL; =20 - if (qemuTestDriverInit(&driver) < 0) + fakerootdir =3D g_strdup(FAKEROOTDIRTEMPLATE); + + if (!g_mkdtemp(fakerootdir)) { + fprintf(stderr, "Cannot create fakerootdir"); + abort(); + } + + g_setenv("LIBVIRT_FAKE_ROOT_DIR", fakerootdir, TRUE); + + if (qemuTestDriverInit(&driver) < 0) { + VIR_FREE(fakerootdir); return EXIT_FAILURE; + } =20 driver.privileged =3D true; =20 @@ -136,7 +150,11 @@ mymain(void) cleanup: virObjectUnref(qemuCaps); =20 + if (getenv("LIBVIRT_SKIP_CLEANUP") =3D=3D NULL) + virFileDeleteTree(fakerootdir); + qemuTestDriverFree(&driver); + VIR_FREE(fakerootdir); =20 return ret =3D=3D 0 ? EXIT_SUCCESS : EXIT_FAILURE; } diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 8bd6102d26..04febd1b0c 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -609,12 +609,24 @@ testInfoSetPaths(struct testQemuInfo *info, abs_srcdir, info->name, suffix ? suffi= x : ""); } =20 +# define FAKEROOTDIRTEMPLATE abs_builddir "/fakerootdir-XXXXXX" + static int mymain(void) { int ret =3D 0; + char *fakerootdir; virHashTablePtr capslatest =3D NULL; =20 + fakerootdir =3D g_strdup(FAKEROOTDIRTEMPLATE); + + if (!g_mkdtemp(fakerootdir)) { + fprintf(stderr, "Cannot create fakerootdir"); + abort(); + } + + g_setenv("LIBVIRT_FAKE_ROOT_DIR", fakerootdir, TRUE); + /* Set the timezone because we are mocking the time() function. * If we don't do that, then localtime() may return unpredictable * results. In order to detect things that just work by a blind @@ -3220,8 +3232,12 @@ mymain(void) =20 DO_TEST_CAPS_LATEST("virtio-9p-multidevs"); =20 + if (getenv("LIBVIRT_SKIP_CLEANUP") =3D=3D NULL) + virFileDeleteTree(fakerootdir); + VIR_FREE(driver.config->nbdTLSx509certdir); qemuTestDriverFree(&driver); + VIR_FREE(fakerootdir); virHashFree(capslatest); virFileWrapperClearPrefixes(); =20 diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index 6a0adab603..86f3d2c1f3 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -126,10 +126,13 @@ testInfoSetStatusPaths(struct testQemuInfo *info) } =20 =20 +# define FAKEROOTDIRTEMPLATE abs_builddir "/fakerootdir-XXXXXX" + static int mymain(void) { int ret =3D 0; + char *fakerootdir; virQEMUDriverConfigPtr cfg =3D NULL; virHashTablePtr capslatest =3D NULL; =20 @@ -137,6 +140,15 @@ mymain(void) if (!capslatest) return EXIT_FAILURE; =20 + fakerootdir =3D g_strdup(FAKEROOTDIRTEMPLATE); + + if (!g_mkdtemp(fakerootdir)) { + fprintf(stderr, "Cannot create fakerootdir"); + abort(); + } + + g_setenv("LIBVIRT_FAKE_ROOT_DIR", fakerootdir, TRUE); + /* Required for tpm-emulator tests */ virFileWrapperAddPrefix(SYSCONFDIR "/qemu/firmware", @@ -1466,8 +1478,12 @@ mymain(void) =20 DO_TEST_CAPS_LATEST("virtio-9p-multidevs"); =20 + if (getenv("LIBVIRT_SKIP_CLEANUP") =3D=3D NULL) + virFileDeleteTree(fakerootdir); + virHashFree(capslatest); qemuTestDriverFree(&driver); + VIR_FREE(fakerootdir); virFileWrapperClearPrefixes(); =20 return ret =3D=3D 0 ? EXIT_SUCCESS : EXIT_FAILURE; diff --git a/tests/testutilsqemu.c b/tests/testutilsqemu.c index c7983f0014..9f9eb4033c 100644 --- a/tests/testutilsqemu.c +++ b/tests/testutilsqemu.c @@ -307,10 +307,11 @@ qemuTestParseCapabilitiesArch(virArch arch, =20 void qemuTestDriverFree(virQEMUDriver *driver) { - if (g_getenv("LIBVIRT_SKIP_CLEANUP") =3D=3D NULL) - virFileDeleteTree(driver->embeddedRoot); - virMutexDestroy(&driver->lock); + if (driver->config) { + virFileDeleteTree(driver->config->stateDir); + virFileDeleteTree(driver->config->configDir); + } virObjectUnref(driver->qemuCapsCache); virObjectUnref(driver->xmlopt); virObjectUnref(driver->caps); @@ -369,21 +370,14 @@ int qemuTestCapsCacheInsert(virFileCachePtr cache, } =20 =20 -# define FAKEROOTDIRTEMPLATE abs_builddir "/fakerootdir-XXXXXX" +# define STATEDIRTEMPLATE abs_builddir "/qemustatedir-XXXXXX" +# define CONFIGDIRTEMPLATE abs_builddir "/qemuconfigdir-XXXXXX" =20 int qemuTestDriverInit(virQEMUDriver *driver) { virSecurityManagerPtr mgr =3D NULL; - g_autofree char *fakerootdir =3D NULL; - - fakerootdir =3D g_strdup(FAKEROOTDIRTEMPLATE); - - if (!g_mkdtemp(fakerootdir)) { - fprintf(stderr, "Cannot create fakerootdir"); - abort(); - } - - g_setenv("LIBVIRT_FAKE_ROOT_DIR", fakerootdir, TRUE); + char statedir[] =3D STATEDIRTEMPLATE; + char configdir[] =3D CONFIGDIRTEMPLATE; =20 memset(driver, 0, sizeof(*driver)); =20 @@ -397,16 +391,35 @@ int qemuTestDriverInit(virQEMUDriver *driver) return -1; =20 driver->hostarch =3D virArchFromHost(); - driver->config =3D virQEMUDriverConfigNew(false, fakerootdir); + driver->config =3D virQEMUDriverConfigNew(false, NULL); if (!driver->config) goto error; =20 + /* Do this early so that qemuTestDriverFree() doesn't see (unlink) the= real + * dirs. */ + VIR_FREE(driver->config->stateDir); + VIR_FREE(driver->config->configDir); + /* Overwrite some default paths so it's consistent for tests. */ VIR_FREE(driver->config->libDir); VIR_FREE(driver->config->channelTargetDir); driver->config->libDir =3D g_strdup("/tmp/lib"); driver->config->channelTargetDir =3D g_strdup("/tmp/channel"); =20 + if (!g_mkdtemp(statedir)) { + fprintf(stderr, "Cannot create fake stateDir"); + goto error; + } + + driver->config->stateDir =3D g_strdup(statedir); + + if (!g_mkdtemp(configdir)) { + fprintf(stderr, "Cannot create fake configDir"); + goto error; + } + + driver->config->configDir =3D g_strdup(configdir); + driver->caps =3D testQemuCapsInit(); if (!driver->caps) goto error; --=20 2.25.4