From nobody Sat Sep 21 03:03:01 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 164795131737632.50343301279986; Tue, 22 Mar 2022 05:15:17 -0700 (PDT) Received: from localhost ([::1]:47686 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nWdPx-00083A-Rp for importer@patchew.org; Tue, 22 Mar 2022 08:15:18 -0400 Received: from eggs.gnu.org ([209.51.188.92]:59740) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nWd8n-0003RA-Aj for qemu-devel@nongnu.org; Tue, 22 Mar 2022 07:57:34 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:33732) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nWd8l-0006Xu-Kb for qemu-devel@nongnu.org; Tue, 22 Mar 2022 07:57:33 -0400 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-134--mShUXKBMh2TqzL-jXhWnw-1; Tue, 22 Mar 2022 07:57:29 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 870691C04B60; Tue, 22 Mar 2022 11:57:29 +0000 (UTC) Received: from localhost (unknown [10.39.194.233]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 439624010A1C; Tue, 22 Mar 2022 11:57:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1647950251; 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=x/nWOWZ4rJg8/bzrORM6fWx6B4c3zOa/QO5cgrz63tE=; b=MHNfGEF+j53B/eVBUqVUDzo4wqtTk6RNihV1IMZsF2W0D5Ed+8c9GQKyBVAYBsvnguMfRN JWEUQud/Z5O+biX+/VOSi0ROIbVWQSTioU5NkYeAZjfk7+LvBZSL8amKrAsWO+/h0VFLe4 2PsfibvPS+H5Y+4lhp3zdIJtb/nicWI= X-MC-Unique: -mShUXKBMh2TqzL-jXhWnw-1 From: Hanna Reitz To: qemu-block@nongnu.org Subject: [PULL 24/25] iotests.py: Filters for VM.run_job() Date: Tue, 22 Mar 2022 12:56:46 +0100 Message-Id: <20220322115647.726044-25-hreitz@redhat.com> In-Reply-To: <20220322115647.726044-1-hreitz@redhat.com> References: <20220322115647.726044-1-hreitz@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=hreitz@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=hreitz@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -21 X-Spam_score: -2.2 X-Spam_bar: -- X-Spam_report: (-2.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.082, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-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: , Cc: Kevin Wolf , Peter Maydell , Hanna Reitz , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1647951345417100001 Content-Type: text/plain; charset="utf-8"; x-default="true" Allow filters for VM.run_job(), and pass the filters given to VM.blockdev_create() to it. (Use this opportunity to annotate VM.run_job()'s parameter types; unfortunately, for the filter, I could not come up with anything better than Callable[[Any], Any] that would pass mypy's scrutiny.) At one point, a plain string is logged, so the filters passed to it must work fine with plain strings. The only filters passed to it at this point are the ones from VM.blockdev_create(), which are filter_qmp_test_files() (by default) and 207's filter_hash(). Both cannot handle plain strings yet, but we can make them by amending filter_qmp() to treat them as plain values with a None key. Signed-off-by: Hanna Reitz Message-Id: <20220318125304.66131-2-hreitz@redhat.com> Reviewed-by: John Snow --- tests/qemu-iotests/iotests.py | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py index 4b788c7491..fcec3e51e5 100644 --- a/tests/qemu-iotests/iotests.py +++ b/tests/qemu-iotests/iotests.py @@ -607,8 +607,10 @@ def filter_qmp(qmsg, filter_fn): # Iterate through either lists or dicts; if isinstance(qmsg, list): items =3D enumerate(qmsg) - else: + elif isinstance(qmsg, dict): items =3D qmsg.items() + else: + return filter_fn(None, qmsg) =20 for k, v in items: if isinstance(v, (dict, list)): @@ -944,8 +946,12 @@ def qmp_log(self, cmd, filters=3D(), indent=3DNone, **= kwargs): return result =20 # Returns None on success, and an error string on failure - def run_job(self, job, auto_finalize=3DTrue, auto_dismiss=3DFalse, - pre_finalize=3DNone, cancel=3DFalse, wait=3D60.0): + def run_job(self, job: str, auto_finalize: bool =3D True, + auto_dismiss: bool =3D False, + pre_finalize: Optional[Callable[[], None]] =3D None, + cancel: bool =3D False, wait: float =3D 60.0, + filters: Iterable[Callable[[Any], Any]] =3D (), + ) -> Optional[str]: """ run_job moves a job from creation through to dismissal. =20 @@ -975,7 +981,7 @@ def run_job(self, job, auto_finalize=3DTrue, auto_dismi= ss=3DFalse, while True: ev =3D filter_qmp_event(self.events_wait(events, timeout=3Dwai= t)) if ev['event'] !=3D 'JOB_STATUS_CHANGE': - log(ev) + log(ev, filters=3Dfilters) continue status =3D ev['data']['status'] if status =3D=3D 'aborting': @@ -983,18 +989,18 @@ def run_job(self, job, auto_finalize=3DTrue, auto_dis= miss=3DFalse, for j in result['return']: if j['id'] =3D=3D job: error =3D j['error'] - log('Job failed: %s' % (j['error'])) + log('Job failed: %s' % (j['error']), filters=3Dfil= ters) elif status =3D=3D 'ready': - self.qmp_log('job-complete', id=3Djob) + self.qmp_log('job-complete', id=3Djob, filters=3Dfilters) elif status =3D=3D 'pending' and not auto_finalize: if pre_finalize: pre_finalize() if cancel: - self.qmp_log('job-cancel', id=3Djob) + self.qmp_log('job-cancel', id=3Djob, filters=3Dfilters) else: - self.qmp_log('job-finalize', id=3Djob) + self.qmp_log('job-finalize', id=3Djob, filters=3Dfilte= rs) elif status =3D=3D 'concluded' and not auto_dismiss: - self.qmp_log('job-dismiss', id=3Djob) + self.qmp_log('job-dismiss', id=3Djob, filters=3Dfilters) elif status =3D=3D 'null': return error =20 @@ -1007,7 +1013,7 @@ def blockdev_create(self, options, job_id=3D'job0', f= ilters=3DNone): =20 if 'return' in result: assert result['return'] =3D=3D {} - job_result =3D self.run_job(job_id) + job_result =3D self.run_job(job_id, filters=3Dfilters) else: job_result =3D result['error'] =20 --=20 2.35.1