From nobody Tue Feb 10 04:14:00 2026 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1640173224; cv=none; d=zohomail.com; s=zohoarc; b=PAt8fF/OS47lBONRBUk2u/hVjncZNKjlqWdiJrEnjjaFU2mDAhmOwU5w1tq1RomlLY6fZg29Dv4R3R7lU06gEYDKkfwJ+A0IptpQNCFAWsKOjutAVyeuG34zuCm3OJfobYmBlaebklbt3zydI/iK6icBni/GKBrQQ+t8bsiUWwI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640173224; h=Content-Type:Content-Transfer-Encoding:Cc: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=ULItV55ClMD89PONenpXjyxWa6vKn3YoZCOn0zOTF+Y=; b=JMf0CCTuDz8z7sqJl7ZdUeAmXxxvxG/X8HTtOv5qL9ZAiT4E7zsPrcLkaK45AbZn3h92z7cdTIBKh4CQnoHabvnTCFsSQS6SxG+KYr8QJSOeJb/zW21LQQuIw+WZ+mo6WVh4vl+REvAwzmEA3pWqS7T5/Iqu3WzbAAhb9eVDyWs= 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 1640173224171580.7590890109069; Wed, 22 Dec 2021 03:40:24 -0800 (PST) Received: from localhost ([::1]:39696 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mzzym-0001Dz-Ka for importer@patchew.org; Wed, 22 Dec 2021 06:40:20 -0500 Received: from eggs.gnu.org ([209.51.188.92]:51090) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mzzsf-00017o-9Q for qemu-devel@nongnu.org; Wed, 22 Dec 2021 06:34:02 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:47265) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mzzsc-00071x-53 for qemu-devel@nongnu.org; Wed, 22 Dec 2021 06:33:59 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-302-pQeZ49FwMy-dZHd-hLqpCQ-1; Wed, 22 Dec 2021 06:33:56 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 7F370801962; Wed, 22 Dec 2021 11:33:55 +0000 (UTC) Received: from thuth.com (unknown [10.39.192.135]) by smtp.corp.redhat.com (Postfix) with ESMTP id 52F7E7B015; Wed, 22 Dec 2021 11:33:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640172837; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ULItV55ClMD89PONenpXjyxWa6vKn3YoZCOn0zOTF+Y=; b=X1zsSxNMf1dQrEmsbKen80BqTnfd7QxLc/Swim0sCV4ZqLZwUChwOk8Wtnek0Kq8k24xRS 5TT2oBjy4hIcO5qoTwMP2YLuAJ0jhraQZoWlsdJRtS0HHv4YfWwPVcF1+xL8vGItT8W1mO ji+wwAK6pHRnDYHDbBm3PqFzXXIi0fI= X-MC-Unique: pQeZ49FwMy-dZHd-hLqpCQ-1 From: Thomas Huth To: qemu-devel@nongnu.org Subject: [PULL 5/9] tests/qtest: Add a function that checks whether a device is available Date: Wed, 22 Dec 2021 12:32:55 +0100 Message-Id: <20211222113259.823203-6-thuth@redhat.com> In-Reply-To: <20211222113259.823203-1-thuth@redhat.com> References: <20211222113259.823203-1-thuth@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=thuth@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable 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=170.10.133.124; envelope-from=thuth@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -29 X-Spam_score: -3.0 X-Spam_bar: --- X-Spam_report: (-3.0 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.203, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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: , Cc: Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1640173225266100001 Content-Type: text/plain; charset="utf-8" Devices might not always be compiled into the QEMU target binaries. We already have the libqos framework that is good for handling such situations, but some of the qtests are not a real good fit for the libqos framework. Let's add a qtest_has_device() function for such tests instead. Message-Id: <20211220081054.151515-2-thuth@redhat.com> Signed-off-by: Thomas Huth --- tests/qtest/libqos/libqtest.h | 8 +++++++ tests/qtest/libqtest.c | 44 +++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/tests/qtest/libqos/libqtest.h b/tests/qtest/libqos/libqtest.h index a6d38d7ef7..cf38d273f5 100644 --- a/tests/qtest/libqos/libqtest.h +++ b/tests/qtest/libqos/libqtest.h @@ -718,6 +718,14 @@ void qtest_cb_for_every_machine(void (*cb)(const char = *machine), */ bool qtest_has_machine(const char *machine); =20 +/** + * qtest_has_device: + * @device: The device to look for + * + * Returns: true if the device is available in the target binary. + */ +bool qtest_has_device(const char *device); + /** * qtest_qmp_device_add_qdict: * @qts: QTestState instance to operate on diff --git a/tests/qtest/libqtest.c b/tests/qtest/libqtest.c index a68326caae..41f4da4e54 100644 --- a/tests/qtest/libqtest.c +++ b/tests/qtest/libqtest.c @@ -1418,6 +1418,50 @@ bool qtest_has_machine(const char *machine) return false; } =20 +bool qtest_has_device(const char *device) +{ + static QList *list; + const QListEntry *p; + QObject *qobj; + QString *qstr; + QDict *devinfo; + int idx; + + if (!list) { + QDict *resp; + QDict *args; + QTestState *qts =3D qtest_init("-machine none"); + + args =3D qdict_new(); + qdict_put_bool(args, "abstract", false); + qdict_put_str(args, "implements", "device"); + + resp =3D qtest_qmp(qts, "{'execute': 'qom-list-types', 'arguments'= : %p }", + args); + g_assert(qdict_haskey(resp, "return")); + list =3D qdict_get_qlist(resp, "return"); + qobject_ref(list); + qobject_unref(resp); + + qtest_quit(qts); + } + + for (p =3D qlist_first(list), idx =3D 0; p; p =3D qlist_next(p), idx++= ) { + devinfo =3D qobject_to(QDict, qlist_entry_obj(p)); + g_assert(devinfo); + + qobj =3D qdict_get(devinfo, "name"); + g_assert(qobj); + qstr =3D qobject_to(QString, qobj); + g_assert(qstr); + if (g_str_equal(qstring_get_str(qstr), device)) { + return true; + } + } + + return false; +} + /* * Generic hot-plugging test via the device_add QMP commands. */ --=20 2.27.0