From nobody Sun Nov 2 11:48:51 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1527709095004302.9268418967739; Wed, 30 May 2018 12:38:15 -0700 (PDT) Received: from localhost ([::1]:40452 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fO6v6-0005tz-5Q for importer@patchew.org; Wed, 30 May 2018 15:38:04 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55079) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fO6tL-0004vO-Fq for qemu-devel@nongnu.org; Wed, 30 May 2018 15:36:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fO6tJ-0003wT-B8 for qemu-devel@nongnu.org; Wed, 30 May 2018 15:36:15 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:50434) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fO6tJ-0003w7-2u for qemu-devel@nongnu.org; Wed, 30 May 2018 15:36:13 -0400 Received: from pps.filterd (m0098399.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w4UJYJQt057038 for ; Wed, 30 May 2018 15:36:12 -0400 Received: from e36.co.us.ibm.com (e36.co.us.ibm.com [32.97.110.154]) by mx0a-001b2d01.pphosted.com with ESMTP id 2ja0r2mpm9-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Wed, 30 May 2018 15:36:12 -0400 Received: from localhost by e36.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 30 May 2018 13:36:11 -0600 Received: from b03cxnp07029.gho.boulder.ibm.com (9.17.130.16) by e36.co.us.ibm.com (192.168.1.136) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Wed, 30 May 2018 13:36:08 -0600 Received: from b03ledav006.gho.boulder.ibm.com (b03ledav006.gho.boulder.ibm.com [9.17.130.237]) by b03cxnp07029.gho.boulder.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id w4UJa7eA9306588 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 30 May 2018 12:36:07 -0700 Received: from b03ledav006.gho.boulder.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id F17FCC6047; Wed, 30 May 2018 13:36:06 -0600 (MDT) Received: from sbct-3.pok.ibm.com (unknown [9.47.158.153]) by b03ledav006.gho.boulder.ibm.com (Postfix) with ESMTP id 8517DC6043; Wed, 30 May 2018 13:36:06 -0600 (MDT) From: Stefan Berger To: qemu-devel@nongnu.org Date: Wed, 30 May 2018 15:35:45 -0400 X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180530193548.3846786-1-stefanb@linux.vnet.ibm.com> References: <20180530193548.3846786-1-stefanb@linux.vnet.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 18053019-0020-0000-0000-00000E0D47F7 X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00009099; HX=3.00000241; KW=3.00000007; PH=3.00000004; SC=3.00000264; SDB=6.01039957; UDB=6.00532307; IPR=6.00819091; MB=3.00021381; MTD=3.00000008; XFM=3.00000015; UTC=2018-05-30 19:36:09 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18053019-0021-0000-0000-000061AA8803 Message-Id: <20180530193548.3846786-2-stefanb@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2018-05-30_09:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=3 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1805220000 definitions=main-1805300208 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.156.1 Subject: [Qemu-devel] [PATCH 1/4] test: Move reusable code from tpm-crb-swtpm-test.c to tpm-util.c 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: marcandre.lureau@redhat.com, Stefan Berger Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Move code we can reuse from tpm-crb-swtpm-test.c into tpm-util.c and prefix functions with 'tpm_util_'. Remove some unnecessary #include's. Signed-off-by: Stefan Berger Reviewed-by: Marc-Andr=C3=A9 Lureau --- tests/tpm-crb-swtpm-test.c | 100 +++--------------------------------------= ---- tests/tpm-util.c | 89 ++++++++++++++++++++++++++++++++++++++++ tests/tpm-util.h | 10 +++++ 3 files changed, 104 insertions(+), 95 deletions(-) diff --git a/tests/tpm-crb-swtpm-test.c b/tests/tpm-crb-swtpm-test.c index c2bde0cbaa..2a22b032ca 100644 --- a/tests/tpm-crb-swtpm-test.c +++ b/tests/tpm-crb-swtpm-test.c @@ -15,12 +15,8 @@ #include "qemu/osdep.h" #include =20 -#include "hw/acpi/tpm.h" -#include "io/channel-socket.h" #include "libqtest.h" #include "tpm-util.h" -#include "sysemu/tpm.h" -#include "qapi/qmp/qdict.h" =20 typedef struct TestState { char *src_tpm_path; @@ -28,93 +24,6 @@ typedef struct TestState { char *uri; } TestState; =20 -bool got_stop; - -static void migrate(QTestState *who, const char *uri) -{ - QDict *rsp; - gchar *cmd; - - cmd =3D g_strdup_printf("{ 'execute': 'migrate'," - "'arguments': { 'uri': '%s' } }", - uri); - rsp =3D qtest_qmp(who, cmd); - g_free(cmd); - g_assert(qdict_haskey(rsp, "return")); - qobject_unref(rsp); -} - -/* - * Events can get in the way of responses we are actually waiting for. - */ -static QDict *wait_command(QTestState *who, const char *command) -{ - const char *event_string; - QDict *response; - - response =3D qtest_qmp(who, command); - - while (qdict_haskey(response, "event")) { - /* OK, it was an event */ - event_string =3D qdict_get_str(response, "event"); - if (!strcmp(event_string, "STOP")) { - got_stop =3D true; - } - qobject_unref(response); - response =3D qtest_qmp_receive(who); - } - return response; -} - -static void wait_for_migration_complete(QTestState *who) -{ - while (true) { - QDict *rsp, *rsp_return; - bool completed; - const char *status; - - rsp =3D wait_command(who, "{ 'execute': 'query-migrate' }"); - rsp_return =3D qdict_get_qdict(rsp, "return"); - status =3D qdict_get_str(rsp_return, "status"); - completed =3D strcmp(status, "completed") =3D=3D 0; - g_assert_cmpstr(status, !=3D, "failed"); - qobject_unref(rsp); - if (completed) { - return; - } - usleep(1000); - } -} - -static void migration_start_qemu(QTestState **src_qemu, QTestState **dst_q= emu, - SocketAddress *src_tpm_addr, - SocketAddress *dst_tpm_addr, - const char *miguri) -{ - char *src_qemu_args, *dst_qemu_args; - - src_qemu_args =3D g_strdup_printf( - "-chardev socket,id=3Dchr,path=3D%s " - "-tpmdev emulator,id=3Ddev,chardev=3Dchr " - "-device tpm-crb,tpmdev=3Ddev ", - src_tpm_addr->u.q_unix.path); - - *src_qemu =3D qtest_init(src_qemu_args); - - dst_qemu_args =3D g_strdup_printf( - "-chardev socket,id=3Dchr,path=3D%s " - "-tpmdev emulator,id=3Ddev,chardev=3Dchr " - "-device tpm-crb,tpmdev=3Ddev " - "-incoming %s", - dst_tpm_addr->u.q_unix.path, - miguri); - - *dst_qemu =3D qtest_init(dst_qemu_args); - - free(src_qemu_args); - free(dst_qemu_args); -} - static void tpm_crb_swtpm_test(const void *data) { char *args =3D NULL; @@ -183,8 +92,9 @@ static void tpm_crb_swtpm_migration_test(const void *dat= a) goto err_src_tpm_kill; } =20 - migration_start_qemu(&src_qemu, &dst_qemu, src_tpm_addr, dst_tpm_addr, - ts->uri); + tpm_util_migration_start_qemu(&src_qemu, &dst_qemu, + src_tpm_addr, dst_tpm_addr, + ts->uri); =20 tpm_util_startup(src_qemu, tpm_util_crb_transfer); tpm_util_pcrextend(src_qemu, tpm_util_crb_transfer); @@ -197,8 +107,8 @@ static void tpm_crb_swtpm_migration_test(const void *da= ta) tpm_util_pcrread(src_qemu, tpm_util_crb_transfer, tpm_pcrread_resp, sizeof(tpm_pcrread_resp)); =20 - migrate(src_qemu, ts->uri); - wait_for_migration_complete(src_qemu); + tpm_util_migrate(src_qemu, ts->uri); + tpm_util_wait_for_migration_complete(src_qemu); =20 tpm_util_pcrread(dst_qemu, tpm_util_crb_transfer, tpm_pcrread_resp, sizeof(tpm_pcrread_resp)); diff --git a/tests/tpm-util.c b/tests/tpm-util.c index c9b3947c1c..e6e3b922fa 100644 --- a/tests/tpm-util.c +++ b/tests/tpm-util.c @@ -17,6 +17,9 @@ #include "hw/acpi/tpm.h" #include "libqtest.h" #include "tpm-util.h" +#include "qapi/qmp/qdict.h" + +static bool got_stop; =20 void tpm_util_crb_transfer(QTestState *s, const unsigned char *req, size_t req_size, @@ -184,3 +187,89 @@ void tpm_util_swtpm_kill(GPid pid) =20 kill(pid, SIGKILL); } + +void tpm_util_migrate(QTestState *who, const char *uri) +{ + QDict *rsp; + gchar *cmd; + + cmd =3D g_strdup_printf("{ 'execute': 'migrate'," + "'arguments': { 'uri': '%s' } }", + uri); + rsp =3D qtest_qmp(who, cmd); + g_free(cmd); + g_assert(qdict_haskey(rsp, "return")); + qobject_unref(rsp); +} + +/* + * Events can get in the way of responses we are actually waiting for. + */ +static QDict *tpm_util_wait_command(QTestState *who, const char *command) +{ + const char *event_string; + QDict *response; + + response =3D qtest_qmp(who, command); + + while (qdict_haskey(response, "event")) { + /* OK, it was an event */ + event_string =3D qdict_get_str(response, "event"); + if (!strcmp(event_string, "STOP")) { + got_stop =3D true; + } + qobject_unref(response); + response =3D qtest_qmp_receive(who); + } + return response; +} + +void tpm_util_wait_for_migration_complete(QTestState *who) +{ + while (true) { + QDict *rsp, *rsp_return; + bool completed; + const char *status; + + rsp =3D tpm_util_wait_command(who, "{ 'execute': 'query-migrate' }= "); + rsp_return =3D qdict_get_qdict(rsp, "return"); + status =3D qdict_get_str(rsp_return, "status"); + completed =3D strcmp(status, "completed") =3D=3D 0; + g_assert_cmpstr(status, !=3D, "failed"); + qobject_unref(rsp); + if (completed) { + return; + } + usleep(1000); + } +} + +void tpm_util_migration_start_qemu(QTestState **src_qemu, + QTestState **dst_qemu, + SocketAddress *src_tpm_addr, + SocketAddress *dst_tpm_addr, + const char *miguri) +{ + char *src_qemu_args, *dst_qemu_args; + + src_qemu_args =3D g_strdup_printf( + "-chardev socket,id=3Dchr,path=3D%s " + "-tpmdev emulator,id=3Ddev,chardev=3Dchr " + "-device tpm-crb,tpmdev=3Ddev ", + src_tpm_addr->u.q_unix.path); + + *src_qemu =3D qtest_init(src_qemu_args); + + dst_qemu_args =3D g_strdup_printf( + "-chardev socket,id=3Dchr,path=3D%s " + "-tpmdev emulator,id=3Ddev,chardev=3Dchr " + "-device tpm-crb,tpmdev=3Ddev " + "-incoming %s", + dst_tpm_addr->u.q_unix.path, + miguri); + + *dst_qemu =3D qtest_init(dst_qemu_args); + + free(src_qemu_args); + free(dst_qemu_args); +} diff --git a/tests/tpm-util.h b/tests/tpm-util.h index d155d99aea..b6253106d9 100644 --- a/tests/tpm-util.h +++ b/tests/tpm-util.h @@ -33,4 +33,14 @@ gboolean tpm_util_swtpm_start(const char *path, GPid *pi= d, SocketAddress **addr, GError **error); void tpm_util_swtpm_kill(GPid pid); =20 +void tpm_util_migrate(QTestState *who, const char *uri); + +void tpm_util_migration_start_qemu(QTestState **src_qemu, + QTestState **dst_qemu, + SocketAddress *src_tpm_addr, + SocketAddress *dst_tpm_addr, + const char *miguri); + +void tpm_util_wait_for_migration_complete(QTestState *who); + #endif /* TESTS_TPM_UTIL_H */ --=20 2.14.3