[libvirt] [PATCH 2/7] Create a re-usable DBus LD_PRELOAD mock library

Daniel P. Berrange berrange at redhat.com
Wed Mar 12 13:21:16 UTC 2014


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 at redhat.com>
---
 tests/Makefile.am   | 11 +++++++--
 tests/virmockdbus.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 73 insertions(+), 2 deletions(-)
 create mode 100644 tests/virmockdbus.c

diff --git a/tests/Makefile.am b/tests/Makefile.am
index 459e104..8ac200d 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -349,7 +349,8 @@ test_libraries += libqemumonitortestutils.la \
 endif WITH_QEMU
 
 if WITH_DBUS
-test_libraries += virsystemdmock.la
+test_libraries += virsystemdmock.la \
+		virmockdbus.la
 endif WITH_DBUS
 
 if WITH_LINUX
@@ -854,6 +855,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)
@@ -866,7 +873,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 = \
diff --git a/tests/virmockdbus.c b/tests/virmockdbus.c
new file mode 100644
index 0000000..8a01d9d
--- /dev/null
+++ b/tests/virmockdbus.c
@@ -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 at 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 */
-- 
1.8.5.3




More information about the libvir-list mailing list