mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-01 17:35:17 +00:00
Introduce a test suite for the JSON monitor
Take advantage of the previously added monitor helpers to create a test suite for the QEMU JSON monitor impl. As a proof of concept, this tests the 'qemuMonitorGetStatus' implementation Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
parent
8d78fd04be
commit
48d112210d
1
.gitignore
vendored
1
.gitignore
vendored
@ -140,6 +140,7 @@
|
||||
/tests/openvzutilstest
|
||||
/tests/qemuargv2xmltest
|
||||
/tests/qemuhelptest
|
||||
/tests/qemumonitorjsontest
|
||||
/tests/qemumonitortest
|
||||
/tests/qemuxmlnstest
|
||||
/tests/qparamtest
|
||||
|
@ -113,7 +113,7 @@ endif
|
||||
if WITH_QEMU
|
||||
test_programs += qemuxml2argvtest qemuxml2xmltest qemuxmlnstest \
|
||||
qemuargv2xmltest qemuhelptest domainsnapshotxml2xmltest \
|
||||
qemumonitortest
|
||||
qemumonitortest qemumonitorjsontest
|
||||
endif
|
||||
|
||||
if WITH_LXC
|
||||
@ -350,6 +350,14 @@ qemuhelptest_LDADD = $(qemu_LDADDS)
|
||||
qemumonitortest_SOURCES = qemumonitortest.c testutils.c testutils.h
|
||||
qemumonitortest_LDADD = $(qemu_LDADDS)
|
||||
|
||||
qemumonitorjsontest_SOURCES = \
|
||||
qemumonitorjsontest.c \
|
||||
testutils.c testutils.h \
|
||||
testutilsqemu.c testutilsqemu.h \
|
||||
$(NULL)
|
||||
qemumonitorjsontest_LDADD = $(qemu_LDADDS) libqemumonitortestutils.la
|
||||
qemumonitorjsontest_CFLAGS = -Dabs_builddir="\"$(abs_builddir)\"" $(AM_CFLAGS)
|
||||
|
||||
domainsnapshotxml2xmltest_SOURCES = \
|
||||
domainsnapshotxml2xmltest.c testutilsqemu.c testutilsqemu.h \
|
||||
testutils.c testutils.h
|
||||
@ -358,6 +366,7 @@ else
|
||||
EXTRA_DIST += qemuxml2argvtest.c qemuxml2xmltest.c qemuargv2xmltest.c \
|
||||
qemuxmlnstest.c qemuhelptest.c domainsnapshotxml2xmltest.c \
|
||||
qemumonitortest.c testutilsqemu.c testutilsqemu.h \
|
||||
qemumonitorjsontest.c \
|
||||
$(QEMUMONITORTESTUTILS_SOURCES)
|
||||
endif
|
||||
|
||||
|
150
tests/qemumonitorjsontest.c
Normal file
150
tests/qemumonitorjsontest.c
Normal file
@ -0,0 +1,150 @@
|
||||
/*
|
||||
* Copyright (C) 2011-2012 Red Hat, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; If not, see
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include "testutils.h"
|
||||
#include "testutilsqemu.h"
|
||||
#include "qemumonitortestutils.h"
|
||||
#include "threads.h"
|
||||
#include "virterror_internal.h"
|
||||
|
||||
|
||||
#define VIR_FROM_THIS VIR_FROM_NONE
|
||||
|
||||
static int
|
||||
testQemuMonitorJSONGetStatus(const void *data)
|
||||
{
|
||||
virCapsPtr caps = (virCapsPtr)data;
|
||||
qemuMonitorTestPtr test = qemuMonitorTestNew(true, caps);
|
||||
int ret = -1;
|
||||
bool running = false;
|
||||
virDomainPausedReason reason = 0;
|
||||
|
||||
if (!test)
|
||||
return -1;
|
||||
|
||||
if (qemuMonitorTestAddItem(test, "query-status",
|
||||
"{ "
|
||||
" \"return\": { "
|
||||
" \"status\": \"running\", "
|
||||
" \"singlestep\": false, "
|
||||
" \"running\": true "
|
||||
" } "
|
||||
"}") < 0)
|
||||
goto cleanup;
|
||||
if (qemuMonitorTestAddItem(test, "query-status",
|
||||
"{ "
|
||||
" \"return\": { "
|
||||
" \"singlestep\": false, "
|
||||
" \"running\": false "
|
||||
" } "
|
||||
"}") < 0)
|
||||
goto cleanup;
|
||||
if (qemuMonitorTestAddItem(test, "query-status",
|
||||
"{ "
|
||||
" \"return\": { "
|
||||
" \"status\": \"inmigrate\", "
|
||||
" \"singlestep\": false, "
|
||||
" \"running\": false "
|
||||
" } "
|
||||
"}") < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (qemuMonitorGetStatus(qemuMonitorTestGetMonitor(test),
|
||||
&running, &reason) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (!running) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
"Running was not true");
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (reason != VIR_DOMAIN_PAUSED_UNKNOWN) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
"Reason was unexpectedly set to %d", reason);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (qemuMonitorGetStatus(qemuMonitorTestGetMonitor(test),
|
||||
&running, &reason) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (running) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
"Running was not false");
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (reason != VIR_DOMAIN_PAUSED_UNKNOWN) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
"Reason was unexpectedly set to %d", reason);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (qemuMonitorGetStatus(qemuMonitorTestGetMonitor(test),
|
||||
&running, &reason) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (running) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
"Running was not false");
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (reason != VIR_DOMAIN_PAUSED_MIGRATION) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
"Reason was unexpectedly set to %d", reason);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
|
||||
cleanup:
|
||||
qemuMonitorTestFree(test);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int
|
||||
mymain(void)
|
||||
{
|
||||
int ret = 0;
|
||||
virCapsPtr caps;
|
||||
|
||||
if (virThreadInitialize() < 0)
|
||||
exit(EXIT_FAILURE);
|
||||
|
||||
if (!(caps = testQemuCapsInit()))
|
||||
exit(EXIT_FAILURE);
|
||||
|
||||
virEventRegisterDefaultImpl();
|
||||
|
||||
#define DO_TEST(name) \
|
||||
if (virtTestRun(# name, 1, testQemuMonitorJSON ## name, caps) < 0) \
|
||||
ret = -1
|
||||
|
||||
DO_TEST(GetStatus);
|
||||
|
||||
virCapabilitiesFree(caps);
|
||||
|
||||
return (ret == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
|
||||
}
|
||||
|
||||
VIRT_TEST_MAIN(mymain)
|
Loading…
x
Reference in New Issue
Block a user