Create a re-usable DBus LD_PRELOAD mock library

A number of test suites want to mock the DBus APIs. To avoid
re-inventing the wheel create a re-usable virmockdbus.la
library for LD_PRELOAD usage.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
Daniel P. Berrange 2014-03-12 12:15:47 +00:00
parent 442ba49351
commit 2c3ce1de94
2 changed files with 73 additions and 2 deletions

View File

@ -365,7 +365,8 @@ test_libraries += bhyvexml2argvmock.la
endif WITH_BHYVE
if WITH_DBUS
test_libraries += virsystemdmock.la
test_libraries += virsystemdmock.la \
virmockdbus.la
endif WITH_DBUS
if WITH_LINUX
@ -904,6 +905,12 @@ virdbustest_SOURCES = \
virdbustest_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS)
virdbustest_LDADD = $(LDADDS) $(DBUS_LIBS)
virmockdbus_la_SOURCES = \
virmockdbus.c
virmockdbus_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS)
virmockdbus_la_LDFLAGS = -module -avoid-version \
-rpath /evil/libtool/hack/to/force/shared/lib/creation
virsystemdtest_SOURCES = \
virsystemdtest.c testutils.h testutils.c
virsystemdtest_CFLAGS = $(AM_CFLAGS)
@ -916,7 +923,7 @@ virsystemdmock_la_LDFLAGS = -module -avoid-version \
-rpath /evil/libtool/hack/to/force/shared/lib/creation
else ! WITH_DBUS
EXTRA_DIST += virdbustest.c virsystemdtest.c virsystemdmock.c
EXTRA_DIST += virdbustest.c virmockdbus.c virsystemdtest.c virsystemdmock.c
endif ! WITH_DBUS
viruritest_SOURCES = \

64
tests/virmockdbus.c Normal file
View File

@ -0,0 +1,64 @@
/*
* virmockdbus.c: mocking of dbus message send/reply
*
* Copyright (C) 2013 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, see
* <http://www.gnu.org/licenses/>.
*
* Author: Daniel P. Berrange <berrange@redhat.com>
*/
#include <config.h>
#ifdef WITH_DBUS
# include "virmock.h"
# include <dbus/dbus.h>
VIR_MOCK_STUB_VOID_ARGS(dbus_connection_set_change_sigpipe,
dbus_bool_t, will_modify_sigpipe)
VIR_MOCK_STUB_RET_ARGS(dbus_bus_get,
DBusConnection *, (DBusConnection *)0x1,
DBusBusType, type,
DBusError *, error)
VIR_MOCK_STUB_VOID_ARGS(dbus_connection_set_exit_on_disconnect,
DBusConnection *, connection,
dbus_bool_t, exit_on_disconnect)
VIR_MOCK_STUB_RET_ARGS(dbus_connection_set_watch_functions,
dbus_bool_t, 1,
DBusConnection *, connection,
DBusAddWatchFunction, add_function,
DBusRemoveWatchFunction, remove_function,
DBusWatchToggledFunction, toggled_function,
void *, data,
DBusFreeFunction, free_data_function)
VIR_MOCK_STUB_RET_ARGS(dbus_message_set_reply_serial,
dbus_bool_t, 1,
DBusMessage *, message,
dbus_uint32_t, serial)
VIR_MOCK_LINK_RET_ARGS(dbus_connection_send_with_reply_and_block,
DBusMessage *,
DBusConnection *, connection,
DBusMessage *, message,
int, timeout_milliseconds,
DBusError *, error)
#endif /* WITH_DBUS */