diff options
Diffstat (limited to 'tests/drive_del-test.c')
-rw-r--r-- | tests/drive_del-test.c | 63 |
1 files changed, 32 insertions, 31 deletions
diff --git a/tests/drive_del-test.c b/tests/drive_del-test.c index 2f9474e03c..b56b223fc2 100644 --- a/tests/drive_del-test.c +++ b/tests/drive_del-test.c @@ -16,32 +16,32 @@ #include "qapi/qmp/qdict.h" /* TODO actually test the results and get rid of this */ -#define qmp_discard_response(...) qobject_unref(qmp(__VA_ARGS__)) +#define qmp_discard_response(q, ...) qobject_unref(qtest_qmp(q, __VA_ARGS__)) -static void drive_add(void) +static void drive_add(QTestState *qts) { - char *resp = hmp("drive_add 0 if=none,id=drive0"); + char *resp = qtest_hmp(qts, "drive_add 0 if=none,id=drive0"); g_assert_cmpstr(resp, ==, "OK\r\n"); g_free(resp); } -static void drive_del(void) +static void drive_del(QTestState *qts) { - char *resp = hmp("drive_del drive0"); + char *resp = qtest_hmp(qts, "drive_del drive0"); g_assert_cmpstr(resp, ==, ""); g_free(resp); } -static void device_del(void) +static void device_del(QTestState *qts) { QDict *response; /* Complication: ignore DEVICE_DELETED event */ - qmp_discard_response("{'execute': 'device_del'," + qmp_discard_response(qts, "{'execute': 'device_del'," " 'arguments': { 'id': 'dev0' } }"); - response = qmp_receive(); + response = qtest_qmp_receive(qts); g_assert(response); g_assert(qdict_haskey(response, "return")); qobject_unref(response); @@ -49,18 +49,20 @@ static void device_del(void) static void test_drive_without_dev(void) { + QTestState *qts; + /* Start with an empty drive */ - qtest_start("-drive if=none,id=drive0"); + qts = qtest_init("-drive if=none,id=drive0"); /* Delete the drive */ - drive_del(); + drive_del(qts); /* Ensure re-adding the drive works - there should be no duplicate ID error * because the old drive must be gone. */ - drive_add(); + drive_add(qts); - qtest_end(); + qtest_quit(qts); } /* @@ -85,54 +87,53 @@ static void test_after_failed_device_add(void) { char driver[32]; QDict *response; + QTestState *qts; snprintf(driver, sizeof(driver), "virtio-blk-%s", qvirtio_get_dev_type()); - qtest_start("-drive if=none,id=drive0"); + qts = qtest_init("-drive if=none,id=drive0"); /* Make device_add fail. If this leaks the virtio-blk device then a * reference to drive0 will also be held (via qdev properties). */ - response = qmp("{'execute': 'device_add'," - " 'arguments': {" - " 'driver': %s," - " 'drive': 'drive0'" - "}}", driver); + response = qtest_qmp(qts, "{'execute': 'device_add'," + " 'arguments': {" + " 'driver': %s," + " 'drive': 'drive0'" + "}}", driver); g_assert(response); qmp_assert_error_class(response, "GenericError"); /* Delete the drive */ - drive_del(); + drive_del(qts); /* Try to re-add the drive. This fails with duplicate IDs if a leaked * virtio-blk device exists that holds a reference to the old drive0. */ - drive_add(); + drive_add(qts); - qtest_end(); + qtest_quit(qts); } static void test_drive_del_device_del(void) { - char *args; + QTestState *qts; /* Start with a drive used by a device that unplugs instantaneously */ - args = g_strdup_printf("-drive if=none,id=drive0,file=null-co://,format=raw" - " -device virtio-scsi-%s" - " -device scsi-hd,drive=drive0,id=dev0", - qvirtio_get_dev_type()); - qtest_start(args); + qts = qtest_initf("-drive if=none,id=drive0,file=null-co://,format=raw" + " -device virtio-scsi-%s" + " -device scsi-hd,drive=drive0,id=dev0", + qvirtio_get_dev_type()); /* * Delete the drive, and then the device * Doing it in this order takes notoriously tricky special paths */ - drive_del(); - device_del(); + drive_del(qts); + device_del(qts); - qtest_end(); - g_free(args); + qtest_quit(qts); } int main(int argc, char **argv) |