From nobody Tue Nov 26 22:40:53 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=suse.de ARC-Seal: i=1; a=rsa-sha256; t=1704388804; cv=none; d=zohomail.com; s=zohoarc; b=FQCwHIl2aHc8sMymaMRHOPny8iiDYeyWiVea98QoKk72OIORx7tSiYr4GfPOat3XkHa/fUhHvQlKZe84X1fXkgDImHqoRQm9MUammw506R3b+X4gdYA/68wxxo4ikaMcpAeFBE+mIR8MYu4cRYNNw1ERkJbcaLGGigmtr1Ek7Hs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1704388804; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ghz63JcePdB1PlsEvBduKH2zaggOWQB1kSiUuWNed6s=; b=WFVbAadoM7M5jvvbKolt4oGj8/jUq9ZjfQnSOjRKN0WNeqxOHECdyWfhALUG5ab8BJ3hF8yhg+VKwdSv8mrzCEIZ4J2Eajj/nyuD+TFSTzwnSGLAQiCXofjuQAerAqOvpp8e6LAb68n0QNYx3sdDg3FWyExYYHqLmuP/wjgoojc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1704388804067210.58000799262413; Thu, 4 Jan 2024 09:20:04 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rLRNM-0004AQ-1T; Thu, 04 Jan 2024 12:19:24 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rLRNF-00046L-IL for qemu-devel@nongnu.org; Thu, 04 Jan 2024 12:19:18 -0500 Received: from smtp-out2.suse.de ([2a07:de40:b251:101:10:150:64:2]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rLRN7-0008Lx-CE for qemu-devel@nongnu.org; Thu, 04 Jan 2024 12:19:15 -0500 Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id AB72A1F824; Thu, 4 Jan 2024 17:19:07 +0000 (UTC) Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 2C61013722; Thu, 4 Jan 2024 17:19:04 +0000 (UTC) Received: from dovecot-director2.suse.de ([10.150.64.162]) by imap1.dmz-prg2.suse.org with ESMTPSA id IDu8OIjolmUNbAAAD6G6ig (envelope-from ); Thu, 04 Jan 2024 17:19:04 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1704388747; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ghz63JcePdB1PlsEvBduKH2zaggOWQB1kSiUuWNed6s=; b=PgibKZ/xhZ4MGgI3ScaQ59dblUN1gL9BzzKwg8k+x6gm+JYUbgSBPq4mzKwQ/MMIEHE9jN ZzheIThWba8Lvb73lrB2yxIibOC17h0Fb447smDg1AWwVDkSzzZ5txrtdG/+aXwltYtvJk PQFBw9NuL1WCmldmaau2BRNeWkQZOEk= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1704388747; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ghz63JcePdB1PlsEvBduKH2zaggOWQB1kSiUuWNed6s=; b=107CWcSJZ2g6RMQDlF9nfIbDF6wJQ6L3tQIEHP1Ww/Gqz7Sk1PEKQ4Og/tDfgtDaQqrZoR 3h27l/Z/6pqOZRBA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1704388747; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ghz63JcePdB1PlsEvBduKH2zaggOWQB1kSiUuWNed6s=; b=PgibKZ/xhZ4MGgI3ScaQ59dblUN1gL9BzzKwg8k+x6gm+JYUbgSBPq4mzKwQ/MMIEHE9jN ZzheIThWba8Lvb73lrB2yxIibOC17h0Fb447smDg1AWwVDkSzzZ5txrtdG/+aXwltYtvJk PQFBw9NuL1WCmldmaau2BRNeWkQZOEk= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1704388747; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ghz63JcePdB1PlsEvBduKH2zaggOWQB1kSiUuWNed6s=; b=107CWcSJZ2g6RMQDlF9nfIbDF6wJQ6L3tQIEHP1Ww/Gqz7Sk1PEKQ4Og/tDfgtDaQqrZoR 3h27l/Z/6pqOZRBA== From: Fabiano Rosas To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , Laurent Vivier , Paolo Bonzini , Juan Quintela , Leonardo Bras Subject: [PATCH v2 2/4] tests/qtest/migration: Add infrastructure to skip tests on older QEMUs Date: Thu, 4 Jan 2024 14:18:55 -0300 Message-Id: <20240104171857.20108-3-farosas@suse.de> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20240104171857.20108-1-farosas@suse.de> References: <20240104171857.20108-1-farosas@suse.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Authentication-Results: smtp-out2.suse.de; none X-Spam-Score: 0.70 X-Spamd-Result: default: False [0.70 / 50.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; URIBL_BLOCKED(0.00)[suse.de:email]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; BROKEN_CONTENT_TYPE(1.50)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; RCVD_COUNT_THREE(0.00)[3]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; NEURAL_HAM_SHORT(-0.20)[-1.000]; RCPT_COUNT_SEVEN(0.00)[9]; MID_CONTAINS_FROM(1.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:email]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-3.00)[100.00%] Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a07:de40:b251:101:10:150:64:2; envelope-from=farosas@suse.de; helo=smtp-out2.suse.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, T_SPF_HELO_TEMPERROR=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @suse.de) X-ZM-MESSAGEID: 1704388805048100001 Content-Type: text/plain; charset="utf-8" We can run the migration tests with two different QEMU binaries to test migration compatibility between QEMU versions. This means we'll be running the tests with an older QEMU in either source or destination. We need to avoid trying to test functionality that is unknown to the older QEMU. This could mean new features, bug fixes, error message changes, QEMU command line changes, migration API changes, etc. Add a 'since' argument to the tests that inform when the functionality that is being test has been added to QEMU so we can skip the test on older versions. Also add a version comparison function so we can adapt test code depending on the QEMU binary version being used. Signed-off-by: Fabiano Rosas --- tests/qtest/migration-helpers.c | 11 +++++++++++ tests/qtest/migration-helpers.h | 1 + tests/qtest/migration-test.c | 29 +++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+) diff --git a/tests/qtest/migration-helpers.c b/tests/qtest/migration-helper= s.c index 24fb7b3525..20220bfda0 100644 --- a/tests/qtest/migration-helpers.c +++ b/tests/qtest/migration-helpers.c @@ -292,3 +292,14 @@ char *resolve_machine_version(const char *alias, const= char *var1, =20 return find_common_machine_version(machine_name, var1, var2); } + +int migration_vercmp(QTestState *who, const char *tgt_version) +{ + int major, minor, micro; + g_autofree char *version =3D NULL; + + qtest_query_version(who, &major, &minor, µ); + version =3D g_strdup_printf("%d.%d", major, minor + !!micro); + + return strcmp(version, tgt_version); +} diff --git a/tests/qtest/migration-helpers.h b/tests/qtest/migration-helper= s.h index e31dc85cc7..7b4f8e851e 100644 --- a/tests/qtest/migration-helpers.h +++ b/tests/qtest/migration-helpers.h @@ -47,4 +47,5 @@ char *find_common_machine_version(const char *mtype, cons= t char *var1, const char *var2); char *resolve_machine_version(const char *alias, const char *var1, const char *var2); +int migration_vercmp(QTestState *who, const char *tgt_version); #endif /* MIGRATION_HELPERS_H */ diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c index d520c587f7..001470238b 100644 --- a/tests/qtest/migration-test.c +++ b/tests/qtest/migration-test.c @@ -637,6 +637,12 @@ typedef struct { bool use_dirty_ring; const char *opts_source; const char *opts_target; + /* + * If a test checks against new functionality that might not be + * present in older QEMUs this needs to be set so we can skip + * running it when doing compatibility testing. + */ + const char *since; } MigrateStart; =20 /* @@ -850,6 +856,17 @@ static int test_migrate_start(QTestState **from, QTest= State **to, qtest_qmp_set_event_callback(*from, migrate_watch_for_stop, &got_src_stop); + + if (args->since && migration_vercmp(*from, args->since) < 0) { + g_autofree char *msg =3D NULL; + + msg =3D g_strdup_printf("Test requires at least QEMU version %= s", + args->since); + g_test_skip(msg); + qtest_quit(*from); + + return -1; + } } =20 cmd_target =3D g_strdup_printf("-accel kvm%s -accel tcg " @@ -872,6 +889,18 @@ static int test_migrate_start(QTestState **from, QTest= State **to, migrate_watch_for_resume, &got_dst_resume); =20 + if (args->since && migration_vercmp(*to, args->since) < 0) { + g_autofree char *msg =3D NULL; + + msg =3D g_strdup_printf("Test requires at least QEMU version %s", + args->since); + g_test_skip(msg); + qtest_quit(*to); + qtest_quit(*from); + + return -1; + } + /* * Remove shmem file immediately to avoid memory leak in test failed c= ase. * It's valid because QEMU has already opened this file --=20 2.35.3