Skip to content

Commit

Permalink
tests: Run IPC with use-filesystem-sockets active
Browse files Browse the repository at this point in the history
Provide an LD_PRELOAD library that simulates the presence
of /etc/libqb/use-filesystem-sockets so that we can test
that functionality without actually having the file on
the system and affecting everything else running on the
box.
  • Loading branch information
chrissie-c committed Jan 13, 2022
1 parent de5ab30 commit bca3a15
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 3 deletions.
11 changes: 8 additions & 3 deletions tests/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -114,11 +114,16 @@ endif
bench_log_SOURCES = bench-log.c
bench_log_LDADD = $(top_builddir)/lib/libqb.la

lib_LTLIBRARIES = libstat_wrapper.la
libstat_wrapper_la_SOURCES = libstat_wrapper.c
libstat_wrapper_la_LIBADD = -ldl
libdir= $(TESTDIR)

if HAVE_CHECK
EXTRA_DIST += start.test resources.test
EXTRA_DIST += start.test resources.test ipc_sock.test
EXTRA_DIST += blackbox-segfault.sh

TESTS = start.test array.test map.test rb.test list.test log.test blackbox-segfault.sh loop.test ipc.test resources.test
TESTS = start.test array.test map.test rb.test list.test log.test blackbox-segfault.sh loop.test ipc.test ipc_sock.test resources.test
TESTS_ENVIRONMENT = export PATH=.:../tools:$$PATH;

resources.log: rb.log log.log ipc.log
Expand All @@ -127,7 +132,7 @@ check_LTLIBRARIES =
check_PROGRAMS = array.test ipc.test list.test log.test loop.test \
map.test rb.test util.test tlist.test \
crash_test_dummy file_change_bytes
dist_check_SCRIPTS = start.test resources.test blackbox-segfault.sh
dist_check_SCRIPTS = start.test resources.test blackbox-segfault.sh ipc_sock.test

if HAVE_SLOW_TESTS
TESTS += util.test
Expand Down
19 changes: 19 additions & 0 deletions tests/ipc_sock.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/bin/sh
#
# Run the IPC tests under the stat wrapper,
# this simulates /etc/libqb/use-filesystem-sockets existing
# so we can test both options without breaking other things
# that might be running on this system
#
if [ "`uname -s`" = "Linux" ]
then
if [ -f `pwd`/.libs/libstatwrapper.so ]
then
export LD_PRELOAD=`pwd`/.libs/libstat_wrapper.so
else
export LD_PRELOAD=`pwd`/libstat_wrapper.so
fi
./ipc.test
else
exit 0
fi
35 changes: 35 additions & 0 deletions tests/libstat_wrapper.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/*
* Simulate FORCESOCKETSFILE existing for the IPC tests
*/

#include <stdio.h>
#include <dlfcn.h>
#include <string.h>
#include <sys/stat.h>
#include "../include/config.h"
#if defined(QB_LINUX) || defined(QB_CYGWIN)
#include <gnu/lib-names.h>
#endif

int __xstat(int __ver, const char *__filename, struct stat *__stat_buf)
{
#if defined(QB_LINUX) || defined(QB_CYGWIN)
static int opened = 0;
static void *dlhandle;
static int (*real_xstat)(int __ver, const char *__filename, void *__stat_buf);

if (!opened) {
dlhandle = dlopen(LIBC_SO, RTLD_NOW);
real_xstat = dlsym(dlhandle, "__xstat");
opened = 1;
}

if (strcmp(__filename, FORCESOCKETSFILE) == 0) {
return 0; /* it exists! */
}

return real_xstat(__ver, __filename, __stat_buf);
#else
return -1; /* Error in the unlikely event we get called on *BSD* */
#endif
}

0 comments on commit bca3a15

Please sign in to comment.