mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-08-28 11:31:16 +00:00
This commit includes a test case for multiple network definitions. It is useful right now, but it will be more useful when the index used by LXC version 3.X is implemented to support this new settings. The version 3.X is using indexes to specify each network settings. Signed-off-by: Julio Faracco <jcfaracco@gmail.com> ACKed-by: Michal Privoznik <mprivozn@redhat.com>
190 lines
4.4 KiB
C
190 lines
4.4 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("miscnetwork", 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("miscnetwork", 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 */
|