tests: mock libdbus in networkxml2firewalltest

This test calls into src/util/virfirewalld.c where it uses DBus to
figure out if firewalld is registered. Without the mock it luckily
fails and the test works correctly.

To isolate the tests from host environment we should mock the DBus
calls.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Pavel Hrdina 2020-09-15 13:55:53 +02:00
parent de3289e2b5
commit 1db95f72e1
2 changed files with 26 additions and 1 deletions

View File

@ -404,7 +404,7 @@ endif
if conf.has('WITH_NETWORK')
tests += [
{ 'name': 'networkxml2conftest', 'link_with': [ network_driver_impl ] },
{ 'name': 'networkxml2firewalltest', 'link_with': [ network_driver_impl ] },
{ 'name': 'networkxml2firewalltest', 'link_with': [ network_driver_impl ], 'deps': [ dbus_dep ] },
{ 'name': 'networkxml2xmltest', 'link_with': [ network_driver_impl ] },
]
endif

View File

@ -26,8 +26,13 @@
#if defined (__linux__)
# if WITH_DBUS
# include <dbus/dbus.h>
# endif
# include "network/bridge_driver_platform.h"
# include "virbuffer.h"
# include "virmock.h"
# define LIBVIRT_VIRFIREWALLPRIV_H_ALLOW
# include "virfirewallpriv.h"
@ -43,6 +48,22 @@
# error "test case not ported to this platform"
# endif
# if WITH_DBUS
VIR_MOCK_WRAP_RET_ARGS(dbus_connection_send_with_reply_and_block,
DBusMessage *,
DBusConnection *, connection,
DBusMessage *, message,
int, timeout_milliseconds,
DBusError *, error)
{
VIR_MOCK_REAL_INIT(dbus_connection_send_with_reply_and_block);
dbus_set_error_const(error, "org.freedesktop.error", "dbus is disabled");
return NULL;
}
# endif
static void
testCommandDryRun(const char *const*args G_GNUC_UNUSED,
const char *const*env G_GNUC_UNUSED,
@ -176,7 +197,11 @@ mymain(void)
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}
# if WITH_DBUS
VIR_TEST_MAIN_PRELOAD(mymain, VIR_TEST_MOCK("virdbus"))
# else
VIR_TEST_MAIN(mymain)
# endif
#else /* ! defined (__linux__) */