mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 21:34:54 +03:00
83405f92a9
This commit includes new test cases to cover LXC version 3.0 and higher. This LXC version rebased some settings entries and deprecated other ones. As we support both, we should include tests to minimize problems with integration between them. Signed-off-by: Julio Faracco <jcfaracco@gmail.com> Reviewed-by: John Ferlan <jferlan@redhat.com>
188 lines
4.3 KiB
C
188 lines
4.3 KiB
C
#include <config.h>
|
|
|
|
#include "testutils.h"
|
|
|
|
#ifdef WITH_LXC
|
|
|
|
# include "lxc/lxc_native.h"
|
|
# include "lxc/lxc_conf.h"
|
|
# include "testutilslxc.h"
|
|
|
|
# define VIR_FROM_THIS VIR_FROM_NONE
|
|
|
|
static virCapsPtr caps;
|
|
static virDomainXMLOptionPtr xmlopt;
|
|
|
|
static int testSanitizeDef(virDomainDefPtr vmdef)
|
|
{
|
|
/* Remove UUID randomness */
|
|
if (virUUIDParse("c7a5fdbd-edaf-9455-926a-d65c16db1809", vmdef->uuid) < 0)
|
|
return -1;
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
testCompareXMLToConfigFiles(const char *xmlfile,
|
|
const char *configfile,
|
|
bool expectError)
|
|
{
|
|
int ret = -1;
|
|
char *config = NULL;
|
|
char *actualxml = NULL;
|
|
virDomainDefPtr vmdef = NULL;
|
|
|
|
if (virTestLoadFile(configfile, &config) < 0)
|
|
goto fail;
|
|
|
|
vmdef = lxcParseConfigString(config, caps, xmlopt);
|
|
if ((vmdef && expectError) || (!vmdef && !expectError))
|
|
goto fail;
|
|
|
|
if (vmdef) {
|
|
if (testSanitizeDef(vmdef) < 0)
|
|
goto fail;
|
|
|
|
if (!(actualxml = virDomainDefFormat(vmdef, caps, 0)))
|
|
goto fail;
|
|
|
|
if (virTestCompareToFile(actualxml, xmlfile) < 0)
|
|
goto fail;
|
|
}
|
|
|
|
ret = 0;
|
|
|
|
fail:
|
|
VIR_FREE(actualxml);
|
|
VIR_FREE(config);
|
|
virDomainDefFree(vmdef);
|
|
return ret;
|
|
}
|
|
|
|
struct testInfo {
|
|
const char *name;
|
|
bool expectError;
|
|
};
|
|
|
|
static int
|
|
testCompareXMLToConfigHelperLegacy(const void *data)
|
|
{
|
|
int result = -1;
|
|
const struct testInfo *info = data;
|
|
char *xml = NULL;
|
|
char *config = NULL;
|
|
|
|
if (virAsprintf(&xml, "%s/lxcconf2xmldata/lxcconf2xml-%s.xml",
|
|
abs_srcdir, info->name) < 0 ||
|
|
virAsprintf(&config, "%s/lxcconf2xmldata/lxcconf2xml-%s.config",
|
|
abs_srcdir, info->name) < 0)
|
|
goto cleanup;
|
|
|
|
result = testCompareXMLToConfigFiles(xml, config, info->expectError);
|
|
|
|
cleanup:
|
|
VIR_FREE(xml);
|
|
VIR_FREE(config);
|
|
return result;
|
|
}
|
|
|
|
static int
|
|
testCompareXMLToConfigHelperV3(const void *data)
|
|
{
|
|
int result = -1;
|
|
const struct testInfo *info = data;
|
|
char *xml = NULL;
|
|
char *config = NULL;
|
|
|
|
if (virAsprintf(&xml, "%s/lxcconf2xmldata/lxcconf2xml-%s.xml",
|
|
abs_srcdir, info->name) < 0 ||
|
|
virAsprintf(&config, "%s/lxcconf2xmldata/lxcconf2xml-%s-v3.config",
|
|
abs_srcdir, info->name) < 0)
|
|
goto cleanup;
|
|
|
|
result = testCompareXMLToConfigFiles(xml, config, info->expectError);
|
|
|
|
cleanup:
|
|
VIR_FREE(xml);
|
|
VIR_FREE(config);
|
|
return result;
|
|
}
|
|
|
|
|
|
static int
|
|
mymain(void)
|
|
{
|
|
int ret = EXIT_SUCCESS;
|
|
|
|
if (!(caps = testLXCCapsInit()))
|
|
return EXIT_FAILURE;
|
|
|
|
if (!(xmlopt = lxcDomainXMLConfInit())) {
|
|
virObjectUnref(caps);
|
|
return EXIT_FAILURE;
|
|
}
|
|
|
|
# define DO_TEST(name, expectError) \
|
|
do { \
|
|
const struct testInfo info = { name, expectError }; \
|
|
if (virTestRun("LXC Native-2-XML " name, \
|
|
testCompareXMLToConfigHelperLegacy, \
|
|
&info) < 0) \
|
|
ret = EXIT_FAILURE; \
|
|
} while (0)
|
|
|
|
DO_TEST("simple", false);
|
|
DO_TEST("fstab", true);
|
|
DO_TEST("nonetwork", false);
|
|
DO_TEST("nonenetwork", false);
|
|
DO_TEST("physnetwork", false);
|
|
DO_TEST("macvlannetwork", false);
|
|
DO_TEST("vlannetwork", false);
|
|
DO_TEST("idmap", false);
|
|
DO_TEST("memtune", false);
|
|
DO_TEST("cputune", false);
|
|
DO_TEST("cpusettune", false);
|
|
DO_TEST("blkiotune", false);
|
|
DO_TEST("ethernet", false);
|
|
|
|
/* Tests for LXC 3.0 and higher */
|
|
# define DO_TEST3(name, expectError) \
|
|
do { \
|
|
const struct testInfo info = { name, expectError }; \
|
|
if (virTestRun("LXC Native-3-XML " name, \
|
|
testCompareXMLToConfigHelperV3, \
|
|
&info) < 0) \
|
|
ret = EXIT_FAILURE; \
|
|
} while (0)
|
|
|
|
DO_TEST3("simple", false);
|
|
DO_TEST3("fstab", true);
|
|
DO_TEST3("nonetwork", false);
|
|
DO_TEST3("nonenetwork", false);
|
|
DO_TEST3("physnetwork", false);
|
|
DO_TEST3("macvlannetwork", false);
|
|
DO_TEST3("vlannetwork", false);
|
|
DO_TEST3("idmap", false);
|
|
DO_TEST3("memtune", false);
|
|
DO_TEST3("cputune", false);
|
|
DO_TEST3("cpusettune", false);
|
|
DO_TEST3("blkiotune", false);
|
|
DO_TEST3("ethernet", false);
|
|
|
|
virObjectUnref(xmlopt);
|
|
virObjectUnref(caps);
|
|
|
|
return ret;
|
|
}
|
|
|
|
VIR_TEST_MAIN(mymain)
|
|
|
|
#else
|
|
|
|
int
|
|
main(void)
|
|
{
|
|
return EXIT_AM_SKIP;
|
|
}
|
|
|
|
#endif /* WITH_LXC */
|