[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 13/23] tests: Clean up string interpolation a
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH v2 13/23] tests: Clean up string interpolation around qtest_qmp_device_add() |
Date: |
Mon, 30 Jul 2018 08:04:05 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) |
Eric Blake <address@hidden> writes:
> On 07/27/2018 10:13 AM, Markus Armbruster wrote:
>> Leaving interpolation into JSON to qmp() is more robust than building
>> QMP input manually, as explained in the commit before previous.
>>
>> qtest_qmp_device_add() and its wrappers interpolate into JSON as
>> follows:
>>
>> * qtest_qmp_device_add() interpolates members into a JSON object.
>>
>> * So do its wrappers qpci_plug_device_test() and usb_test_hotplug().
>>
>> * usb_test_hotplug() additionally interpolates strings and numbers
>> into JSON strings.
>>
>> Clean them up:
>>
>> * Have qtest_qmp_device_add() take its extra device properties as
>> arguments for for qdict_from_jsonf_nofail() instead of a string
>
> s/for for/for/
Fixing...
>> containing JSON members.
>>
>> * Drop qpci_plug_device_test(), use qtest_qmp_device_add()
>> directly.
>>
>> * Change usb_test_hotplug() parameter @port to string, to avoid
>> interpolation. Interpolate @hcd_id separately.
>>
>> Bonus: gets rid of a non-literal format string. A step towards
>> compile-time format string checking without triggering
>> -Wformat-nonliteral.
>>
>> Cc: Thomas Huth <address@hidden>
>> Signed-off-by: Markus Armbruster <address@hidden>
>> ---
>
>> +++ b/tests/ivshmem-test.c
>> @@ -420,19 +420,17 @@ static void test_ivshmem_server_irq(void)
>> static void test_ivshmem_hotplug(void)
>> {
>> const char *arch = qtest_get_arch();
>> - gchar *opts;
>> qtest_start("");
>> - opts = g_strdup_printf("'shm': '%s', 'size': '1M'", tmpshm);
>> -
>> - qpci_plug_device_test("ivshmem", "iv1", PCI_SLOT_HP, opts);
>> + qtest_qmp_device_add("ivshmem",
>> + "iv1", "{'addr': %s, 'shm': '%s', 'size': '1M'}",
>
> Umm, how does this still pass? You want 'shm':%s, not 'shm':'%s'.
Good catch.
It passes, because the value of "shm" is an arbitrary file name under
/dev/shm/.
> (We really want to assert that any % interpolations in our JSON parser
> are NOT embedded in '').
>
> With that error fixed,
> Reviewed-by: Eric Blake <address@hidden>
Thanks!
- Re: [Qemu-devel] [PATCH v2 15/23] tests: New helper qtest_qmp_receive_success(), (continued)
- [Qemu-devel] [PATCH v2 05/23] qobject: Replace qobject_from_jsonf() by qobject_from_jsonf_nofail(), Markus Armbruster, 2018/07/27
- [Qemu-devel] [PATCH v2 14/23] migration-test: Make wait_command() return the "return" member, Markus Armbruster, 2018/07/27
- [Qemu-devel] [PATCH v2 01/23] libqtest: Document calling conventions, Markus Armbruster, 2018/07/27
- [Qemu-devel] [PATCH v2 10/23] tests: Pass literal format strings directly to qmp_FOO(), Markus Armbruster, 2018/07/27
- [Qemu-devel] [PATCH v2 13/23] tests: Clean up string interpolation around qtest_qmp_device_add(), Markus Armbruster, 2018/07/27
[Qemu-devel] [PATCH v2 11/23] tests: Clean up string interpolation into QMP input (simple cases), Markus Armbruster, 2018/07/27
[Qemu-devel] [PATCH v2 07/23] libqtest: Simplify qmp_fd_vsend() a bit, Markus Armbruster, 2018/07/27
[Qemu-devel] [PATCH v2 04/23] libqtest: Clean up how we read the QMP greeting, Markus Armbruster, 2018/07/27
[Qemu-devel] [PATCH v2 02/23] libqtest: Rename functions to send QMP messages, Markus Armbruster, 2018/07/27