tests/qtest: Introduce qtest_init_with_env_and_capabilities()
This patch adds a new version of qtest_init_with_env() that allows specifying QMP capabilities that should be enabled during handshake. This is useful for example if a test needs out-of-band execution of QMP commands, it can initialize with the oob capability. Signed-off-by: Juraj Marcin <jmarcin@redhat.com> Reviewed-by: Peter Xu <peterx@redhat.com> Signed-off-by: Fabiano Rosas <farosas@suse.de>
This commit is contained in:
parent
b4a91c5e71
commit
99baa5d921
@ -543,7 +543,9 @@ QTestState *qtest_init_without_qmp_handshake(const char *extra_args)
|
||||
return qtest_init_internal(qtest_qemu_binary(NULL), extra_args);
|
||||
}
|
||||
|
||||
QTestState *qtest_init_with_env(const char *var, const char *extra_args)
|
||||
QTestState *qtest_init_with_env_and_capabilities(const char *var,
|
||||
const char *extra_args,
|
||||
QList *capabilities)
|
||||
{
|
||||
QTestState *s = qtest_init_internal(qtest_qemu_binary(var), extra_args);
|
||||
QDict *greeting;
|
||||
@ -551,11 +553,23 @@ QTestState *qtest_init_with_env(const char *var, const char *extra_args)
|
||||
/* Read the QMP greeting and then do the handshake */
|
||||
greeting = qtest_qmp_receive(s);
|
||||
qobject_unref(greeting);
|
||||
qobject_unref(qtest_qmp(s, "{ 'execute': 'qmp_capabilities' }"));
|
||||
if (capabilities) {
|
||||
qtest_qmp_assert_success(s,
|
||||
"{ 'execute': 'qmp_capabilities', "
|
||||
"'arguments': { 'enable': %p } }",
|
||||
qobject_ref(capabilities));
|
||||
} else {
|
||||
qtest_qmp_assert_success(s, "{ 'execute': 'qmp_capabilities' }");
|
||||
}
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
QTestState *qtest_init_with_env(const char *var, const char *extra_args)
|
||||
{
|
||||
return qtest_init_with_env_and_capabilities(var, extra_args, NULL);
|
||||
}
|
||||
|
||||
QTestState *qtest_init(const char *extra_args)
|
||||
{
|
||||
return qtest_init_with_env(NULL, extra_args);
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
#include "qapi/qmp/qobject.h"
|
||||
#include "qapi/qmp/qdict.h"
|
||||
#include "qapi/qmp/qlist.h"
|
||||
#include "libqmp.h"
|
||||
|
||||
typedef struct QTestState QTestState;
|
||||
@ -68,6 +69,22 @@ QTestState *qtest_init(const char *extra_args);
|
||||
*/
|
||||
QTestState *qtest_init_with_env(const char *var, const char *extra_args);
|
||||
|
||||
/**
|
||||
* qtest_init_with_env_and_capabilities:
|
||||
* @var: Environment variable from where to take the QEMU binary
|
||||
* @extra_args: Other arguments to pass to QEMU. CAUTION: these
|
||||
* arguments are subject to word splitting and shell evaluation.
|
||||
* @capabilities: list of QMP capabilities (strings) to enable
|
||||
*
|
||||
* Like qtest_init_with_env(), but enable specified capabilities during
|
||||
* hadshake.
|
||||
*
|
||||
* Returns: #QTestState instance.
|
||||
*/
|
||||
QTestState *qtest_init_with_env_and_capabilities(const char *var,
|
||||
const char *extra_args,
|
||||
QList *capabilities);
|
||||
|
||||
/**
|
||||
* qtest_init_without_qmp_handshake:
|
||||
* @extra_args: other arguments to pass to QEMU. CAUTION: these
|
||||
|
Loading…
x
Reference in New Issue
Block a user