[{"id":1766857,"web_url":"http://patchwork.ozlabs.org/comment/1766857/","msgid":"<f489c01c-5671-3942-6d76-c399d8c8014a@redhat.com>","list_archive_url":null,"date":"2017-09-12T10:37:37","subject":"Re: [Qemu-devel] [PATCH v7 29/38] libqtest: Merge qtest_init() into\n\tqtest_start()","submitter":{"id":66152,"url":"http://patchwork.ozlabs.org/api/people/66152/","name":"Thomas Huth","email":"thuth@redhat.com"},"content":"On 11.09.2017 19:20, Eric Blake wrote:\n> Remove the trivial wrapper qtest_init(), and change qtest_start()\n> to no longer implicitly set global_qtest, to make it obvious in the\n> rest of the testsuite where we are still relying on global_qtest.\n> Everything now uses qtest_start() (and friends) and qtest_quit(),\n> and explicitly tracks the QTestState between the two (although in\n> many cases, this tracking is still done through global_qtest).\n> Doing this makes it easier to see what remaining cleanups will be\n> needed if we don't want an implicit dependency on global state.\n[...]\n> diff --git a/tests/libqtest.h b/tests/libqtest.h\n> index 817e3a5580..2a21bf4605 100644\n> --- a/tests/libqtest.h\n> +++ b/tests/libqtest.h\n> @@ -27,7 +27,7 @@ extern QTestState *global_qtest;\n>   * qtest_start_without_qmp_handshake:\n>   * @extra_args: other arguments to pass to QEMU.\n>   *\n> - * Returns: #QTestState instance.  Does not affect #global_qtest.\n> + * Returns: #QTestState instance, handshaking not yet completed.\n\nI'd rather add a description a la:\n\n  * Start QEMU, but do not execute the QMP handshake yet.\n  *\n  * Returns: #QTestState instance\n\n>   */\n>  QTestState *qtest_start_without_qmp_handshake(const char *extra_args);\n> \n> @@ -35,10 +35,7 @@ QTestState *qtest_start_without_qmp_handshake(const char *extra_args);\n>   * qtest_start:\n>   * @args: other arguments to pass to QEMU\n>   *\n> - * Start QEMU and assign the resulting #QTestState to #global_qtest.\n> - * The global variable is used by \"shortcut\" functions documented below.\n>   *\n> - * Returns: #QTestState instance.\n> + * Returns: #QTestState instance, handshaking completed.\n\nI'd rather change the description instead of removing it:\n\n  * Start QEMU and execute the initial QMP handshake\n  *\n  * Returns: #QTestState instance.\n\n>   */\n>  QTestState *qtest_start(const char *args);\n> \n> @@ -47,10 +44,7 @@ QTestState *qtest_start(const char *args);\n>   * @fmt...: Format for creating other arguments to pass to QEMU, formatted\n>   * like sprintf().\n>   *\n> - * Start QEMU and return the resulting #QTestState (but unlike qtest_start(),\n> - * #global_qtest is left at NULL).\n> - *\n> - * Returns: #QTestState instance.\n> + * Returns: #QTestState instance, handshaking completed.\n\ndito\n\n>   */\n>  QTestState *qtest_startf(const char *fmt, ...) GCC_FMT_ATTR(1, 2);\n> \n> @@ -60,30 +54,11 @@ QTestState *qtest_startf(const char *fmt, ...) GCC_FMT_ATTR(1, 2);\n>   * like vsprintf().\n>   * @ap: Format arguments.\n>   *\n> - * Start QEMU and return the resulting #QTestState (but unlike qtest_start(),\n> - * #global_qtest is left at NULL).\n> - *\n> - * Returns: #QTestState instance.\n> + * Returns: #QTestState instance, handshaking completed.\n\ndito\n\n>   */\n>  QTestState *qtest_vstartf(const char *fmt, va_list ap) GCC_FMT_ATTR(1, 0);\n> \n>  /**\n> - * qtest_init:\n> - * @extra_args: other arguments to pass to QEMU.\n> - *\n> - * Returns: #QTestState instance.  Does not affect #global_qtest.\n> - */\n> -static inline QTestState *qtest_init(const char *extra_args)\n> -{\n> -    QTestState *s;\n> -\n> -    assert(!global_qtest);\n> -    s = qtest_start(extra_args);\n> -    global_qtest = NULL;\n> -    return s;\n> -}\n[...]\n> diff --git a/tests/display-vga-test.c b/tests/display-vga-test.c\n> index 8667330e3c..d638f15ec3 100644\n> --- a/tests/display-vga-test.c\n> +++ b/tests/display-vga-test.c\n> @@ -12,39 +12,33 @@\n> \n>  static void pci_cirrus(void)\n>  {\n> -    qtest_start(\"-vga none -device cirrus-vga\");\n> -    qtest_quit(global_qtest);\n> +    qtest_quit(qtest_start(\"-vga none -device cirrus-vga\"));\n\nI'd prefer to keep this on separate lines ... but that's again just my\npersonal taste. (also for the othe changes below)\n\n>  }\n> \n>  static void pci_stdvga(void)\n>  {\n> -    qtest_start(\"-vga none -device VGA\");\n> -    qtest_quit(global_qtest);\n> +    qtest_quit(qtest_start(\"-vga none -device VGA\"));\n>  }\n> \n>  static void pci_secondary(void)\n>  {\n> -    qtest_start(\"-vga none -device secondary-vga\");\n> -    qtest_quit(global_qtest);\n> +    qtest_quit(qtest_start(\"-vga none -device secondary-vga\"));\n>  }\n> \n>  static void pci_multihead(void)\n>  {\n> -    qtest_start(\"-vga none -device VGA -device secondary-vga\");\n> -    qtest_quit(global_qtest);\n> +    qtest_quit(qtest_start(\"-vga none -device VGA -device secondary-vga\"));\n>  }\n> \n>  static void pci_virtio_gpu(void)\n>  {\n> -    qtest_start(\"-vga none -device virtio-gpu-pci\");\n> -    qtest_quit(global_qtest);\n> +    qtest_quit(qtest_start(\"-vga none -device virtio-gpu-pci\"));\n>  }\n> \n>  #ifdef CONFIG_VIRTIO_VGA\n>  static void pci_virtio_vga(void)\n>  {\n> -    qtest_start(\"-vga none -device virtio-vga\");\n> -    qtest_quit(global_qtest);\n> +    qtest_quit(qtest_start(\"-vga none -device virtio-vga\"));\n>  }\n>  #endif\n[...]\n> diff --git a/tests/ne2000-test.c b/tests/ne2000-test.c\n> index cae83c5c4c..8e6f7b07c6 100644\n> --- a/tests/ne2000-test.c\n> +++ b/tests/ne2000-test.c\n> @@ -22,7 +22,7 @@ int main(int argc, char **argv)\n>      g_test_init(&argc, &argv, NULL);\n>      qtest_add_func(\"/ne2000/pci/nop\", pci_nop);\n> \n> -    qtest_start(\"-device ne2k_pci\");\n> +    global_qtest = qtest_start(\"-device ne2k_pci\");\n>      ret = g_test_run();\n> \n>      qtest_quit(global_qtest);\n\nFor such very trivial tests, it maybe makes sense to use a local\n\"QTestState *qts\" variable here already, so we don't have to touch this\ncode again later?\n\n> diff --git a/tests/nvme-test.c b/tests/nvme-test.c\n> index 3d6c0f39cf..b054ad6fcd 100644\n> --- a/tests/nvme-test.c\n> +++ b/tests/nvme-test.c\n> @@ -22,8 +22,9 @@ int main(int argc, char **argv)\n>      g_test_init(&argc, &argv, NULL);\n>      qtest_add_func(\"/nvme/nop\", nop);\n> \n> -    qtest_start(\"-drive id=drv0,if=none,file=null-co://,format=raw \"\n> -                \"-device nvme,drive=drv0,serial=foo\");\n> +    global_qtest = qtest_start(\n> +        \"-drive id=drv0,if=none,file=null-co://,format=raw \"\n> +        \"-device nvme,drive=drv0,serial=foo\");\n>      ret = g_test_run();\n> \n>      qtest_quit(global_qtest);\n\ndito\n\n> diff --git a/tests/pcnet-test.c b/tests/pcnet-test.c\n> index 98246d3504..a58a5fd7bf 100644\n> --- a/tests/pcnet-test.c\n> +++ b/tests/pcnet-test.c\n> @@ -22,7 +22,7 @@ int main(int argc, char **argv)\n>      g_test_init(&argc, &argv, NULL);\n>      qtest_add_func(\"/pcnet/pci/nop\", pci_nop);\n> \n> -    qtest_start(\"-device pcnet\");\n> +    global_qtest = qtest_start(\"-device pcnet\");\n>      ret = g_test_run();\n> \n>      qtest_quit(global_qtest);\n\ndito\n\n[...]\n> diff --git a/tests/virtio-balloon-test.c b/tests/virtio-balloon-test.c\n> index 34ad718601..cca7b0e8fb 100644\n> --- a/tests/virtio-balloon-test.c\n> +++ b/tests/virtio-balloon-test.c\n> @@ -22,7 +22,7 @@ int main(int argc, char **argv)\n>      g_test_init(&argc, &argv, NULL);\n>      qtest_add_func(\"/virtio/balloon/pci/nop\", pci_nop);\n> \n> -    qtest_start(\"-device virtio-balloon-pci\");\n> +    global_qtest = qtest_start(\"-device virtio-balloon-pci\");\n>      ret = g_test_run();\n> \n>      qtest_quit(global_qtest);\n\ndito\n\n[...]\n> diff --git a/tests/vmxnet3-test.c b/tests/vmxnet3-test.c\n> index 631630b4d0..0b4b807616 100644\n> --- a/tests/vmxnet3-test.c\n> +++ b/tests/vmxnet3-test.c\n> @@ -22,7 +22,7 @@ int main(int argc, char **argv)\n>      g_test_init(&argc, &argv, NULL);\n>      qtest_add_func(\"/vmxnet3/nop\", nop);\n> \n> -    qtest_start(\"-device vmxnet3\");\n> +    global_qtest = qtest_start(\"-device vmxnet3\");\n>      ret = g_test_run();\n> \n>      qtest_quit(global_qtest);\n\ndito\n\n Thomas","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","ext-mx09.extmail.prod.ext.phx2.redhat.com;\n\tdmarc=none (p=none dis=none) header.from=redhat.com","ext-mx09.extmail.prod.ext.phx2.redhat.com;\n\tspf=fail smtp.mailfrom=thuth@redhat.com"],"Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xs1VL6DJhz9s7g\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue, 12 Sep 2017 20:38:34 +1000 (AEST)","from localhost ([::1]:34801 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1driaP-0000OT-1a\n\tfor incoming@patchwork.ozlabs.org; Tue, 12 Sep 2017 06:38:33 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:38977)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <thuth@redhat.com>) id 1driZr-0000Jq-Gf\n\tfor qemu-devel@nongnu.org; Tue, 12 Sep 2017 06:38:01 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <thuth@redhat.com>) id 1driZq-0008HJ-2O\n\tfor qemu-devel@nongnu.org; Tue, 12 Sep 2017 06:37:59 -0400","from mx1.redhat.com ([209.132.183.28]:49452)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <thuth@redhat.com>)\n\tid 1driZk-0008DP-S9; Tue, 12 Sep 2017 06:37:53 -0400","from smtp.corp.redhat.com\n\t(int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby mx1.redhat.com (Postfix) with ESMTPS id AF61E4E4C6;\n\tTue, 12 Sep 2017 10:37:51 +0000 (UTC)","from [10.40.204.137] (ovpn-204-137.brq.redhat.com [10.40.204.137])\n\tby smtp.corp.redhat.com (Postfix) with ESMTPS id C327670128;\n\tTue, 12 Sep 2017 10:37:39 +0000 (UTC)"],"DMARC-Filter":"OpenDMARC Filter v1.3.2 mx1.redhat.com AF61E4E4C6","To":"Eric Blake <eblake@redhat.com>, qemu-devel@nongnu.org","References":"<20170911172022.4738-1-eblake@redhat.com>\n\t<20170911172022.4738-30-eblake@redhat.com>","From":"Thomas Huth <thuth@redhat.com>","Message-ID":"<f489c01c-5671-3942-6d76-c399d8c8014a@redhat.com>","Date":"Tue, 12 Sep 2017 12:37:37 +0200","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101\n\tThunderbird/52.3.0","MIME-Version":"1.0","In-Reply-To":"<20170911172022.4738-30-eblake@redhat.com>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-US","X-Scanned-By":"MIMEDefang 2.79 on 10.5.11.12","X-Greylist":"Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.38]);\n\tTue, 12 Sep 2017 10:37:51 +0000 (UTC)","Content-Transfer-Encoding":"quoted-printable","X-detected-operating-system":"by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]","X-Received-From":"209.132.183.28","Subject":"Re: [Qemu-devel] [PATCH v7 29/38] libqtest: Merge qtest_init() into\n\tqtest_start()","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"\"open list:Floppy\" <qemu-block@nongnu.org>,\n\t\"Michael S. Tsirkin\" <mst@redhat.com>,\n\tJason Wang <jasowang@redhat.com>, Amit Shah <amit@kernel.org>,\n\tarmbru@redhat.com, Alexander Graf <agraf@suse.de>,\n\tKeith Busch <keith.busch@intel.com>,\n\t\"open list:sPAPR\" <qemu-ppc@nongnu.org>,\n\tGerd Hoffmann <kraxel@redhat.com>, pbonzini@redhat.com,\n\tJohn Snow <jsnow@redhat.com>, David Gibson <david@gibson.dropbear.id.au>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"}}]