From nobody Fri Dec 19 16:06:43 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 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=1679064968; cv=none; d=zohomail.com; s=zohoarc; b=lnN06kXFsli0mafjUnodF1YcUhxpeVyyPk93tTE190b0g8faE0YeE+aXHFDrQEtFcx+QtSX30Avk4sqU6nDSLsvnrRGvo1D5cRK4r/l8AnAiP7jtcztLYyJJqwwcYGzN8esLBnAG0C2uOhNWt++E+LpZH5knZgfWIwnTrfINTs0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1679064968; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=StbhD8Cd4PwuKITjiwPb1HRFY+W+1xyWaw3cXrgFjCc=; b=PvRCRbQLX2WT9mFV5QAV/utoI+75J0fAwJ6OU/n5TkEIM6Xa6Q2hAm9Hrw6e/D38NsZKsFy4hJOmL6Bh6kpNGWEERzKNDMjxrwYA1P2eVa8rgqm45IwnM50b2YwjNSqpCkluh3W3I8PZmfl+mP5nOgBnFJsA6gXjZGAAMizAnRI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1679064968673594.3301765457664; Fri, 17 Mar 2023 07:56:08 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-612-lIZkZGfXNdKJqix2Xy_5rQ-1; Fri, 17 Mar 2023 10:56:04 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 968BE1C1744E; Fri, 17 Mar 2023 14:55:58 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 7C98D1121318; Fri, 17 Mar 2023 14:55:58 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 061D11946A48; Fri, 17 Mar 2023 14:55:58 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id E45081946587 for ; Thu, 16 Mar 2023 16:12:17 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id BF1832166B2D; Thu, 16 Mar 2023 16:12:17 +0000 (UTC) Received: from speedmetal.redhat.com (unknown [10.45.242.18]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5136C2166B2C for ; Thu, 16 Mar 2023 16:12:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1679064967; 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: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=StbhD8Cd4PwuKITjiwPb1HRFY+W+1xyWaw3cXrgFjCc=; b=aNGptq+T+lLC3qJnXuG5goPVvZbZ3IjVKTY1sngLglSFgEnwBrImp70NXtJgoCjORAmesP hd/S9RiPpibBNkQBFJDu8tHN3t3ZEh1do8iMwK/gc4aNdzKCLB8uEhjtnntZG8AR71RIBZ rry6Vsp/LyL/qq8v4/OnfP1QKaS/FKM= X-MC-Unique: lIZkZGfXNdKJqix2Xy_5rQ-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Peter Krempa To: libvir-list@redhat.com Subject: [PATCH 09/24] tests: Add support for multiple variants of data for the same qemu version+architecture Date: Thu, 16 Mar 2023 17:11:38 +0100 Message-Id: <1b73dfa8aa63b45ecb3a0aea25909a9583760492.1678982996.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.6 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.3 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1679064970076100002 Content-Type: text/plain; charset="utf-8" 'qemucapabilitiestest' and other users of the capability data can benefit from adding a discriminator string to have multiple instances for the same version+architecture tuple. This will in the future allow us to have specific capability versions for test cases which require a specific host feature or are based on a different operating system. Add the basic skeleton for parsing the variant string and passing it around into test cases. Signed-off-by: Peter Krempa --- tests/domaincapstest.c | 5 +++++ tests/qemucapabilitiesdata/README.rst | 17 ++++++++++++++++- tests/qemucapabilitiesnumbering.c | 5 ++++- tests/qemucapabilitiestest.c | 15 +++++++++------ tests/qemucaps2xmltest.c | 9 ++++++--- tests/testutilsqemu.c | 12 +++++++++++- tests/testutilsqemu.h | 1 + 7 files changed, 52 insertions(+), 12 deletions(-) diff --git a/tests/domaincapstest.c b/tests/domaincapstest.c index fbbed40c96..20163e0a72 100644 --- a/tests/domaincapstest.c +++ b/tests/domaincapstest.c @@ -312,11 +312,16 @@ doTestQemu(const char *inputDir G_GNUC_UNUSED, const char *prefix G_GNUC_UNUSED, const char *version, const char *arch, + const char *variant, const char *suffix G_GNUC_UNUSED, void *opaque) { int ret =3D 0; + /* currently variant tests are not handled here */ + if (STRNEQ(variant, "")) + return 0; + if (STREQ(arch, "x86_64")) { /* For x86_64 we test three combinations: * diff --git a/tests/qemucapabilitiesdata/README.rst b/tests/qemucapabilities= data/README.rst index 0bf6c97284..749d59becf 100644 --- a/tests/qemucapabilitiesdata/README.rst +++ b/tests/qemucapabilitiesdata/README.rst @@ -17,7 +17,7 @@ Naming Files in this directory have the following naming scheme:: - caps_$QEMUVERSION_$ARCHITECTURE.$SUFFIX + caps_$QEMUVERSION_$ARCHITECTURE$VARIANT.$SUFFIX ``$QEMUVERSION`` @@ -32,6 +32,21 @@ Files in this directory have the following naming scheme= :: ``.replies`` for the dump of the QMP communication used to probe qemu. ``.xml`` for the generated capability dump +``$VARIANT`` + + The variant name is an arbitrary string starting with the '+' sign, not + containing any dot. + + A variant is an additional named version of capabilities for given versi= on and + architecture tuple. This allows for testing special cases which e.g. dep= end + on a specific host platform or operating system feature, which differs f= rom + the main tests. + +Known test variants +------------------- + +This section will contain a list of variants that are used in the test sui= te. + Usage in tests =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D diff --git a/tests/qemucapabilitiesnumbering.c b/tests/qemucapabilitiesnumb= ering.c index 6814011351..6f33321e17 100644 --- a/tests/qemucapabilitiesnumbering.c +++ b/tests/qemucapabilitiesnumbering.c @@ -221,10 +221,13 @@ iterateCapsFile(const char *inputDir, const char *prefix, const char *version, const char *archName, + const char *variant, const char *suffix, void *opaque G_GNUC_UNUSED) { - g_autofree char *repliesFile =3D g_strdup_printf("%s/%s_%s_%s.%s", inp= utDir, prefix, version, archName, suffix); + g_autofree char *repliesFile =3D g_strdup_printf("%s/%s_%s_%s%s.%s", + inputDir, prefix, versi= on, + archName, variant, suff= ix); return virTestRun(repliesFile, testCapsFile, repliesFile); } diff --git a/tests/qemucapabilitiestest.c b/tests/qemucapabilitiestest.c index 379fe427d8..081f14a6c3 100644 --- a/tests/qemucapabilitiestest.c +++ b/tests/qemucapabilitiestest.c @@ -39,6 +39,7 @@ struct _testQemuData { const char *prefix; const char *version; const char *archName; + const char *variant; const char *suffix; int ret; }; @@ -78,12 +79,12 @@ testQemuCaps(const void *opaque) unsigned int fakeMicrocodeVersion =3D 0; const char *p; - repliesFile =3D g_strdup_printf("%s/%s_%s_%s.%s", + repliesFile =3D g_strdup_printf("%s/%s_%s_%s%s.%s", data->inputDir, data->prefix, data->vers= ion, - data->archName, data->suffix); - capsFile =3D g_strdup_printf("%s/%s_%s_%s.xml", + data->archName, data->variant, data->suf= fix); + capsFile =3D g_strdup_printf("%s/%s_%s_%s%s.xml", data->outputDir, data->prefix, data->versio= n, - data->archName); + data->archName, data->variant); if (!(mon =3D qemuMonitorTestNewFromFileFull(repliesFile, &data->drive= r, NULL, NULL))) @@ -142,9 +143,9 @@ testQemuCapsCopy(const void *opaque) g_autoptr(virQEMUCaps) copy =3D NULL; g_autofree char *actual =3D NULL; - capsFile =3D g_strdup_printf("%s/%s_%s_%s.xml", + capsFile =3D g_strdup_printf("%s/%s_%s_%s%s.xml", data->outputDir, data->prefix, data->versio= n, - data->archName); + data->archName, data->variant); if (!(orig =3D qemuTestParseCapabilitiesArch( virArchFromString(data->archName), capsFile))) @@ -167,6 +168,7 @@ doCapsTest(const char *inputDir, const char *prefix, const char *version, const char *archName, + const char *variant, const char *suffix, void *opaque) { @@ -181,6 +183,7 @@ doCapsTest(const char *inputDir, data->prefix =3D prefix; data->version =3D version; data->archName =3D archName; + data->variant =3D variant, data->suffix =3D suffix; if (virTestRun(title, testQemuCaps, data) < 0) diff --git a/tests/qemucaps2xmltest.c b/tests/qemucaps2xmltest.c index 2c40dcb114..2c5cb1b68b 100644 --- a/tests/qemucaps2xmltest.c +++ b/tests/qemucaps2xmltest.c @@ -33,6 +33,7 @@ struct _testQemuData { const char *prefix; const char *version; const char *archName; + const char *variant; const char *suffix; int ret; }; @@ -122,11 +123,11 @@ testQemuCapsXML(const void *opaque) g_autofree char *capsXml =3D NULL; g_autoptr(virCaps) capsProvided =3D NULL; - xmlFile =3D g_strdup_printf("%s/caps.%s.xml", data->outputDir, data->a= rchName); + xmlFile =3D g_strdup_printf("%s/caps.%s%s.xml", data->outputDir, data-= >archName, data->variant); - capsFile =3D g_strdup_printf("%s/%s_%s_%s.%s", + capsFile =3D g_strdup_printf("%s/%s_%s_%s%s.%s", data->inputDir, data->prefix, data->version, - data->archName, data->suffix); + data->archName, data->variant, data->suffix= ); if (virTestLoadFile(capsFile, &capsData) < 0) return -1; @@ -149,6 +150,7 @@ doCapsTest(const char *inputDir, const char *prefix, const char *version, const char *archName, + const char *variant, const char *suffix, void *opaque) { @@ -161,6 +163,7 @@ doCapsTest(const char *inputDir, data->prefix =3D prefix; data->version =3D version; data->archName =3D archName; + data->variant =3D variant; data->suffix =3D suffix; if (virTestRun(title, testQemuCapsXML, data) < 0) diff --git a/tests/testutilsqemu.c b/tests/testutilsqemu.c index 917cdc02a3..7f2aca5221 100644 --- a/tests/testutilsqemu.c +++ b/tests/testutilsqemu.c @@ -834,6 +834,8 @@ testQemuCapsIterate(const char *suffix, g_autofree char *tmp =3D g_strdup(ent->d_name); char *version =3D NULL; char *archName =3D NULL; + g_autofree char *variant =3D NULL; + char *var; /* Strip the trailing suffix, moving on if it's not present */ if (!virStringStripSuffix(tmp, suffix)) @@ -857,6 +859,14 @@ testQemuCapsIterate(const char *suffix, archName[0] =3D '\0'; archName++; + /* Find the 'variant' of the test and split it including the leadi= ng '+' */ + if ((var =3D strchr(archName, '+'))) { + variant =3D g_strdup(var); + var[0] =3D '\0'; + } else { + variant =3D g_strdup(""); + } + /* Run the user-provided callback. * * We skip the dot that, as verified earlier, starts the suffix @@ -864,7 +874,7 @@ testQemuCapsIterate(const char *suffix, * the callback. */ if (callback(TEST_QEMU_CAPS_PATH, "caps", version, - archName, suffix + 1, opaque) < 0) + archName, variant, suffix + 1, opaque) < 0) fail =3D true; } diff --git a/tests/testutilsqemu.h b/tests/testutilsqemu.h index 11bdd2fd2f..d75dfee839 100644 --- a/tests/testutilsqemu.h +++ b/tests/testutilsqemu.h @@ -143,6 +143,7 @@ typedef int (*testQemuCapsIterateCallback)(const char *= inputDir, const char *prefix, const char *version, const char *archName, + const char *variant, const char *suffix, void *opaque); int testQemuCapsIterate(const char *suffix, --=20 2.39.2