From nobody Thu Nov 13 20:40:40 2025 Delivered-To: importer@patchew.org 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; 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 ARC-Seal: i=1; a=rsa-sha256; t=1582718337; cv=none; d=zohomail.com; s=zohoarc; b=kFhiw0BG/XgE9GSBLxj+VFnk3ecj8mA+Jm/r4t/ZDBXwwjiQ81SgEhYlzd9AGgoweuRDJvVdyP2OGOQGzW7MWFMu1C1fpfszMukpaq+jACjrSgUGlT1mpClYzpsp+Vufx9RBzYUlkwlAUc57sQ2Dqj5gJCFFcQZrYTSkc89hEuk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1582718337; 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=/TvQ0iHXZ1hJ2ThIawEHE+YDl4xRkzH85zp+EiAeC2Q=; b=QCeJzp40GbJsmV6ItQoO4POEMorS32TSjoaRYDnlB7N9bAKeGCk5DamOM2uAd0R/4PF346cMvl2C+QQFxD70fWjiu/kohFL6kKfO6kr9a4v96E8jKmthyXi4I9vyJxAnGxpN5zahr7ug4498OTNJVDzou01YhyP6hAozIN9jjSI= ARC-Authentication-Results: i=1; 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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 158271833742045.20413119570617; Wed, 26 Feb 2020 03:58:57 -0800 (PST) Received: from localhost ([::1]:43198 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j6vL6-0000jG-8U for importer@patchew.org; Wed, 26 Feb 2020 06:58:56 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:39253) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j6vK4-0007mC-Bo for qemu-devel@nongnu.org; Wed, 26 Feb 2020 06:57:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j6vK2-0000K7-5P for qemu-devel@nongnu.org; Wed, 26 Feb 2020 06:57:52 -0500 Received: from us-smtp-delivery-1.mimecast.com ([205.139.110.120]:58665 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j6vK2-0000Gk-0p for qemu-devel@nongnu.org; Wed, 26 Feb 2020 06:57:50 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-58-740QFTS0Mlmz6Kvf5Wfy2w-1; Wed, 26 Feb 2020 06:57:43 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 9DEC9800D54 for ; Wed, 26 Feb 2020 11:57:42 +0000 (UTC) Received: from kh066.redhat.com (ovpn-117-106.ams2.redhat.com [10.36.117.106]) by smtp.corp.redhat.com (Postfix) with ESMTP id E517A5C102; Wed, 26 Feb 2020 11:57:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582718269; 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=/TvQ0iHXZ1hJ2ThIawEHE+YDl4xRkzH85zp+EiAeC2Q=; b=dbmNk0IVgT5fZSVDEEFiX0qP3i+OSKiJzbR9LejVk04JeIPb6fExbxla8b5lCKrBWKnMOR IV82muAc4ftOtd5T9jWREDrBOMwGkB9/dkDishwqQdkViBSumBS56kkb6uSe+EPdAtJinI uob7K4uRziFmWTKT7+urjopVKgk3qD8= X-MC-Unique: 740QFTS0Mlmz6Kvf5Wfy2w-1 From: Oksana Vohchana To: qemu-devel@nongnu.org Subject: [PATCH v3 1/3] python/qemu/machine: Adding functions _send_fds and _recv_fds Date: Wed, 26 Feb 2020 13:57:33 +0200 Message-Id: <20200226115735.857-2-ovoshcha@redhat.com> In-Reply-To: <20200226115735.857-1-ovoshcha@redhat.com> References: <20200226115735.857-1-ovoshcha@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 205.139.110.120 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: ovoshcha@redhat.com, philmd@redhat.com, ehabkost@redhat.com, wainersm@redhat.com, crosa@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" To pass the fd via SCM_RIGHT we should use socket_scm_helper file. And the path to it file should be provided on starting the virtual machine. For acceptance tests, this is not convenient, but sometimes not possible to get this binary file during the testing. This patch provides new possibilities to send or receive data through the Unix domain socket file descriptor. This is useful for obtaining a socket that belongs to a different network namespace. Signed-off-by: Oksana Vohchana --- python/qemu/machine.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/python/qemu/machine.py b/python/qemu/machine.py index 183d8f3d38..976316e5f5 100644 --- a/python/qemu/machine.py +++ b/python/qemu/machine.py @@ -24,6 +24,7 @@ import subprocess import shutil import socket import tempfile +import array =20 from . import qmp =20 @@ -155,6 +156,29 @@ class QEMUMachine(object): self._args.append(','.join(options)) return self =20 + def _recv_fds(self, sock, msglen=3D8192, maxfds=3D4096): + """ + Function from: + https://docs.python.org/3/library/socket.html#socket.socket.recvmsg + """ + fds =3D array.array("i") + msg, ancdata, flags, addr =3D sock.recvmsg(msglen, socket.CMSG_LEN( + maxfds * fds.itemsize)) + for cmsg_level, cmsg_type, cmsg_data in ancdata: + if (cmsg_level =3D=3D socket.SOL_SOCKET and + cmsg_type =3D=3D socket.SCM_RIGHTS): + fds.frombytes(cmsg_data[:len(cmsg_data) - (len(cmsg_data) + % fds.itemsize)]) + return msg, list(fds) + + def _send_fds(self, sock, msg, fds): + """ + Function from: + https://docs.python.org/3/library/socket.html#socket.socket.sendmsg + """ + return sock.sendmsg([msg], [(socket.SOL_SOCKET, socket.SCM_RIGHTS, + array.array("i", fds))]) + def send_fd_scm(self, fd=3DNone, file_path=3DNone): """ Send an fd or file_path to socket_scm_helper. --=20 2.21.1 From nobody Thu Nov 13 20:40:40 2025 Delivered-To: importer@patchew.org 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; 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 ARC-Seal: i=1; a=rsa-sha256; t=1582718337; cv=none; d=zohomail.com; s=zohoarc; b=H1wfoVSh91euYRAd3XcVufS6gXgaAzpxXAH1rFK8PvVhKHpHXd/2/YnyzS0s8aXFdqYMh9ciehsmG67oE6Vjvxuczu/tp+b1meO45XITkIaxNE2BTAEqAm+61VwsiEF60GVvNqE3sijqw3AaGft2sQg5/XW1xDgAQituBZAfSvE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1582718337; 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=cZZZFtNgFSqSUAScMorUibiLokP5MDGEpCKyOnxM8iM=; b=hvNzUHrNXtij/5E0bTcIkqLqz64i9t0wkGQAEnCv+YVYc1OqzUpEHkXdsQIirE1pnTaHR+lbJI3nccnbqPgIEFaZTfZM41AtXSBCE3bLgOnjm+oVgZv1aJUKNydulHX+lKs3I6zwhEB72A/237q5Q6SH0Pl0d3oEqbGOuGyV984= ARC-Authentication-Results: i=1; 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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1582718337425395.6838904856511; Wed, 26 Feb 2020 03:58:57 -0800 (PST) Received: from localhost ([::1]:43200 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j6vL6-0000kp-Bi for importer@patchew.org; Wed, 26 Feb 2020 06:58:56 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:39266) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j6vK4-0007mc-OM for qemu-devel@nongnu.org; Wed, 26 Feb 2020 06:57:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j6vK3-0000LY-Dj for qemu-devel@nongnu.org; Wed, 26 Feb 2020 06:57:52 -0500 Received: from us-smtp-delivery-1.mimecast.com ([205.139.110.120]:44868 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j6vK3-0000L2-9x for qemu-devel@nongnu.org; Wed, 26 Feb 2020 06:57:51 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-290-Klkcf9kkPBGIU3rnYdZYNA-1; Wed, 26 Feb 2020 06:57:45 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id AD81B107ACCA for ; Wed, 26 Feb 2020 11:57:44 +0000 (UTC) Received: from kh066.redhat.com (ovpn-117-106.ams2.redhat.com [10.36.117.106]) by smtp.corp.redhat.com (Postfix) with ESMTP id 09B765C102; Wed, 26 Feb 2020 11:57:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582718270; 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=cZZZFtNgFSqSUAScMorUibiLokP5MDGEpCKyOnxM8iM=; b=Rg6fMg6rlDSYbQMX9ms6BGONACs66JMmA1fT/XmnSnVtYWD3l0MAFh97NqEdLFfi22S8se 1Z1mY6IVWUgVOTVEhmDux8/2IKMUOK4nbDRsG014GMCUIzoMIF8JNFJl1/uz048Ht187Lg Un/m4Dth7wJ7ipv//132yYhut0wnVPw= X-MC-Unique: Klkcf9kkPBGIU3rnYdZYNA-1 From: Oksana Vohchana To: qemu-devel@nongnu.org Subject: [PATCH v3 2/3] python/qemu/machine: Updates send_fd_scm function Date: Wed, 26 Feb 2020 13:57:34 +0200 Message-Id: <20200226115735.857-3-ovoshcha@redhat.com> In-Reply-To: <20200226115735.857-1-ovoshcha@redhat.com> References: <20200226115735.857-1-ovoshcha@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 205.139.110.120 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: ovoshcha@redhat.com, philmd@redhat.com, ehabkost@redhat.com, wainersm@redhat.com, crosa@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" This patch upgrades the send_fd_scm function to use it in way if not provide socket_scm_helper. It uses new provided functions _send_fds and _recv_fds = that depend on FD's and data that allow us to send a file/socket descriptor (with access and permissions) from one process to another. The parameter data include qmp message like getfd or add-fd. Signed-off-by: Oksana Vohchana --- python/qemu/machine.py | 64 ++++++++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 24 deletions(-) diff --git a/python/qemu/machine.py b/python/qemu/machine.py index 976316e5f5..906ca118db 100644 --- a/python/qemu/machine.py +++ b/python/qemu/machine.py @@ -179,20 +179,27 @@ class QEMUMachine(object): return sock.sendmsg([msg], [(socket.SOL_SOCKET, socket.SCM_RIGHTS, array.array("i", fds))]) =20 - def send_fd_scm(self, fd=3DNone, file_path=3DNone): + def send_fd_scm(self, fd=3DNone, file_path=3DNone, data=3DNone): """ - Send an fd or file_path to socket_scm_helper. + Can be used in two different cases. + Send an fd or file_path to socket_scm_helper or + provide data and fd to send it to the socket. =20 - Exactly one of fd and file_path must be given. - If it is file_path, the helper will open that file and pass its ow= n fd. + Exactly one of fd and file_path must be given to the case of + socket_scm_helper. If it is file_path, the helper will open that f= ile + and pass its own fd. + + To second case need adds data that include a QMP request and fd """ # In iotest.py, the qmp should always use unix socket. assert self._qmp.is_scm_available() - if self._socket_scm_helper is None: - raise QEMUMachineError("No path to socket_scm_helper set") - if not os.path.exists(self._socket_scm_helper): - raise QEMUMachineError("%s does not exist" % - self._socket_scm_helper) + if data is None: + if self._socket_scm_helper is None: + raise QEMUMachineError( + "No path to socket_scm_helper set or data provided") + if not os.path.exists(self._socket_scm_helper): + raise QEMUMachineError("%s does not exist" % + self._socket_scm_helper) =20 # This did not exist before 3.4, but since then it is # mandatory for our purpose @@ -201,24 +208,33 @@ class QEMUMachine(object): if fd is not None: os.set_inheritable(fd, True) =20 - fd_param =3D ["%s" % self._socket_scm_helper, - "%d" % self._qmp.get_sock_fd()] + if data is None: + fd_param =3D ["%s" % self._socket_scm_helper, + "%d" % self._qmp.get_sock_fd()] + if file_path is not None: + assert fd is None + fd_param.append(file_path) + else: + assert fd is not None + fd_param.append(str(fd)) =20 - if file_path is not None: - assert fd is None - fd_param.append(file_path) - else: - assert fd is not None - fd_param.append(str(fd)) + devnull =3D open(os.path.devnull, 'rb') + proc =3D subprocess.Popen(fd_param, stdin=3Ddevnull, + stdout=3Dsubprocess.PIPE, + stderr=3Dsubprocess.STDOUT, close_fds= =3DFalse) + output =3D proc.communicate()[0] + if output: + LOG.debug(output) =20 - devnull =3D open(os.path.devnull, 'rb') - proc =3D subprocess.Popen(fd_param, stdin=3Ddevnull, stdout=3Dsubp= rocess.PIPE, - stderr=3Dsubprocess.STDOUT, close_fds=3DFa= lse) - output =3D proc.communicate()[0] - if output: - LOG.debug(output) + return proc.returncode =20 - return proc.returncode + else: + sock_fd =3D socket.fromfd(self._qmp.get_sock_fd(), socket.AF_U= NIX, + socket.SOCK_STREAM) + fds_param =3D [fd, self._qmp.get_sock_fd()] + self._send_fds(sock_fd, data, fds_param) + self._recv_fds(sock_fd) + return self =20 @staticmethod def _remove_if_exists(path): --=20 2.21.1 From nobody Thu Nov 13 20:40:40 2025 Delivered-To: importer@patchew.org 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; 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 ARC-Seal: i=1; a=rsa-sha256; t=1582718423; cv=none; d=zohomail.com; s=zohoarc; b=npg2DwixhTYwhstJupcYiSgMGG3/BzqOvyENeJfJNachs0J5WiNnyFPKIiIqjGw+C19kKM3c9rlQqi+7qgK8YseIu4oh+H57Y5B88zJ/pPgnTx+gE+4hGuHyrTH4Z+ZlD/RNErJjxull29brajqM1Wyo5zrSu55TV3K/+thpQa8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1582718423; 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=7u2as1P7VZGjapNZAwy/f4vGjFGJdJvNHv2ThNBYOYQ=; b=aCp2RCIk+jx2UyOl5qGpiu7k/r4bv+kkJTIfZVBxce8sjpLl0l4P9I+zWoHp1w32q/NPExpyDDMwFSRE02cdXTP/2gNZg5UjW6T+DZxJ8EkVJ5S/3pKCe4OFowuPxvJxzKCID945y4nGaAtabeO1aRPgzgwSI1TcJfahkjSpIug= ARC-Authentication-Results: i=1; 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 header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1582718423596568.6342361089767; Wed, 26 Feb 2020 04:00:23 -0800 (PST) Received: from localhost ([::1]:43222 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j6vMU-0003H9-Df for importer@patchew.org; Wed, 26 Feb 2020 07:00:22 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:39285) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j6vK5-0007n5-6M for qemu-devel@nongnu.org; Wed, 26 Feb 2020 06:57:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j6vK4-0000QF-7S for qemu-devel@nongnu.org; Wed, 26 Feb 2020 06:57:53 -0500 Received: from us-smtp-1.mimecast.com ([207.211.31.81]:36611 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j6vK4-0000LQ-1L for qemu-devel@nongnu.org; Wed, 26 Feb 2020 06:57:52 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-477--XV0-7VjNAC42iuJsreZcQ-1; Wed, 26 Feb 2020 06:57:47 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id CD03818FE860 for ; Wed, 26 Feb 2020 11:57:46 +0000 (UTC) Received: from kh066.redhat.com (ovpn-117-106.ams2.redhat.com [10.36.117.106]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0DBF75C102; Wed, 26 Feb 2020 11:57:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582718271; 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=7u2as1P7VZGjapNZAwy/f4vGjFGJdJvNHv2ThNBYOYQ=; b=PWxkbkANYwvbrcqRqhoRyOfYEn55XxCp2QMG7UzwFp27+IWAHNfmHr1q+I3EFZBWnsTuuO 5vs4C7i2mJUiWPu7SGndoCR9/wAbFbYueLCJCJK4DBD+DoSid6oxTjivm15uWhm9Y/GaoP 7c3iheYlN4GGjZg+BpRF3DQsgrZOBUg= X-MC-Unique: -XV0-7VjNAC42iuJsreZcQ-1 From: Oksana Vohchana To: qemu-devel@nongnu.org Subject: [PATCH v3 3/3] Acceptance test: add FD migration Date: Wed, 26 Feb 2020 13:57:35 +0200 Message-Id: <20200226115735.857-4-ovoshcha@redhat.com> In-Reply-To: <20200226115735.857-1-ovoshcha@redhat.com> References: <20200226115735.857-1-ovoshcha@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 207.211.31.81 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: ovoshcha@redhat.com, philmd@redhat.com, ehabkost@redhat.com, wainersm@redhat.com, crosa@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The patch adds a new type of migration test through the file descriptor. Signed-off-by: Oksana Vohchana --- tests/acceptance/migration.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/acceptance/migration.py b/tests/acceptance/migration.py index a8367ca023..7f4879ce5d 100644 --- a/tests/acceptance/migration.py +++ b/tests/acceptance/migration.py @@ -10,7 +10,10 @@ # later. See the COPYING file in the top-level directory. =20 =20 +import os import tempfile +from socket import socketpair, AF_UNIX, SOCK_STREAM + from avocado_qemu import Test from avocado import skipUnless =20 @@ -75,3 +78,21 @@ class Migration(Test): """ free_port =3D self._get_free_port() dest_uri =3D 'exec:nc -l localhost %u' % free_port + + def test_migration_with_fd(self): + opaque =3D 'fd-migration' + data_to_send =3D b"{\"execute\": \"getfd\", \"arguments\": \ + {\"fdname\": \"fd-migration\"}}" + send_socket, recv_socket =3D socketpair(AF_UNIX, SOCK_STREAM) + fd1 =3D send_socket.fileno() + fd2 =3D recv_socket.fileno() + os.set_inheritable(fd2, True) + + source_vm =3D self.get_vm() + source_vm.launch() + source_vm.send_fd_scm(fd=3Dfd1, data=3Ddata_to_send) + + dest_vm =3D self.get_vm('-incoming', 'fd:%s' % fd2) + dest_vm.launch() + source_vm.qmp('migrate', uri=3D'fd:%s' % opaque) + self.assert_migration(source_vm, dest_vm) --=20 2.21.1