Commit 2eea5cd4 authored by Markus Armbruster's avatar Markus Armbruster Committed by Stefan Hajnoczi
Browse files

blockdev-test: Factor out some common code into helpers



Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
Reviewed-by: default avatarEric Blake <eblake@redhat.com>
Message-id: 1412261496-24455-6-git-send-email-armbru@redhat.com
Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
parent 37e153fe
Loading
Loading
Loading
Loading
+25 −25
Original line number Diff line number Diff line
@@ -14,14 +14,23 @@
#include <string.h>
#include "libqtest.h"

static void test_drive_without_dev(void)
static void drive_add(void)
{
    QDict *response;

    /* Start with an empty drive */
    qtest_start("-drive if=none,id=drive0");
    response = qmp("{'execute': 'human-monitor-command',"
                   " 'arguments': {"
                   "   'command-line': 'drive_add 0 if=none,id=drive0'"
                   "}}");
    g_assert(response);
    g_assert_cmpstr(qdict_get_try_str(response, "return"), ==, "OK\r\n");
    QDECREF(response);
}

static void drive_del(void)
{
    QDict *response;

    /* Delete the drive */
    response = qmp("{'execute': 'human-monitor-command',"
                   " 'arguments': {"
                   "   'command-line': 'drive_del drive0'"
@@ -29,17 +38,20 @@ static void test_drive_without_dev(void)
    g_assert(response);
    g_assert_cmpstr(qdict_get_try_str(response, "return"), ==, "");
    QDECREF(response);
}

static void test_drive_without_dev(void)
{
    /* Start with an empty drive */
    qtest_start("-drive if=none,id=drive0");

    /* Delete the drive */
    drive_del();

    /* Ensure re-adding the drive works - there should be no duplicate ID error
     * because the old drive must be gone.
     */
    response = qmp("{'execute': 'human-monitor-command',"
                   " 'arguments': {"
                   "   'command-line': 'drive_add 0 if=none,id=drive0'"
                   "}}");
    g_assert(response);
    g_assert_cmpstr(qdict_get_try_str(response, "return"), ==, "OK\r\n");
    QDECREF(response);
    drive_add();

    qtest_end();
}
@@ -65,24 +77,12 @@ static void test_after_failed_device_add(void)
    QDECREF(response);

    /* Delete the drive */
    response = qmp("{'execute': 'human-monitor-command',"
                   " 'arguments': {"
                   "   'command-line': 'drive_del drive0'"
                   "}}");
    g_assert(response);
    g_assert_cmpstr(qdict_get_try_str(response, "return"), ==, "");
    QDECREF(response);
    drive_del();

    /* Try to re-add the drive.  This fails with duplicate IDs if a leaked
     * virtio-blk-pci exists that holds a reference to the old drive0.
     */
    response = qmp("{'execute': 'human-monitor-command',"
                   " 'arguments': {"
                   "   'command-line': 'drive_add 0 if=none,id=drive0'"
                   "}}");
    g_assert(response);
    g_assert_cmpstr(qdict_get_try_str(response, "return"), ==, "OK\r\n");
    QDECREF(response);
    drive_add();

    qtest_end();
}