mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 01:03:55 -06:00
tests: Introduce generic device hot-plug/hot-unplug functions
A lot of tests provide code for adding and removing a device via the device_add and device_del QMP commands. Maintaining this code in so many places is cumbersome and error-prone (some of the code parts check the responses for device deletion in an incorrect way, for example, we've got to deal with both, error code and DEVICE_DEL event here). So let's provide some proper generic functions for adding and removing a device instead. The code for correctly unplugging a device has been taken from a patch from Peter Xu. Reviewed-by: Peter Xu <peterx@redhat.com> Tested-by: Peter Xu <peterx@redhat.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
parent
3dabde1128
commit
acd80015fb
8 changed files with 112 additions and 155 deletions
|
@ -23,59 +23,16 @@ static void test_xhci_hotplug(void)
|
|||
|
||||
static void test_usb_uas_hotplug(void)
|
||||
{
|
||||
QDict *response;
|
||||
|
||||
response = qmp("{'execute': 'device_add',"
|
||||
" 'arguments': {"
|
||||
" 'driver': 'usb-uas',"
|
||||
" 'id': 'uas'"
|
||||
"}}");
|
||||
g_assert(response);
|
||||
g_assert(!qdict_haskey(response, "error"));
|
||||
QDECREF(response);
|
||||
|
||||
response = qmp("{'execute': 'device_add',"
|
||||
" 'arguments': {"
|
||||
" 'driver': 'scsi-hd',"
|
||||
" 'drive': 'drive0',"
|
||||
" 'id': 'scsi-hd'"
|
||||
"}}");
|
||||
g_assert(response);
|
||||
g_assert(!qdict_haskey(response, "error"));
|
||||
QDECREF(response);
|
||||
qtest_qmp_device_add("usb-uas", "uas", NULL);
|
||||
qtest_qmp_device_add("scsi-hd", "scsihd", "'drive': 'drive0'");
|
||||
|
||||
/* TODO:
|
||||
UAS HBA driver in libqos, to check that
|
||||
added disk is visible after BUS rescan
|
||||
*/
|
||||
|
||||
response = qmp("{'execute': 'device_del',"
|
||||
" 'arguments': {"
|
||||
" 'id': 'scsi-hd'"
|
||||
"}}");
|
||||
g_assert(response);
|
||||
g_assert(!qdict_haskey(response, "error"));
|
||||
QDECREF(response);
|
||||
|
||||
response = qmp("");
|
||||
g_assert(qdict_haskey(response, "event"));
|
||||
g_assert(!strcmp(qdict_get_str(response, "event"), "DEVICE_DELETED"));
|
||||
QDECREF(response);
|
||||
|
||||
|
||||
response = qmp("{'execute': 'device_del',"
|
||||
" 'arguments': {"
|
||||
" 'id': 'uas'"
|
||||
"}}");
|
||||
g_assert(response);
|
||||
g_assert(!qdict_haskey(response, "error"));
|
||||
QDECREF(response);
|
||||
|
||||
response = qmp("");
|
||||
g_assert(response);
|
||||
g_assert(qdict_haskey(response, "event"));
|
||||
g_assert(!strcmp(qdict_get_str(response, "event"), "DEVICE_DELETED"));
|
||||
QDECREF(response);
|
||||
qtest_qmp_device_del("scsihd");
|
||||
qtest_qmp_device_del("uas");
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue