From patchwork Tue May 30 13:57:59 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Anton Nefedov X-Patchwork-Id: 768635 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3wcbHp0NQlz9s78 for ; Wed, 31 May 2017 00:16:06 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="h8Cj+zj0"; dkim-atps=neutral Received: from localhost ([::1]:54081 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dFhwJ-0002Jr-Op for incoming@patchwork.ozlabs.org; Tue, 30 May 2017 10:16:03 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46051) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dFhfb-0005Fw-RF for qemu-devel@nongnu.org; Tue, 30 May 2017 09:58:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dFhfX-0007I3-H4 for qemu-devel@nongnu.org; Tue, 30 May 2017 09:58:47 -0400 Received: from mail-he1eur01on0136.outbound.protection.outlook.com ([104.47.0.136]:15171 helo=EUR01-HE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dFhfX-0007GL-4O for qemu-devel@nongnu.org; Tue, 30 May 2017 09:58:43 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=AlzhrcKLD6LO8ce0oJcX7GBkmLaJsrtCCpDJ02LEzbs=; b=h8Cj+zj0CmDaQ9MK6N1Ir9JtCeWbY6nPvvvVP43hMMvpowBBDCJmeZbsOxtubelrwyGkpvl2gjlHJD4nVBzlFJoHj51Cr5IXMWkXRnEpuv+68XudouBswrDt0oj2dnQ0FJ98OtvVdFH6iUT5fd80hmPqXIPYK5oM2KwbPOOdCxQ= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; Received: from xantnef-ws.sw.ru (195.214.232.6) by HE1PR0801MB1993.eurprd08.prod.outlook.com (2603:10a6:3:4f::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1124.9; Tue, 30 May 2017 13:58:33 +0000 From: Anton Nefedov To: Date: Tue, 30 May 2017 16:57:59 +0300 Message-ID: <1496152683-102751-10-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1496152683-102751-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1496152683-102751-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR02CA0033.eurprd02.prod.outlook.com (2603:10a6:6:15::46) To HE1PR0801MB1993.eurprd08.prod.outlook.com (2603:10a6:3:4f::23) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: HE1PR0801MB1993: X-MS-Office365-Filtering-Correlation-Id: d72ac463-c99d-44a3-a51f-08d4a763f64b X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:HE1PR0801MB1993; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1993; 3:/rz/XUWhxgUm3VtUpfMHQkMdpQDr5+duT1L3za1IYCnMF8SQwq/ufzOt1d1s0kqL5QVuQkM8I6oQoDPw5wtxXDK9VVf3YMnBvBizQxr7UxVpVJSrEMLg1XlR75hRGF/CDUi6ztttjt8UAZRaoqlH80OCjLZCjdD4jikPxIt3qIGLXtLS0bzqu9BrohSlOY61Wd56arAK9xasOomlqUvbpyG+pW5XtqVmdrFn7NaKEDMlC1LXM24if8BKuM4uUtkz24gVd6qk21w8teEIz6C2F7gUyKPllQ+BhJ8knr3nNemLCXEOmMU0mUnCjFz9HPQhrsZDFqbmAYLmZD2syP7a4Q==; 25:GGDGI9pYFaVvBcdGDvH1d/jnoJY+9hb7TZo05eqYSgzN9s73mc8zX6BxqtHs+HHvdVzg5t0vvIKk/XnzdVIoKxljBxOsN18k1pqMFioTRUwOdQMbbyflqfai9KHC5Xm/nAlzq6InhC+EcVm4K4EEmLD+pEpdkZYZYbsH4fZr+SgRAWhFkLjACXv4I1hu2cx0LukhDgwxczPXjCVpOMPLBPM2rLMx6y0kXiW99pym6+W0xy4uV3NFHA6nUNnVLLAFatx6/GjCAIiI846YvQJLWelbuDh2HdK8tcGwLZivAqnh5HKtsb10j9ycdLEFVgcv9l5PXejhOqWfnZUod+N9NEI2n1EN0FD+QyE+5jbbOQtdMmP0lWIisEagZ5TvAX0ctp6X0g2IcpslBDXLegTuQ6dOIGraWCrQk0QodCOcfUEQCaEOMU/jsaDWdvR+9UDDtay++0vH5RCJ40GaoYVaNrC49+FEO5oYPgTVTCYlaec= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1993; 31:z2N3Yub/knecCC6qKOl6UoEFGoqEh60TZh9/Lxt1HSCVr/CSZYHfmd1cHflawSTMSUEikyWLotGLVmKE+tfR/40n0JmENzNVvfpTsqc7k4EyVJUAqeZuFLjswV9yNQdxQrK2XcWU5cp42B/Rj4/LKeb+oqLJ5+HOda/IlGZarUANbVMH4eg41tLI+z//ywMxzIjD5nqMyxqV+vMXcu7qeUyCCCrtbjTMeKsaDVlRxpE=; 20:5o/1XKSUv6jW90ferko59RVWaIMaJ+uGWnKAIw5O0ooJoKPmVD7l+QNfFXU/36EW7K7c3yLjQkfQaPvIMGMEzWe+yhxQuvpUg9q08kCk9gZIo9eQ9lblExirzXr7ynffJDxsj7N5dvR032B5hgGeNR83fmuVGYDf7qgsyrCMp6Lz/GcMbyZj/bb9YEEA5BXBDuqmcxxsEFnImYoUTcz9m2Lk6x04MeuQ5/Fr4cqLADAWbLPhT+qb5CB+pe6i6k/xq6fMVWLIRogyPKJg3UqjFao5xg8PLLV3NUdm4z5tIFUk4AWMkSvrl5pTwZQf/y+sYhJAkAawtqc5epWHVOuArf81jrX0QHkhBuWrihpSeFKt6lWBmOkadxHdXVDIUvZ97lc3GWKH+CPWXTD3IpBVWlAg7JmqXLsOoZSAc967uxg= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700073)(100105000095)(100000701073)(100105300095)(100000702073)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(3002001)(100000703073)(100105400095)(10201501046)(6041248)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123562025)(20161123558100)(20161123555025)(6072148)(100000704073)(100105200095)(100000705073)(100105500095); SRVR:HE1PR0801MB1993; BCL:0; PCL:0; RULEID:(100000800073)(100110000095)(100000801073)(100110300095)(100000802073)(100110100095)(100000803073)(100110400095)(100000804073)(100110200095)(100000805073)(100110500095); SRVR:HE1PR0801MB1993; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1993; 4:Lb67pVQF3tJIG/hn+Dp6NG+uf9mpfgFrqBS1ZEHy?= =?us-ascii?Q?GOw8KJEcojCiLnvLDLOqr0ThZguxo5dtSy7HWOIgkygLxoGOvo/JenRu0sQ5?= =?us-ascii?Q?F0QUoIkak/cKSRSbNx+Uf0gV5tIcQV3tm+U5BL+ktNO8Jj0J9TIvSSxfhMC7?= =?us-ascii?Q?7FMCy1PzTeFfEitGJ0YFPc/FjYp39FJSPpIWniMbrHx8bcIryac3Z5iGPPuf?= =?us-ascii?Q?Gm/KT27nUsUgRkqT7sOX6pFDqtsVcjg27387UEaZ9HKDnd0n/He2Uy56MKd8?= =?us-ascii?Q?cZnvuJfVOKY/cI8AYpxKVrU28xWmF9jqVFjXUK+LAyYhtG/oN6DuBPSob5p6?= =?us-ascii?Q?Qony/nl5XVYmZ/v5Fec5dMzPLo+Ch1S5bXlLN1+h+wa4odCGYMeiYY/DN6Wg?= =?us-ascii?Q?KIjlgE6PZ0NViZNZukyV58OUsU64izUeITtdsHfQqi0vpdjw2/T59YFQFoUJ?= =?us-ascii?Q?rRYGkr+7Hxqzfc9IkhLRUDOloLjYnK7eCiJtOnYr1JaBtQMrMbhooB6VsQTo?= =?us-ascii?Q?jnlb13TxH3wXTmIA7MYW0jb19dM+IexD7+fk0Gujhi2nic4/fSYS/KHnU+jx?= =?us-ascii?Q?SKQyS9lufnwYv36GjYvdY/2vgIFOeLoFBRX5vAOk0SQ+mQUkXFVKOUCAfdZW?= =?us-ascii?Q?WClm55D1KgIuUNOl1gedEWHOjX6ec4EUAYOHje/Zhwxd2RkNIban495bWdin?= =?us-ascii?Q?4RVD3/fWzB3DPy5IpVIy5ORlifyuIeIX6Intef0p2iR0iRY+Rs0u+Rei0hzh?= =?us-ascii?Q?6Wl6HzXsQg7VLY+CO+1pXvWGuYOgXXT1/ynme42r9ZS/MtLAJ+mub6j3DUQr?= =?us-ascii?Q?2TyhASFj9pEVs6kSr1XK+5/b24Hw/g9Q22euZYzWBnJT80yIccyHsvwGpXd7?= =?us-ascii?Q?3OUMoHNTxlRdE5yJ8w1SXn1FuxFFT8nMdtNgXb84Xnpt87h2ZQ/qp4ccY62B?= =?us-ascii?Q?trEhRY5sPkDRnexHJROmRGLW1078VxfgNVP8nK+T3ei8SmvrxWakOPlNIjFq?= =?us-ascii?Q?CADlFmj88t8NtzRQFi3KMQQQ9MjiV2XKLB1jYzRZ473CrkGVhjGiXK1H2qRr?= =?us-ascii?Q?brhZ4GpevJPaqkjlbc8gXcj9uRViHpaEBV/nmc8LyyZWL+Sg3XhZqcX4cCpi?= =?us-ascii?Q?uTwqiaikFnr7hOiSSIPs8zpfz/PWU5ZX?= X-Forefront-PRVS: 032334F434 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39830400002)(39450400003)(39410400002)(39400400002)(6506006)(6486002)(86362001)(6916009)(2950100002)(6666003)(54906002)(38730400002)(53936002)(6512007)(25786009)(478600001)(5660300001)(47776003)(305945005)(7736002)(66066001)(107886003)(5003940100001)(110136004)(189998001)(2906002)(4326008)(50226002)(3846002)(8676002)(81166006)(6116002)(53416004)(50466002)(2351001)(48376002)(76176999)(42186005)(50986999)(33646002)(36756003); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR0801MB1993; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1993; 23:gUiB6i+XLCygH+u9o2MWLz2RvNmm2f1oWY8nk4b?= =?us-ascii?Q?YYIK0++/C6eWaSfB8JXDVgWEnAsNntssQwtHWiEOdNf0t3nqwzf7VT4rHuVz?= =?us-ascii?Q?P1k/zg9saTSqDMzqlcDG2kka8NBy/Id8/avTJR4pF0R4Nwh6hjIW283AOZcT?= =?us-ascii?Q?QENhk+LSm+kdUfjApclTstV0SILoYmavuiFMSfACusoqhJ/1MM3VAKlDI7bk?= =?us-ascii?Q?fz4Ez7LBJAk5PjxRmqFd4Ezl7obJcxbNYNy0SgwFq6+R7ZULklSDa3jjoQMt?= =?us-ascii?Q?V+MyG10fdrk5e4VCQX83dtepxp7LFOGEerS/gfr6aBnOSbIr7FTmy86oLtP0?= =?us-ascii?Q?ICDhV5hbPxoMnkWU2PTsvR+27Q2ZXwfpcE6KtzXKgV0FfoC5TUIQrH9d1E++?= =?us-ascii?Q?yQuAotHiz9n6xRBjKwakSKmKI7Uv64nMG5BMdKLriTwFZDSp1XDhVLR3F23C?= =?us-ascii?Q?cFOsfYh+cSK4HLa0xpzeOvye2zquzL6SRtR4iupsa1QWqpewacC8tlOy9lGj?= =?us-ascii?Q?bTBZ9x57911ZXddtIUnP2YmEeYhOq20XTAC+xkBqCFIrQzExAoH3+dn/i1G+?= =?us-ascii?Q?N2P6pdvkipvO8DFuqdj4e9bM48GJ3hTDUPlCG2If3eZtGm/CuC8y08bKSSk8?= =?us-ascii?Q?vSIrYHgLxs3gpp1Dz0xkje6TJZo+mla8AEMQdzpH+/WeLqDQBggZCyAJm3hL?= =?us-ascii?Q?ohjszpQNB/ePsN+Zl3lFJ7+7pBA7NzyrGNbiSNYhx91aBOiZXn445VMlpWhJ?= =?us-ascii?Q?47IkCFLfDXgjYLvu25EUrRPeq6+J9g6oSeM3MrpZtvLBq7gF/tVhMxKptFS8?= =?us-ascii?Q?ytHf4KRD8YCW620/1nl7cj1P3DyV/tk6P++uF7elqkOLjwM90n0HnGztrDZ8?= =?us-ascii?Q?QWdOT5113EgRYutL0u/FkeGzjsG6TaiAV89rZ6Jqyt9dA/5LQm9FKBFGxau4?= =?us-ascii?Q?77DGfgwyC3j+x9gmxL+0RVZQQtddGVPGDLZdjP/UAxWE/WsqD02dxL3Sdt4h?= =?us-ascii?Q?dBbdgTgMJ041CqNA8x70PtKOyKNa7hiY4PZAZJ+x9lsR729GNiNwaaHAmFS5?= =?us-ascii?Q?CGnuHuNSx+2dWILlEL1c8nEHqtru8?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1993; 6:++b377xh9UqfvWQb4UxwdiD5Mu2Q2XzUgG/FikxXz57Yrx1IC2/ZEg/rUhiasKd49u4G31T9CbWDcAvEitEhHUvcXUGXsSCPAUoQnTJcZ+ZhlOyz4mRm+Rc0Qhkhpg81I9dOiB5Ckkgv1MI8iqKn2O3n2WZhFUaUeoLZJ6CNLXxMO1zKnZctPg2jjzb5CqI8cll0B22GX36j+svsSOUJXtSM+38mAtUr7v4U/ouBjHRkBDhFb88xMELpfK/4NVaNJtZkjMrrjg+CFqSM0W12ARAiVCFY7u38qNkWkdhZgSlqhUDK1LsP/Bm2g67jomviT2aFeOynNb/Qqw/x01aWMhNLP/zBTtQz3nKwMhDVtu2szxYKSGcB5oJ6Yziz6fI9DPSGMVfpx9u005zI6GKwk1Lj3GSh1mn8JuysHMqlYZB0d3TQPdHxF5WAuGpFSv29LkaMU68XkDZIxMxfH2EqQJbE9sccrByLXiuSU5eXYPYAo/0/xTPfmQjJTkTsfqjwRX/CgYTBUZV8BdM/GN98Zw== X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1993; 5:K1NegSuFAJT8cR3bL/NpIHudkx0cr6BNSt8p/kKH/4EO8pxXZ6Nk6lLKFgJBH627FhehH6LZ+ggPteacs4oAGuaCOcMZy+UUWyGV7hJhPXg4qWEZlt6do7whKFI/Li2fUSvStxjWsqxhaDrQwjwQ4fkT6BCaOVH8Q0GVkwptCGiMuDg/qi+up/Hpjh2sb1uEvxRuZJJI9gxMXBvLgjO4Abew0TMEIV0fhwOBTcncd4zsyzvPpYLXmlLEHn+EzS48vQNUei8e57d46fRrAFN2ZIFrKPGaS+oATaNd+OBQjJzyVTFiMdlMCEKKffTVNQ7xvmCXMiiTRqhKLPcK16W+QjUyH7cTunXoXpQLcDiGE2oK+8VFOEmt2hbzBlZZ1HEkNimY31QcvduVhte16bakFOUn0wPxpe7cssYLVrDX3AZHSSVbaeq8ed49MdyIMQXftl8Ksi8OCyKmVx5oAW06uY8baYAhEMHIzTzhFVPiJFYyh3tDBp6cXFgPQpvYZXKZ; 24:tyKs6tt2gCTlTAu/kqDia8YowpCZViFmVgDPg4P8H0SD3ClN6kACboGMlVtqHQR48AaomHz8y/Ajl6XgOwLHDf7qfBRFQIJaN1c9lcMD95g= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1993; 7:iJr557MVI9Y0CCW5nNWIWJ0zWlrm2wOedH0bI3kxuro5RYrpiAmeREql8xjCG0zGh/Ki5d6xltE5zJMM6m+OS27Z0/V4AG2AMwXrOv0n8jFqgTDok3+zhc+aDjyqVGrHeMNsbQzHQHy2/pEdnPu9GFXAAQ/tY3nAlefYz86+tJOGbzUWVAYFkAJc2hy1YrJTpBI8wE7UrHXVVhzJ5qP7xkLBdQjShCkuPZsmY8AudKOM9HWEVDUXE7j+fNIGFxixKr4buwJZepKvC3u2Vx5uWMCQLdzSwaIP987gu+RzqUt1ntrcaLY6NWuHMMcBbxzod6CBAiWL+IyF9zVFI7XmzQ==; 20:TyrdMZWBVZio6daraDfo2mzZp6ctUS+bW9I7MF0Qg+I7EBeHSP7P/AYRY7yrrjftBbXfXtbnazsVaff20cMvmCMpdyG+Uyp6ulUDYvzPfJJb3mZadqPvDG00VpzbJiQOtVPYy5/MLirjOj5D1DCRjEutMtn217LhFBrdfyIhtuQ= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 May 2017 13:58:33.4059 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1993 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.0.136 Subject: [Qemu-devel] [PATCH v3 09/13] test-char: add hotswap test 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: pbonzini@redhat.com, Anton Nefedov , den@virtuozzo.com, marcandre.lureau@redhat.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Anton Nefedov Reviewed-by: Marc-André Lureau --- tests/test-char.c | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/tests/test-char.c b/tests/test-char.c index ed6b18f..cd54f88 100644 --- a/tests/test-char.c +++ b/tests/test-char.c @@ -635,6 +635,73 @@ static void char_invalid_test(void) g_assert_null(chr); } +static int chardev_change(void *opaque) +{ + return 0; +} + +static int chardev_change_denied(void *opaque) +{ + return -1; +} + +static void char_hotswap_test(void) +{ + char *chr_args; + Chardev *chr; + CharBackend be; + + gchar *tmp_path = g_dir_make_tmp("qemu-test-char.XXXXXX", NULL); + char *filename = g_build_filename(tmp_path, "file", NULL); + ChardevFile file = { .out = filename }; + ChardevBackend backend = { .type = CHARDEV_BACKEND_KIND_FILE, + .u.file.data = &file }; + + int port; + int sock = make_udp_socket(&port); + g_assert_cmpint(sock, >, 0); + + chr_args = g_strdup_printf("udp:127.0.0.1:%d", port); + + chr = qemu_chr_new("chardev", chr_args); + qemu_chr_fe_init(&be, chr, &error_abort); + + /* check that chardev operates correctly */ + char_udp_test_internal(chr, sock); + + /* set the handler that denies the hotswap */ + qemu_chr_fe_set_handlers(&be, NULL, NULL, + NULL, chardev_change_denied, NULL, NULL, true); + + /* now, change is denied and has to keep the old backend operating */ + qmp_chardev_change("chardev", &backend, NULL); + g_assert(be.chr == chr); + + char_udp_test_internal(chr, sock); + + /* now allow the change */ + qemu_chr_fe_set_handlers(&be, NULL, NULL, + NULL, chardev_change, NULL, NULL, true); + + /* has to succeed now */ + qmp_chardev_change("chardev", &backend, &error_abort); + g_assert(be.chr != chr); + + close(sock); + chr = be.chr; + + /* run the file chardev test */ + char_file_test_internal(chr, filename); + + object_unparent(OBJECT(chr)); + + g_unlink(filename); + g_free(filename); + g_rmdir(tmp_path); + g_free(tmp_path); + g_free(chr_args); +} + int main(int argc, char **argv) { qemu_init_main_loop(&error_abort); @@ -666,6 +733,7 @@ int main(int argc, char **argv) #endif g_test_add_func("/char/socket", char_socket_test); g_test_add_func("/char/udp", char_udp_test); + g_test_add_func("/char/hotswap", char_hotswap_test); return g_test_run(); }