Commit ddee57e0 authored by Eric Blake's avatar Eric Blake
Browse files

tests: Add parameter to qtest_init_without_qmp_handshake



Allow callers to choose whether to allow OOB support during a test;
for now, all existing callers pass false, but the next patch will
add a new caller.  Also, rewrite the monitor setup to be generic
(using the -qmp shorthand is insufficient for honoring the parameter).

Based on an idea by Peter Xu, in <20180326063901.27425-8-peterx@redhat.com>

Signed-off-by: default avatarEric Blake <eblake@redhat.com>
Message-Id: <20180327013620.1644387-4-eblake@redhat.com>
Tested-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
Acked-by: default avatarPeter Xu <peterx@redhat.com>
Reviewed-by: default avatarMarc-André Lureau <marcandre.lureau@redhat.com>
parent be933ffc
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -166,7 +166,8 @@ static const char *qtest_qemu_binary(void)
    return qemu_bin;
}

QTestState *qtest_init_without_qmp_handshake(const char *extra_args)
QTestState *qtest_init_without_qmp_handshake(bool use_oob,
                                             const char *extra_args)
{
    QTestState *s;
    int sock, qmpsock, i;
@@ -199,12 +200,13 @@ QTestState *qtest_init_without_qmp_handshake(const char *extra_args)
        command = g_strdup_printf("exec %s "
                                  "-qtest unix:%s,nowait "
                                  "-qtest-log %s "
                                  "-qmp unix:%s,nowait "
                                  "-chardev socket,path=%s,nowait,id=char0 "
                                  "-mon chardev=char0,mode=control%s "
                                  "-machine accel=qtest "
                                  "-display none "
                                  "%s", qemu_binary, socket_path,
                                  getenv("QTEST_LOG") ? "/dev/fd/2" : "/dev/null",
                                  qmp_socket_path,
                                  qmp_socket_path, use_oob ? ",x-oob=on" : "",
                                  extra_args ?: "");
        execlp("/bin/sh", "sh", "-c", command, NULL);
        exit(1);
@@ -239,7 +241,7 @@ QTestState *qtest_init_without_qmp_handshake(const char *extra_args)

QTestState *qtest_init(const char *extra_args)
{
    QTestState *s = qtest_init_without_qmp_handshake(extra_args);
    QTestState *s = qtest_init_without_qmp_handshake(false, extra_args);

    /* Read the QMP greeting and then do the handshake */
    qtest_qmp_discard_response(s, "");
+5 −2
Original line number Diff line number Diff line
@@ -56,11 +56,14 @@ QTestState *qtest_init(const char *extra_args);

/**
 * qtest_init_without_qmp_handshake:
 * @extra_args: other arguments to pass to QEMU.
 * @use_oob: true to have the server advertise OOB support
 * @extra_args: other arguments to pass to QEMU.  CAUTION: these
 * arguments are subject to word splitting and shell evaluation.
 *
 * Returns: #QTestState instance.
 */
QTestState *qtest_init_without_qmp_handshake(const char *extra_args);
QTestState *qtest_init_without_qmp_handshake(bool use_oob,
                                             const char *extra_args);

/**
 * qtest_quit:
+1 −1
Original line number Diff line number Diff line
@@ -81,7 +81,7 @@ static void test_qmp_protocol(void)
    QList *capabilities;
    QTestState *qts;

    qts = qtest_init_without_qmp_handshake(common_args);
    qts = qtest_init_without_qmp_handshake(false, common_args);

    /* Test greeting */
    resp = qtest_qmp_receive(qts);