From nobody Tue Dec 16 08:54:16 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1520511674063664.7534617372248; Thu, 8 Mar 2018 04:21:14 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7F4B58046E; Thu, 8 Mar 2018 12:21:12 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4E8F560175; Thu, 8 Mar 2018 12:21:12 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id EEDC2181B9FD; Thu, 8 Mar 2018 12:21:11 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w28CL9FM016913 for ; Thu, 8 Mar 2018 07:21:09 -0500 Received: by smtp.corp.redhat.com (Postfix) id 68298BA46; Thu, 8 Mar 2018 12:21:09 +0000 (UTC) Received: from mx1.redhat.com (ext-mx01.extmail.prod.ext.phx2.redhat.com [10.5.110.25]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 61A0760F90 for ; Thu, 8 Mar 2018 12:21:04 +0000 (UTC) Received: from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A59D581DE6 for ; Thu, 8 Mar 2018 12:21:03 +0000 (UTC) Received: from pps.filterd (m0098417.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w28CL0oq025973 for ; Thu, 8 Mar 2018 07:21:03 -0500 Received: from e06smtp12.uk.ibm.com (e06smtp12.uk.ibm.com [195.75.94.108]) by mx0a-001b2d01.pphosted.com with ESMTP id 2gk3btck9t-1 (version=TLSv1.2 cipher=AES256-SHA256 bits=256 verify=NOT) for ; Thu, 08 Mar 2018 07:21:02 -0500 Received: from localhost by e06smtp12.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 8 Mar 2018 12:20:53 -0000 Received: from b06cxnps4076.portsmouth.uk.ibm.com (9.149.109.198) by e06smtp12.uk.ibm.com (192.168.101.142) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Thu, 8 Mar 2018 12:20:52 -0000 Received: from d06av23.portsmouth.uk.ibm.com (d06av23.portsmouth.uk.ibm.com [9.149.105.59]) by b06cxnps4076.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id w28CKp1B56295612 for ; Thu, 8 Mar 2018 12:20:51 GMT Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2D283A4053 for ; Thu, 8 Mar 2018 12:13:47 +0000 (GMT) Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0F21DA4040 for ; Thu, 8 Mar 2018 12:13:47 +0000 (GMT) Received: from marc-ibm.boeblingen.de.ibm.com (unknown [9.152.224.51]) by d06av23.portsmouth.uk.ibm.com (Postfix) with ESMTP for ; Thu, 8 Mar 2018 12:13:46 +0000 (GMT) From: Marc Hartmayer To: Date: Thu, 8 Mar 2018 13:20:28 +0100 In-Reply-To: <20180308122043.15608-1-mhartmay@linux.vnet.ibm.com> References: <20180308122043.15608-1-mhartmay@linux.vnet.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 18030812-0008-0000-0000-000004D95AF7 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18030812-0009-0000-0000-00001E6C7AC0 Message-Id: <20180308122043.15608-6-mhartmay@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2018-03-08_07:, , 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 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1709140000 definitions=main-1803080146 X-Greylist: Sender passed SPF test, Sender IP whitelisted by DNSRBL, ACL 207 matched, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Thu, 08 Mar 2018 12:21:03 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Thu, 08 Mar 2018 12:21:03 +0000 (UTC) for IP:'148.163.158.5' DOMAIN:'mx0b-001b2d01.pphosted.com' HELO:'mx0a-001b2d01.pphosted.com' FROM:'mhartmay@linux.vnet.ibm.com' RCPT:'' X-RedHat-Spam-Score: -0.72 (RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL) 148.163.158.5 mx0b-001b2d01.pphosted.com 148.163.158.5 mx0b-001b2d01.pphosted.com X-Scanned-By: MIMEDefang 2.83 on 10.5.110.25 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 05/20] test: Implement virConnect(Un)RegisterCloseCallback X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Thu, 08 Mar 2018 12:21:13 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Implement the hypervisor APIs virConnectRegisterCloseCallback and virConnectUnregisterCloseCallbacks and mark this feature as supported in testConnectSupportsFeature. This increases test test coverage of the test suite as then the testConnectRegisterCloseCallback and testConnectUnregisterCloseCallback (which are almost identical to the implementations of the remote and vz driver) will be called by the virsh tests. Signed-off-by: Marc Hartmayer Reviewed-by: Boris Fiuczynski --- src/test/test_driver.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++= +++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 203358c7017f..2773f5c758c8 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -121,6 +121,7 @@ struct _testDriver { virDomainObjListPtr domains; virNetworkObjListPtr networks; virObjectEventStatePtr eventState; + virConnectCloseCallbackDataPtr closeCallback; }; typedef struct _testDriver testDriver; typedef testDriver *testDriverPtr; @@ -157,6 +158,7 @@ testDriverFree(testDriverPtr driver) virObjectUnref(driver->ifaces); virObjectUnref(driver->pools); virObjectUnref(driver->eventState); + virObjectUnref(driver->closeCallback); virMutexUnlock(&driver->lock); virMutexDestroy(&driver->lock); =20 @@ -404,6 +406,7 @@ testDriverNew(void) .free =3D testDomainDefNamespaceFree, }; testDriverPtr ret; + virConnectCloseCallbackDataPtr closeCallback; =20 if (VIR_ALLOC(ret) < 0) return NULL; @@ -423,6 +426,12 @@ testDriverNew(void) !(ret->pools =3D virStoragePoolObjListNew())) goto error; =20 + closeCallback =3D virNewConnectCloseCallbackData(); + if (!closeCallback) + goto error; + + ret->closeCallback =3D closeCallback; + virAtomicIntSet(&ret->nextDomID, 1); =20 return ret; @@ -6834,9 +6843,9 @@ testConnectSupportsFeature(virConnectPtr conn ATTRIBU= TE_UNUSED, int feature) { switch ((virDrvFeature) feature) { + case VIR_DRV_FEATURE_REMOTE_CLOSE_CALLBACK: case VIR_DRV_FEATURE_REMOTE_EVENT_CALLBACK: return 1; - case VIR_DRV_FEATURE_REMOTE_CLOSE_CALLBACK: case VIR_DRV_FEATURE_FD_PASSING: case VIR_DRV_FEATURE_MIGRATE_CHANGE_PROTECTION: case VIR_DRV_FEATURE_MIGRATION_DIRECT: @@ -6855,6 +6864,56 @@ testConnectSupportsFeature(virConnectPtr conn ATTRIB= UTE_UNUSED, } } =20 +static int +testConnectRegisterCloseCallback(virConnectPtr conn, + virConnectCloseFunc cb, + void *opaque, + virFreeCallback freecb) +{ + testDriverPtr priv =3D conn->privateData; + int ret =3D -1; + + testDriverLock(priv); + + if (virConnectCloseCallbackDataGetCallback(priv->closeCallback) !=3D N= ULL) { + virReportError(VIR_ERR_OPERATION_INVALID, "%s", + _("A close callback is already registered")); + goto cleanup; + } + + virConnectCloseCallbackDataRegister(priv->closeCallback, conn, cb, + opaque, freecb); + ret =3D 0; + + cleanup: + testDriverUnlock(priv); + return ret; +} + + +static int +testConnectUnregisterCloseCallback(virConnectPtr conn, + virConnectCloseFunc cb) +{ + testDriverPtr priv =3D conn->privateData; + int ret =3D -1; + + testDriverLock(priv); + + if (virConnectCloseCallbackDataGetCallback(priv->closeCallback) !=3D c= b) { + virReportError(VIR_ERR_OPERATION_INVALID, "%s", + _("A different callback was requested")); + goto cleanup; + } + + virConnectCloseCallbackDataUnregister(priv->closeCallback, cb); + ret =3D 0; + + cleanup: + testDriverUnlock(priv); + return ret; +} + =20 static virHypervisorDriver testHypervisorDriver =3D { .name =3D "Test", @@ -6863,7 +6922,9 @@ static virHypervisorDriver testHypervisorDriver =3D { .connectGetVersion =3D testConnectGetVersion, /* 0.1.1 */ .connectGetHostname =3D testConnectGetHostname, /* 0.6.3 */ .connectGetMaxVcpus =3D testConnectGetMaxVcpus, /* 0.3.2 */ + .connectRegisterCloseCallback =3D testConnectRegisterCloseCallback, /*= 4.2.0 */ .connectSupportsFeature =3D testConnectSupportsFeature, /* 4.2.0 */ + .connectUnregisterCloseCallback =3D testConnectUnregisterCloseCallback= , /* 4.2.0 */ .nodeGetInfo =3D testNodeGetInfo, /* 0.1.1 */ .nodeGetCPUStats =3D testNodeGetCPUStats, /* 2.3.0 */ .nodeGetFreeMemory =3D testNodeGetFreeMemory, /* 2.3.0 */ --=20 2.13.4 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list