From patchwork Thu Apr 26 16:19:44 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roman Kagan X-Patchwork-Id: 10366325 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id D35B36032C for ; Thu, 26 Apr 2018 16:27:28 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C46A228520 for ; Thu, 26 Apr 2018 16:27:28 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B948128604; Thu, 26 Apr 2018 16:27:28 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.8 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED, MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 18EE128520 for ; Thu, 26 Apr 2018 16:27:28 +0000 (UTC) Received: from localhost ([::1]:43352 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fBjjz-0000d3-0H for patchwork-qemu-devel@patchwork.kernel.org; Thu, 26 Apr 2018 12:27:27 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43035) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fBjd6-0003CE-HI for qemu-devel@nongnu.org; Thu, 26 Apr 2018 12:20:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fBjd3-0000dX-JR for qemu-devel@nongnu.org; Thu, 26 Apr 2018 12:20:20 -0400 Received: from mail-he1eur01on0132.outbound.protection.outlook.com ([104.47.0.132]:43469 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 1fBjcx-0000VC-BE; Thu, 26 Apr 2018 12:20:11 -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=Xm3MQXeWbFUCxQAsERJul0MT3XrCaUTbidEsNtZ6wWM=; b=aUYbw4FoSCyKGQncqaWOnOAAz7dntif0NqhLaCS/I6aZpR7MbFn8l/jxpTjvDlLDAblWth9pbZdDChKt6eSELt7zgiqWZfl3nA/QqzPRH4h9Xq0TfMVbxKONrDj0k0OQ7q22OqaDGIjNhpD3yy/PqkwXv1Qq9yaWnWdFnIoINTA= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=rkagan@virtuozzo.com; Received: from rkaganb.sw.ru (195.214.232.6) by HE1PR0801MB1980.eurprd08.prod.outlook.com (2603:10a6:3:4f::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.696.15; Thu, 26 Apr 2018 16:20:07 +0000 From: Roman Kagan To: Kevin Wolf , Max Reitz , Markus Armbruster , qemu-block@nongnu.org, qemu-devel@nongnu.org Date: Thu, 26 Apr 2018 19:19:44 +0300 Message-Id: <20180426161958.2872-4-rkagan@virtuozzo.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180426161958.2872-1-rkagan@virtuozzo.com> References: <20180426161958.2872-1-rkagan@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR0902CA0049.eurprd09.prod.outlook.com (2603:10a6:7:15::38) To HE1PR0801MB1980.eurprd08.prod.outlook.com (2603:10a6:3:4f::22) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:HE1PR0801MB1980; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1980; 3:3OYbXvtPDVvZDHj5LtMGxnArbFfXfsKCfm6HG/uRvnPao0mrp32gKQ7CQnEjHgV7JUj74qJD+3kZcuDF4C+11W3E7aNZnmv+zPfzKscy04+O95SF2M0CHdtwdsCJm8+m/TFjUewLsq+ulSa9OMQ520QducXPkPPUtuehShCyQ+VDDTnauJ6eBjFCBddnhpgAlC2nk4kYZnTeeENdtlpqIQzwGiqf+30aDVkN8dn98vqazxgwPEfiNM475XEpliBs; 25:/6weiVFdH/SCZVd1ZZRAKo88O5269ihZEufv+uWbd7hpjFJlnMREVX4GK0ECnm0um+Lqc4OGIEBoSlJyNp762Rk12WzcF4KtSYv6Ha/QEk7vIojEkN2+PRZ4agrP2d/vS0bmb6uravsqwah66IgD7uSOWYCjirB2h0IjPWmv+v6RAT1y3noR4dHjOTLuorFjG8I5fb2+FqxYLi4XPrmZwIP+OBhHzk35UFBXC53gH6UR9NeSlanZA1FQULzj2FjxSjtwO4yvn3PY8OQ9yzGp8g7mVGi9kl4CrSn0/2/+BwgkW2VD4e9ZwLlNIlTgDsn0FZk1V6NEDKYRva2ulVEECQ==; 31:D+/k8QO6Z8FlOKaHHRqUi75yknJ+X6NQNXi3wMXFIBu1FLobuJPxwDwUsUcP7ONucVmXhS7lmFIJvjjM0sPy9+ZH70Jl0khy6zIS1PlKS3miNH0SOemxZhAzwJ/2Bo2Z/OUSLtXH8nk8BBh6rZzNm2c4qR4OB2bC1dLI2BPoy97FIrCuwLkS4p0eH9aF+8+WC+ppui83p5d4z8StybR3SzsHDcx/9cmPPLWsCr15HXw= X-MS-TrafficTypeDiagnostic: HE1PR0801MB1980: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1980; 20:jeCfRzJC/3QubM9/MNJ1vbnY3Rh5RU2pP8Z5DnVSyb11TW1ebaAYrU5zb2xsgXCX8/GuuCAhrYZYfOAqKiIdAJZJ2rayMmufU2+4g8k6sjVSoc1XJvx4XzetUCMw4gsfsZylpWpLMSBfzBnnJF6cI7amD9QKfCGXdhaEBdOWAcbLizdk5aXoWMPaFBoZUjgCfuH8xfsuyTHJFWovBkGGNMGotNchhShAviJFvtfh8I0r4Pg23do7eOVPlQm4pCcegvTIBZY9tAhiLdEllDJXl0Wabl3ZbOv0nWLg06UwqLNUODu6jhuTx3E7t5TFYslCFZ8+wo670i7j8YePxLLUbf0sYSF9x2fye43X2Ubdd4ENDbhM8RnK9hjfLlFf5/fdT0QI8nD8vXQIeZABsWjBMkAH/Yd+7bshRGQ4OmfP653QqakYgM5Savn51Wh0JP9jCGwW8FR82ykGax5VKZEn4dXL0EcYUwwpfITlIeN49yzfuwWJweNl91wr2n5y5VlQ; 4:0nCVgt3/MQ56s9QnWOyUafwBysvuv8qhxJXEtUh3FyyNtNa+ubYVggLohKa1nbhNBKoJ6cKOYXJnwtJM190ccKxn8w0rl09kp4qMR4iWjT6MuNmUM5M6DJcwFIqMdKNYlQeHSmnvUmJb5YW8cudGAK2sp1z9L+il+IRq0b0wldSL9j9eIWmBEvl4d9lCLY30SDSKR/CaQP8+wFmC/JNT9s/V9kaahkaUmdoh7I+HP81/RGjO43xsJNt5B2IUD11tP4GkyIjk2UzgJiwUDNVtZA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(93001095)(3002001)(3231232)(944501410)(52105095)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(20161123562045)(20161123558120)(6072148)(201708071742011); SRVR:HE1PR0801MB1980; BCL:0; PCL:0; RULEID:; SRVR:HE1PR0801MB1980; X-Forefront-PRVS: 0654257CF5 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(366004)(396003)(39850400004)(39380400002)(346002)(376002)(189003)(199004)(1076002)(106356001)(956004)(59450400001)(55236004)(53936002)(6506007)(2616005)(2906002)(110136005)(81156014)(36756003)(6116002)(97736004)(8936002)(3846002)(575784001)(86362001)(47776003)(105586002)(11346002)(50226002)(81166006)(53416004)(7736002)(305945005)(476003)(486006)(446003)(316002)(6666003)(16526019)(76176011)(5660300001)(8676002)(386003)(6512007)(186003)(50466002)(48376002)(16586007)(66066001)(51416003)(6486002)(26005)(52116002)(69596002)(25786009)(68736007)(478600001); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR0801MB1980; H:rkaganb.sw.ru; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: virtuozzo.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1980; 23:gkSXmpDqyRbHHyNsF8r8AiwjO7+HdBeaCh5xHxH?= =?us-ascii?Q?WptnC5wLAzmhwdz9P5wSHKK3qf7rqXUiDBJEfDPrZNZiacguUFprWKt0BWsU?= =?us-ascii?Q?ufa/RAvrXcQkwmHGvZ+h0eKHfnYI79/dUSG0yph5fIuILpHYh4yCCjeMwJ5u?= =?us-ascii?Q?BgpplwMYTi/6tR33Pjt1OEiYRfo9WprhVRtsrjMwmLbBPESf3lW+q2LK41Jl?= =?us-ascii?Q?c8eg8QSca0wGukq+nmN8myKK2VSbfYzn1oH0I3pGqCJ3lFrfghu99v1FVj1M?= =?us-ascii?Q?bmvTihomSi6jXZ2DW/LC511I76o2BwFeSB4ZAL+3BI5Gm/hZGxojB6EYmL5Q?= =?us-ascii?Q?SfFjrMiJvLlJjo+5Binv2IPteGvbo44l062aSPW7wF5HBPJZPq00Z1S5b8hJ?= =?us-ascii?Q?gskZfOp6dqPs2Daq8e/wZedzZPFgccucFN1X/JfDqH5EVGpEbYhIZBDGog3y?= =?us-ascii?Q?jh3PLIxSKgyG2cdUEfvoGBCPX9eMlIpAeOCc/IApA52J0SrjMkzGOB6+rSXk?= =?us-ascii?Q?k65YZKjfU/sS1FFN9Rb0YlFGGB7/RHKdlcmnPIq1xnYld3iVXjxa3/rqONRM?= =?us-ascii?Q?bErPm8miNb7X+7K6CUVb/3jZIewYXGQhQ/Po03Ji6/A9kTxEvMqcJvIZiI0y?= =?us-ascii?Q?e0k6qzQDz6c6hK56iEeZIh/yUBDX++B9UKeFuo2s+Akd4THzOCU9mtpxodIR?= =?us-ascii?Q?P/7JPlB2j5eCbL6zwIzDYbThY4xvLM7ufGy3iLmfyZcfIdkXlT8V8I1wwdO1?= =?us-ascii?Q?tE3huTlSm6kVJidU51ceKQ+15h6ikOtGHimp3rtrR9y9VUJZS5ufVBQ+wwUT?= =?us-ascii?Q?McQaRWdsIm+JtlGicZUh21wSx4jV0QlVrJPV1pBellXrcjUlp6VIyNs8bicV?= =?us-ascii?Q?7VQKGU7AfufYiDxS3nAac+FBR3y87b4FNKPkSBPs/tJB/p1/krG41Irxu8zP?= =?us-ascii?Q?6V8vpk+rsfgBp/Iu9P/h+WBHSX/tkieJYYJiC0c4aXX+r/Ff6eJgVnzqQbFE?= =?us-ascii?Q?bHraXqqDFPpFwZxtja5eh2OHb9jGYj0JZh/SWMSDLnHufkTkriEupfYR2Gk9?= =?us-ascii?Q?DeJzTedzAd/M4Gkc0JBcySMljPicziK6oVi0Hq8SWLcjZ5xFhqKhjlLm4XV4?= =?us-ascii?Q?KbgksUyUh/1E5EqM1LAUMeDoCMlX7rNrrnMmAl+vK+WUEtE8blzG4uXx3tyj?= =?us-ascii?Q?jkHrjLKo5wnuoYViC9vh30htgp/n5/hAIdNsdGA1LxHL44Du06CaSKZ1eGJG?= =?us-ascii?Q?QmB3dgW5e10g+0iSLh9uh7sKU/UV1RWb8qz+g3P0b6XZaCBTdGv8OTvA1owc?= =?us-ascii?Q?h6A=3D=3D?= X-Microsoft-Antispam-Message-Info: eCF+dgwFp0a/vvB2lChRfx4hrnWaZfOSVMhywtrKHn5ROV+jSzzGsdxdULdnEIgF3czDFIolhznk2WWEZ9r84kIaLu1b9O87ot+p10bM1NAxLhhpM1pRHl5OJj7MtV+HIAetLlDSMYYiPqEqTPKZdx91sS1+0vPpgdd6hhn2P7ZL4zDIrMIv03q3obx6PpKs X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1980; 6:3rqwvSCYlQPC/g4e0KbvdAeO0ZKEsAL5sHYJ5BE+jVSgR4QYL8yH977mHFx3Df+9LQxXCyToKwQevd7CDvy6+zkNges7OAt5IM8oM+jNuvwxVHILZzTzehZmuq8dpNXi4aWqg3p7588xdqB0vWspO7gOrT1KvvSOyY01t9AE34hRNtGMleQnzgLGcXIG0SCHlCgX7lJwcuHijIn1lvf7sQpXRjPGglQb1M2TKP29IrPrVba1M/oWiDjp78uUAriyjJjZo0/liBvqSlwNfEYsGLmIIh7EkfaqHFJiAQoUXxnoCEJFFQMUMCmii0Z2UjbfGgZWeTsPt8wJqKWAaKkxp89Tx5VDDHy6mF7Y4x9THR2v1mYREgkN4lb1wTKcI7zlN73B6rSBr4fl77oYS1TMWopao/y0J6c3f8nJb/sD62FCvxFekR+LhvaHtRZRUc6xFjbNQ1AMtj7HRXA/WhzKVg==; 5:gCnj+EPXAcazisyr93+pZYzFRjx6Vbd2VWn10OU0ftUcJT22NQ16dlfsnIDMvhdWhu/7kVFlRKRQdzIgLCyNKWGqv4gHjjLHtEW9pXaKF9kK0H+b2UZXthjqbD7XZy3BMzc0V1GK7MSSsiXAI/AIfV/j1h9s0UV+OFemIARSg+s=; 24:8GWg1qDBENC0uhujEjeQvlU54GjKiunDwozzm8kDsGnZS4CD36BPRq5rPeop2Kegjz0QkqCxv9FXW7Mhcp5gvpAxlJyAwVarpkzjqQYb7m4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1980; 7:OjiPcI3DTYNpbAs98bcI8dOGg3L3L1993AsD4DDKuK7g3wwR1HrWrwqYQFa3u4o74lFolBYz5idVQAOButddSQBLtY5nplJo9rTVDWonM4OSCbBFJ17bDVWNj3oFckczjrrrBNEErybFEIXrY0DgTOztPtfBIP5JohjU0p80YK6F6Q827BvaVL5ZgtjCAlHbYcIWpoX28QVy0oETMpEPJ2QEX3N0lFKfkUJCdoicHdDOnBcEGTnzdDvQRlGPTpoZ; 20:Efp1nS6XUdPnWa2smOe1s/fcBBmbj4f4NmnElHP+8d6DGh3JdGJvMorZ9yGHdgALyW5jCM1TkTyiUHv980GI94XUN3icQb+GgY3/45YoFp7/jPg/yeC3G0UM2ClM4zu3rX1uoXv+mGE5jfvkvsVSyMNv6vNH0dgrc4PSA+TzPg4= X-MS-Office365-Filtering-Correlation-Id: afe59634-6ce7-4990-6c15-08d5ab91939a X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2018 16:20:07.5740 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: afe59634-6ce7-4990-6c15-08d5ab91939a X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1980 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.0.132 Subject: [Qemu-devel] [PATCH 03/17] iotests: ask qemu for supported formats 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: , Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP Add helper functions to query the block drivers actually supported by QEMU using "-drive format=?". This allows to skip certain tests that require drivers not built in or whitelisted in QEMU. Signed-off-by: Roman Kagan --- tests/qemu-iotests/common.rc | 19 +++++++++++++++++++ tests/qemu-iotests/iotests.py | 30 +++++++++++++++++++++++++++--- 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/tests/qemu-iotests/common.rc b/tests/qemu-iotests/common.rc index 9a65a11026..fe5a4d1cfd 100644 --- a/tests/qemu-iotests/common.rc +++ b/tests/qemu-iotests/common.rc @@ -493,5 +493,24 @@ _require_command() [ -x "$c" ] || _notrun "$1 utility required, skipped this test" } +# this test requires support for specific formats +# +_require_format() +{ + supported_formats=$($QEMU_PROG $QEMU_OPTIONS -drive format=\? 2>&1 | \ + head -1 | cut -d : -f 2) + for f; do + found=false + for sf in $supported_formats; do + if [ "$f" = "$sf" ]; then + found=true + break + fi + done + + $found || _notrun "$QEMU_PROG doesn't support format $f" + done +} + # make sure this script returns success true diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py index e2abf0cb53..698ef2b2c0 100644 --- a/tests/qemu-iotests/iotests.py +++ b/tests/qemu-iotests/iotests.py @@ -119,6 +119,17 @@ def qemu_io(*args): sys.stderr.write('qemu-io received signal %i: %s\n' % (-subp.returncode, ' '.join(args))) return output +def qemu_pipe(*args): + '''Run qemu with an option to print something and exit (e.g. a help option), + and return its output''' + args = [qemu_prog] + qemu_opts + list(args) + subp = subprocess.Popen(args, stdout=subprocess.PIPE, + stderr=subprocess.STDOUT) + output = subp.communicate()[0] + if subp.returncode < 0: + sys.stderr.write('qemu received signal %i: %s\n' % (-subp.returncode, ' '.join(args))) + return output + class QemuIoInteractive: def __init__(self, *args): @@ -550,13 +561,26 @@ def verify_cache_mode(supported_cache_modes=[]): if supported_cache_modes and (cachemode not in supported_cache_modes): notrun('not suitable for this cache mode: %s' % cachemode) +rw_formats = None + +def supports_format(format_name): + format_message = qemu_pipe('-drive', 'format=?') + global rw_formats + if rw_formats is None: + rw_formats = format_message.splitlines()[0].split(':')[1].split() + return format_name in rw_formats + +def require_formats(*formats): + for fmt in formats: + if not supports_format(fmt): + notrun('%s does not support format %s' % (qemu_prog, fmt)) + def supports_quorum(): - return 'quorum' in qemu_img_pipe('--help') + return supports_format('quorum') def verify_quorum(): '''Skip test suite if quorum support is not available''' - if not supports_quorum(): - notrun('quorum support missing') + require_formats('quorum') def main(supported_fmts=[], supported_oses=['linux'], supported_cache_modes=[], unsupported_fmts=[]):