2011-05-26 17:45:41 +00:00
|
|
|
#include <config.h>
|
|
|
|
|
2013-04-16 13:41:44 +00:00
|
|
|
#include "testutils.h"
|
|
|
|
|
2011-05-26 17:45:41 +00:00
|
|
|
#ifdef WITH_OPENVZ
|
|
|
|
|
|
|
|
# include <unistd.h>
|
|
|
|
|
|
|
|
# include "internal.h"
|
|
|
|
# include "openvz/openvz_conf.h"
|
|
|
|
|
2013-05-03 12:52:21 +00:00
|
|
|
# define VIR_FROM_THIS VIR_FROM_OPENVZ
|
|
|
|
|
2011-05-31 12:58:58 +00:00
|
|
|
static int
|
2019-10-14 12:45:03 +00:00
|
|
|
testLocateConfFile(int vpsid G_GNUC_UNUSED, char **conffile,
|
|
|
|
const char *ext G_GNUC_UNUSED)
|
2011-05-31 12:58:58 +00:00
|
|
|
{
|
2019-10-22 13:26:14 +00:00
|
|
|
*conffile = g_strdup_printf("%s/openvzutilstest.conf", abs_srcdir);
|
|
|
|
return 0;
|
2011-05-31 12:58:58 +00:00
|
|
|
}
|
|
|
|
|
2011-05-26 17:45:41 +00:00
|
|
|
struct testConfigParam {
|
|
|
|
const char *param;
|
|
|
|
const char *value;
|
|
|
|
int ret;
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct testConfigParam configParams[] = {
|
|
|
|
{ "OSTEMPLATE", "rhel-5-lystor", 1 },
|
|
|
|
{ "IP_ADDRESS", "194.44.18.88", 1 },
|
|
|
|
{ "THIS_PARAM_IS_MISSING", NULL, 0 },
|
|
|
|
};
|
|
|
|
|
|
|
|
static int
|
2019-10-14 12:45:03 +00:00
|
|
|
testReadConfigParam(const void *data G_GNUC_UNUSED)
|
2011-05-26 17:45:41 +00:00
|
|
|
{
|
Convert 'int i' to 'size_t i' in tests/ files
Convert the type of loop iterators named 'i', 'j', k',
'ii', 'jj', 'kk', to be 'size_t' instead of 'int' or
'unsigned int', also santizing 'ii', 'jj', 'kk' to use
the normal 'i', 'j', 'k' naming
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2013-07-08 14:09:33 +00:00
|
|
|
size_t i;
|
2021-09-04 20:37:44 +00:00
|
|
|
g_autofree char *conf = NULL;
|
|
|
|
g_autofree char *value = NULL;
|
2011-05-26 17:45:41 +00:00
|
|
|
|
2019-10-22 13:26:14 +00:00
|
|
|
conf = g_strdup_printf("%s/openvzutilstest.conf", abs_srcdir);
|
2011-05-26 17:45:41 +00:00
|
|
|
|
2019-10-15 11:55:26 +00:00
|
|
|
for (i = 0; i < G_N_ELEMENTS(configParams); ++i) {
|
2011-05-26 17:45:41 +00:00
|
|
|
if (openvzReadConfigParam(conf, configParams[i].param,
|
|
|
|
&value) != configParams[i].ret) {
|
2021-09-04 20:41:46 +00:00
|
|
|
return -1;
|
2011-05-26 17:45:41 +00:00
|
|
|
}
|
|
|
|
|
2014-11-13 14:20:43 +00:00
|
|
|
if (configParams[i].ret != 1)
|
2011-05-26 17:45:41 +00:00
|
|
|
continue;
|
|
|
|
|
tests: Use virTestCompareToString() more
Instead of using:
if (STRNEQ(a, b)) {
virTestDifference(stderr, a, b);
...
}
we can use:
if (virTestCompareToString(a, b) < ) {
...
}
Generated by the following spatch:
@@
expression a, b;
@@
- if (STRNEQ(a, b)) {
+ if (virTestCompareToString(a, b) < 0) {
...
- virTestDifference(stderr, a, b);
...
}
and its variations (STRNEQ_NULLABLE() instead of STRNEQ(), then
in some cases variables passed to STRNEQ() are in reversed order
when compared to virTestCompareToString()).
However, coccinelle failed to recognize the pattern in
testNWFilterEBIPTablesAllTeardown() so I had to fix it manually.
Also, I manually fixed testFormat() in tests/sockettest.c as I
didn't bother writing another spatch rule just for that.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Jonathon Jongsma <jjongsma@redhat.com>
2022-11-30 08:57:49 +00:00
|
|
|
if (virTestCompareToString(configParams[i].value, value) < 0) {
|
2021-09-04 20:41:46 +00:00
|
|
|
return -1;
|
2011-05-26 17:45:41 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-09-04 20:41:46 +00:00
|
|
|
return 0;
|
2011-05-26 17:45:41 +00:00
|
|
|
}
|
|
|
|
|
2011-05-31 12:58:58 +00:00
|
|
|
static int
|
2019-10-14 12:45:03 +00:00
|
|
|
testReadNetworkConf(const void *data G_GNUC_UNUSED)
|
2011-05-31 12:58:58 +00:00
|
|
|
{
|
|
|
|
int result = -1;
|
2021-09-04 19:50:02 +00:00
|
|
|
g_autoptr(virDomainDef) def = NULL;
|
2021-09-04 20:37:44 +00:00
|
|
|
g_autofree char *actual = NULL;
|
2011-05-31 12:58:58 +00:00
|
|
|
const char *expected =
|
|
|
|
"<domain type='openvz'>\n"
|
|
|
|
" <uuid>00000000-0000-0000-0000-000000000000</uuid>\n"
|
2012-02-23 00:48:38 +00:00
|
|
|
" <memory unit='KiB'>0</memory>\n"
|
|
|
|
" <currentMemory unit='KiB'>0</currentMemory>\n"
|
2012-05-08 16:04:36 +00:00
|
|
|
" <vcpu placement='static'>0</vcpu>\n"
|
2011-05-31 12:58:58 +00:00
|
|
|
" <os>\n"
|
|
|
|
" <type>exe</type>\n"
|
|
|
|
" <init>/sbin/init</init>\n"
|
|
|
|
" </os>\n"
|
|
|
|
" <clock offset='utc'/>\n"
|
|
|
|
" <on_poweroff>destroy</on_poweroff>\n"
|
|
|
|
" <on_reboot>destroy</on_reboot>\n"
|
|
|
|
" <on_crash>destroy</on_crash>\n"
|
|
|
|
" <devices>\n"
|
|
|
|
" <interface type='ethernet'>\n"
|
|
|
|
" <mac address='00:00:00:00:00:00'/>\n"
|
2014-07-22 09:09:48 +00:00
|
|
|
" <ip address='194.44.18.88' family='ipv4'/>\n"
|
2011-05-31 12:58:58 +00:00
|
|
|
" </interface>\n"
|
|
|
|
" <interface type='bridge'>\n"
|
|
|
|
" <mac address='00:18:51:c1:05:ee'/>\n"
|
|
|
|
" <target dev='veth105.10'/>\n"
|
|
|
|
" </interface>\n"
|
|
|
|
" </devices>\n"
|
|
|
|
"</domain>\n";
|
2019-12-09 14:37:20 +00:00
|
|
|
struct openvz_driver driver = {
|
|
|
|
.xmlopt = openvzXMLOption(&driver),
|
|
|
|
.caps = openvzCapsInit(),
|
|
|
|
};
|
2011-05-31 12:58:58 +00:00
|
|
|
|
2021-08-03 09:00:48 +00:00
|
|
|
if (!(def = virDomainDefNew(driver.xmlopt)))
|
2011-05-31 12:58:58 +00:00
|
|
|
goto cleanup;
|
|
|
|
|
2019-10-20 11:49:46 +00:00
|
|
|
def->os.init = g_strdup("/sbin/init");
|
|
|
|
|
2011-05-31 12:58:58 +00:00
|
|
|
def->virtType = VIR_DOMAIN_VIRT_OPENVZ;
|
2015-04-17 00:11:06 +00:00
|
|
|
def->os.type = VIR_DOMAIN_OSTYPE_EXE;
|
2011-05-31 12:58:58 +00:00
|
|
|
|
|
|
|
if (openvzReadNetworkConf(def, 1) < 0) {
|
2016-05-19 19:10:18 +00:00
|
|
|
fprintf(stderr, "ERROR: %s\n", virGetLastErrorMessage());
|
2011-05-31 12:58:58 +00:00
|
|
|
goto cleanup;
|
|
|
|
}
|
|
|
|
|
2019-11-27 11:57:34 +00:00
|
|
|
actual = virDomainDefFormat(def, driver.xmlopt, VIR_DOMAIN_DEF_FORMAT_INACTIVE);
|
2011-05-31 12:58:58 +00:00
|
|
|
|
|
|
|
if (actual == NULL) {
|
2016-05-19 19:10:18 +00:00
|
|
|
fprintf(stderr, "ERROR: %s\n", virGetLastErrorMessage());
|
2011-05-31 12:58:58 +00:00
|
|
|
goto cleanup;
|
|
|
|
}
|
|
|
|
|
tests: Use virTestCompareToString() more
Instead of using:
if (STRNEQ(a, b)) {
virTestDifference(stderr, a, b);
...
}
we can use:
if (virTestCompareToString(a, b) < ) {
...
}
Generated by the following spatch:
@@
expression a, b;
@@
- if (STRNEQ(a, b)) {
+ if (virTestCompareToString(a, b) < 0) {
...
- virTestDifference(stderr, a, b);
...
}
and its variations (STRNEQ_NULLABLE() instead of STRNEQ(), then
in some cases variables passed to STRNEQ() are in reversed order
when compared to virTestCompareToString()).
However, coccinelle failed to recognize the pattern in
testNWFilterEBIPTablesAllTeardown() so I had to fix it manually.
Also, I manually fixed testFormat() in tests/sockettest.c as I
didn't bother writing another spatch rule just for that.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Jonathon Jongsma <jjongsma@redhat.com>
2022-11-30 08:57:49 +00:00
|
|
|
if (virTestCompareToString(expected, actual) < 0) {
|
2011-05-31 12:58:58 +00:00
|
|
|
goto cleanup;
|
|
|
|
}
|
|
|
|
|
|
|
|
result = 0;
|
|
|
|
|
2014-03-25 06:53:44 +00:00
|
|
|
cleanup:
|
2019-12-03 10:49:49 +00:00
|
|
|
virObjectUnref(driver.xmlopt);
|
|
|
|
virObjectUnref(driver.caps);
|
2011-05-31 12:58:58 +00:00
|
|
|
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
2011-05-26 17:45:41 +00:00
|
|
|
static int
|
|
|
|
mymain(void)
|
|
|
|
{
|
|
|
|
int result = 0;
|
|
|
|
|
2011-05-31 12:58:58 +00:00
|
|
|
openvzLocateConfFile = testLocateConfFile;
|
|
|
|
|
2017-11-03 12:09:47 +00:00
|
|
|
# define DO_TEST(_name) \
|
|
|
|
do { \
|
|
|
|
if (virTestRun("OpenVZ "#_name, test##_name, \
|
|
|
|
NULL) < 0) { \
|
|
|
|
result = -1; \
|
|
|
|
} \
|
2011-05-26 17:45:41 +00:00
|
|
|
} while (0)
|
|
|
|
|
|
|
|
DO_TEST(ReadConfigParam);
|
2011-05-31 12:58:58 +00:00
|
|
|
DO_TEST(ReadNetworkConf);
|
2011-05-26 17:45:41 +00:00
|
|
|
|
|
|
|
return result == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
|
|
|
|
}
|
|
|
|
|
2017-03-29 14:45:42 +00:00
|
|
|
VIR_TEST_MAIN(mymain)
|
2011-05-26 17:45:41 +00:00
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
int main(void)
|
|
|
|
{
|
|
|
|
return EXIT_AM_SKIP;
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif /* WITH_OPENVZ */
|