Commit 0d1aa05e authored by Stefan Hajnoczi's avatar Stefan Hajnoczi
Browse files

libqtest: rename qmp() to qmp_discard_response()



Existing qmp() callers do not expect a response object.  In order to
implement real QMP test cases it will be necessary to inspect the
response object.

Rename qmp() to qmp_discard_response().  Later patches will introduce a
qmp() function that returns the response object and tests that use it.

Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: default avatarEric Blake <eblake@redhat.com>
Reviewed-by: default avatarAndreas Färber <afaerber@suse.de>
parent ec9c10d2
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -41,12 +41,12 @@ static void test_a_boot_order(const char *machine,
    qtest_start(args);
    actual = read_boot_order();
    g_assert_cmphex(actual, ==, expected_boot);
    qmp("{ 'execute': 'system_reset' }");
    qmp_discard_response("{ 'execute': 'system_reset' }");
    /*
     * system_reset only requests reset.  We get a RESET event after
     * the actual reset completes.  Need to wait for that.
     */
    qmp("");                    /* HACK: wait for event */
    qmp_discard_response("");   /* HACK: wait for event */
    actual = read_boot_order();
    g_assert_cmphex(actual, ==, expected_reboot);
    qtest_quit(global_qtest);
+9 −6
Original line number Diff line number Diff line
@@ -290,10 +290,12 @@ static void test_media_insert(void)

    /* Insert media in drive. DSKCHK should not be reset until a step pulse
     * is sent. */
    qmp("{'execute':'change', 'arguments':{ 'device':'floppy0', "
        "'target': '%s' }}", test_image);
    qmp(""); /* ignore event (FIXME open -> open transition?!) */
    qmp(""); /* ignore event */
    qmp_discard_response("{'execute':'change', 'arguments':{"
                         " 'device':'floppy0', 'target': '%s' }}",
                         test_image);
    qmp_discard_response(""); /* ignore event
                                 (FIXME open -> open transition?!) */
    qmp_discard_response(""); /* ignore event */

    dir = inb(FLOPPY_BASE + reg_dir);
    assert_bit_set(dir, DSKCHG);
@@ -322,8 +324,9 @@ static void test_media_change(void)

    /* Eject the floppy and check that DSKCHG is set. Reading it out doesn't
     * reset the bit. */
    qmp("{'execute':'eject', 'arguments':{ 'device':'floppy0' }}");
    qmp(""); /* ignore event */
    qmp_discard_response("{'execute':'eject', 'arguments':{"
                         " 'device':'floppy0' }}");
    qmp_discard_response(""); /* ignore event */

    dir = inb(FLOPPY_BASE + reg_dir);
    assert_bit_set(dir, DSKCHG);
+6 −4
Original line number Diff line number Diff line
@@ -460,8 +460,9 @@ static void test_flush(void)
        tmp_path);

    /* Delay the completion of the flush request until we explicitly do it */
    qmp("{'execute':'human-monitor-command', 'arguments': { "
        "'command-line': 'qemu-io ide0-hd0 \"break flush_to_os A\"'} }");
    qmp_discard_response("{'execute':'human-monitor-command', 'arguments': {"
                         " 'command-line':"
                         " 'qemu-io ide0-hd0 \"break flush_to_os A\"'} }");

    /* FLUSH CACHE command on device 0*/
    outb(IDE_BASE + reg_device, 0);
@@ -473,8 +474,9 @@ static void test_flush(void)
    assert_bit_clear(data, DF | ERR | DRQ);

    /* Complete the command */
    qmp("{'execute':'human-monitor-command', 'arguments': { "
        "'command-line': 'qemu-io ide0-hd0 \"resume A\"'} }");
    qmp_discard_response("{'execute':'human-monitor-command', 'arguments': {"
                         " 'command-line':"
                         " 'qemu-io ide0-hd0 \"resume A\"'} }");

    /* Check registers */
    data = inb(IDE_BASE + reg_device);
+5 −5
Original line number Diff line number Diff line
@@ -151,8 +151,8 @@ QTestState *qtest_init(const char *extra_args)
    }

    /* Read the QMP greeting and then do the handshake */
    qtest_qmp(s, "");
    qtest_qmp(s, "{ 'execute': 'qmp_capabilities' }");
    qtest_qmp_discard_response(s, "");
    qtest_qmp_discard_response(s, "{ 'execute': 'qmp_capabilities' }");

    if (getenv("QTEST_STOP")) {
        kill(qtest_qemu_pid(s), SIGSTOP);
@@ -291,7 +291,7 @@ redo:
    return words;
}

void qtest_qmpv(QTestState *s, const char *fmt, va_list ap)
void qtest_qmpv_discard_response(QTestState *s, const char *fmt, va_list ap)
{
    bool has_reply = false;
    int nesting = 0;
@@ -326,12 +326,12 @@ void qtest_qmpv(QTestState *s, const char *fmt, va_list ap)
    }
}

void qtest_qmp(QTestState *s, const char *fmt, ...)
void qtest_qmp_discard_response(QTestState *s, const char *fmt, ...)
{
    va_list ap;

    va_start(ap, fmt);
    qtest_qmpv(s, fmt, ap);
    qtest_qmpv_discard_response(s, fmt, ap);
    va_end(ap);
}

+10 −10
Original line number Diff line number Diff line
@@ -44,23 +44,23 @@ QTestState *qtest_init(const char *extra_args);
void qtest_quit(QTestState *s);

/**
 * qtest_qmp:
 * qtest_qmp_discard_response:
 * @s: #QTestState instance to operate on.
 * @fmt...: QMP message to send to qemu
 *
 * Sends a QMP message to QEMU
 * Sends a QMP message to QEMU and consumes the response.
 */
void qtest_qmp(QTestState *s, const char *fmt, ...);
void qtest_qmp_discard_response(QTestState *s, const char *fmt, ...);

/**
 * qtest_qmpv:
 * qtest_qmpv_discard_response:
 * @s: #QTestState instance to operate on.
 * @fmt: QMP message to send to QEMU
 * @ap: QMP message arguments
 *
 * Sends a QMP message to QEMU.
 * Sends a QMP message to QEMU and consumes the response.
 */
void qtest_qmpv(QTestState *s, const char *fmt, va_list ap);
void qtest_qmpv_discard_response(QTestState *s, const char *fmt, va_list ap);

/**
 * qtest_get_irq:
@@ -331,17 +331,17 @@ static inline void qtest_end(void)
}

/**
 * qmp:
 * qmp_discard_response:
 * @fmt...: QMP message to send to qemu
 *
 * Sends a QMP message to QEMU
 * Sends a QMP message to QEMU and consumes the response.
 */
static inline void qmp(const char *fmt, ...)
static inline void qmp_discard_response(const char *fmt, ...)
{
    va_list ap;

    va_start(ap, fmt);
    qtest_qmpv(global_qtest, fmt, ap);
    qtest_qmpv_discard_response(global_qtest, fmt, ap);
    va_end(ap);
}