From: "Daniel P. Berrange" <berrange@xxxxxxxxxx> To ensure all symbols used by loadable driver modules are exported in libvirt.so, add a test suite that simply loads each driver in turn * tests/Makefile.am, tests/virdrivermoduletest.c: Add a test case for loading drivers Signed-off-by: Daniel P. Berrange <berrange@xxxxxxxxxx> --- tests/Makefile.am | 11 +++++ tests/virdrivermoduletest.c | 104 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 115 insertions(+), 0 deletions(-) create mode 100644 tests/virdrivermoduletest.c diff --git a/tests/Makefile.am b/tests/Makefile.am index 4575a56..c7addde 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -93,6 +93,10 @@ test_programs = virshtest sockettest \ virtimetest viruritest virkeyfiletest \ virauthconfigtest +if WITH_DRIVER_MODULES +test_programs += virdrivermoduletest +endif + # This is a fake SSH we use from virnetsockettest ssh_SOURCES = ssh.c ssh_LDADD = $(COVERAGE_LDFLAGS) @@ -520,6 +524,13 @@ utiltest_SOURCES = \ utiltest.c testutils.h testutils.c utiltest_LDADD = $(LDADDS) +if WITH_DRIVER_MODULES +virdrivermoduletest_SOURCES = \ + virdrivermoduletest.c testutils.h testutils.c +virdrivermoduletest_CFLAGS = -Dabs_builddir="\"$(abs_builddir)\"" $(AM_CFLAGS) +virdrivermoduletest_LDADD = $(LDADDS) +endif + if WITH_LIBVIRTD eventtest_SOURCES = \ eventtest.c testutils.h testutils.c diff --git a/tests/virdrivermoduletest.c b/tests/virdrivermoduletest.c new file mode 100644 index 0000000..405574e --- /dev/null +++ b/tests/virdrivermoduletest.c @@ -0,0 +1,104 @@ +/* + * Copyright (C) 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Daniel P. Berrange <berrange@xxxxxxxxxx> + */ + +#include <config.h> + +#include "testutils.h" +#include "util.h" +#include "virterror_internal.h" +#include "memory.h" +#include "logging.h" +#include "driver.h" + +#define VIR_FROM_THIS VIR_FROM_NONE + +struct testDriverData { + const char *name; + const char *dep1; +}; + + +static int testDriverModule(const void *args) +{ + const struct testDriverData *data = args; + + if (data->dep1 && + !virDriverLoadModule(data->dep1)) + return -1; + + if (!virDriverLoadModule(data->name)) + return -1; + + return 0; +} + + +static int +mymain(void) +{ + int ret = 0; + +#define TEST(name, dep1) \ + do { \ + const struct testDriverData data = { name, dep1 }; \ + if (virtTestRun("Test driver " # name, 1, testDriverModule, &data) < 0) \ + ret = -1; \ + } while (0) + + virDriverModuleInitialize(abs_builddir "/../src/.libs"); + +#ifdef WITH_NETWORK + TEST("network", NULL); +#endif +#ifdef WITH_STORAGE + TEST("storage", NULL); +#endif +#ifdef WITH_NODE_DEVICES + TEST("nodedev", NULL); +#endif +#ifdef WITH_SECRETS + TEST("secret", NULL); +#endif +#ifdef WITH_NWFILTER + TEST("nwfilter", NULL); +#endif +#ifdef WITH_INTERFACE + TEST("interface", NULL); +#endif +#ifdef WITH_QEMU + TEST("qemu", "network"); +#endif +#ifdef WITH_LXC + TEST("lxc", "network"); +#endif +#ifdef WITH_UML + TEST("uml", NULL); +#endif +#ifdef WITH_XEN + TEST("xen", NULL); +#endif +#ifdef WITH_LIBXL + TEST("libxl", NULL); +#endif + + return ret==0 ? EXIT_SUCCESS : EXIT_FAILURE; +} + +VIRT_TEST_MAIN(mymain) -- 1.7.7.6 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list