On 03/12/2014 07:21 AM, Daniel P. Berrange wrote:
Introduce virmock.h which provides some macros to assist in
creation of LD_PRELOAD overrides. When these are used, the
LD_PRELOAD code simply has some stubs which forward to a
wrapper function inside the main test case. This means that
logic for the test no longer has to be split between the
virXXXtest.c and virXXXmock.c files. It will also make it
possible to provide some common reusable modules for mocking
code like DBus.
Signed-off-by: Daniel P. Berrange <berrange(a)redhat.com>
---
tests/Makefile.am | 3 +-
tests/virmock.h | 298 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 300 insertions(+), 1 deletion(-)
create mode 100644 tests/virmock.h
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 3267ad3..459e104 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -123,7 +123,8 @@ EXTRA_DIST = \
xml2sexprdata \
xml2vmxdata \
vmwareverdata \
- .valgrind.supp
+ .valgrind.supp \
+ virmock.h
Unusual sorting, and maybe a chance to add $(NULL) to this list.
+
+# define VIR_MOCK_COUNT_ARGS(...) VIR_MOCK_ARG21(__VA_ARGS__, 20, 19, 18, 17, 16, 15,
14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
+# define VIR_MOCK_ARG21(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14,
_15, _16, _17, _18, _19, _20, _21, ...) _21
+# define VIR_MOCK_ARG_PASTE(a, b, ...) a##b(__VA_ARGS__)
Long lines - worth using \-newline breaks?
+/*
+ * The VIR_MOCK_LINK_NNN_MMM() macros are intended for use in
+ * LD_PRELOAD based wrappers. They provide a replacement for
+ * for an existing shared library symbol export. They will
+ * then lookup the same symbol name but with 'wrap_' prefixed
+ * on it, and call that.
+ *
+ * The actual test suite should provide the implemention of
s/implemention/implementation/
+/**
+ * VIR_MOCK_LINK_RET_ARGS:
Are you missing VIR_MOCK_LINK_VOID_VOID?
ACK.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org