mirror of
https://github.com/qemu/qemu.git
synced 2024-12-01 07:43:35 +08:00
82cab70bd8
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 qdict_from_jsonf_nofail() instead of a string 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 <thuth@redhat.com> Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-Id: <20180806065344.7103-15-armbru@redhat.com>
48 lines
1.0 KiB
C
48 lines
1.0 KiB
C
/*
|
|
* QTest testcase for VirtIO RNG
|
|
*
|
|
* Copyright (c) 2014 SUSE LINUX Products GmbH
|
|
*
|
|
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
|
* See the COPYING file in the top-level directory.
|
|
*/
|
|
|
|
#include "qemu/osdep.h"
|
|
#include "libqtest.h"
|
|
#include "libqos/pci.h"
|
|
|
|
#define PCI_SLOT_HP 0x06
|
|
|
|
/* Tests only initialization so far. TODO: Replace with functional tests */
|
|
static void pci_nop(void)
|
|
{
|
|
}
|
|
|
|
static void hotplug(void)
|
|
{
|
|
const char *arch = qtest_get_arch();
|
|
|
|
qtest_qmp_device_add("virtio-rng-pci", "rng1",
|
|
"{'addr': %s}", stringify(PCI_SLOT_HP));
|
|
|
|
if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) {
|
|
qpci_unplug_acpi_device_test("rng1", PCI_SLOT_HP);
|
|
}
|
|
}
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
int ret;
|
|
|
|
g_test_init(&argc, &argv, NULL);
|
|
qtest_add_func("/virtio/rng/pci/nop", pci_nop);
|
|
qtest_add_func("/virtio/rng/pci/hotplug", hotplug);
|
|
|
|
qtest_start("-device virtio-rng-pci");
|
|
ret = g_test_run();
|
|
|
|
qtest_end();
|
|
|
|
return ret;
|
|
}
|