Page Menu
Home
ClusterLabs Projects
Search
Configure Global Search
Log In
Files
F4149448
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
11 KB
Referenced Files
None
Subscribers
None
View Options
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 1f58e03..0786889 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1,227 +1,252 @@
# Copyright (c) 2010 Red Hat, Inc.
#
# Authors: Angus Salkeld <asalkeld@redhat.com>
#
# This file is part of libqb.
#
# libqb 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.
#
# libqb 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 libqb. If not, see <http://www.gnu.org/licenses/>.
#
MAINTAINERCLEANFILES = Makefile.in auto_write_logs.c
-EXTRA_DIST = make-log-test.sh all_ipcs.test blackbox-segfault.sh
+EXTRA_DIST = make-log-test.sh sock_ipc_wrapper.test blackbox-segfault.sh
CLEANFILES = $(auto_c_files) ${auto_c_files:.c=.opp} auto_write_logs.c
export SOCKETDIR
AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include
noinst_PROGRAMS = bmc bmcpt bms rbreader rbwriter \
bench-log format_compare_speed loop print_ver \
$(check_PROGRAMS)
noinst_DATA = ipc-test-name
noinst_HEADERS = check_common.h
format_compare_speed_SOURCES = format_compare_speed.c $(top_builddir)/include/qb/qbutil.h
format_compare_speed_LDADD = $(top_builddir)/lib/libqb.la
bmc_SOURCES = bmc.c
bmc_LDADD = $(top_builddir)/lib/libqb.la
bmcpt_SOURCES = bmcpt.c
bmcpt_CFLAGS = $(PTHREAD_CFLAGS)
bmcpt_LDADD = $(PTHREAD_LIBS) $(top_builddir)/lib/libqb.la
bms_SOURCES = bms.c
bms_CFLAGS = $(GLIB_CFLAGS)
bms_LDADD = $(top_builddir)/lib/libqb.la $(GLIB_LIBS)
rbwriter_SOURCES = rbwriter.c
rbwriter_LDADD = $(top_builddir)/lib/libqb.la
rbreader_SOURCES = rbreader.c
rbreader_LDADD = $(top_builddir)/lib/libqb.la
loop_SOURCES = loop.c
loop_LDADD = $(top_builddir)/lib/libqb.la
.PHONY: ipc-test-name
ipc-test-name:
@testname=$(shell echo `uuidgen | sed -e "s#-.*##g"`-`date +%s`); \
- echo $$testname > ipc-test-name
+ echo -n $$testname > ipc-test-name
@mkdir -p $(SOCKETDIR)
inc_dir = $(top_srcdir)/include/qb
public_headers = $(sort $(patsubst %.in,%,$(subst $(inc_dir)/,,$(shell \
printf 'include $(inc_dir)/Makefile.am\n\n%%.var:\n\t@echo $$($$*)' \
| MAKEFLAGS= ${MAKE} --no-print-directory -f- inst_HEADERS.var \
|| echo $(inc_dir)/qb*.h*))))
auto_c_files = $(patsubst %.h,auto_check_header_%.c,$(public_headers))
# this works for both non/generated headers thanks to VPATH being
# automatically set to $(top_srcdir)/tests and $(top_builddir)
# being resolved to ".." by automake
# ($(top_srcdir)/tests/../include/qb/%.h = $(top_srcdir)/include/qb/%.h)
auto_check_header_%.c: $(top_builddir)/include/qb/%.h
@name=$$(echo "$<" | sed "s|.*qb/qb||" | sed "s|\.h||") ;\
NAME=$$(echo $$name | tr [:lower:] [:upper:]) ;\
echo "#include <qb/qb$$name.h>" > $@_ ;\
echo "#ifndef QB_$${NAME}_H_DEFINED" >> $@_ ;\
echo "#error no header protector in file qb$$name.h" >> $@_ ;\
echo "#endif" >> $@_ ;\
echo "int main(void) {return 0;}" >> $@_
$(AM_V_GEN)mv $@_ $@
check: check-headers
# rely on implicit automake rule to include right (local) includes
.PHONY: check-headers
check-headers: $(auto_c_files:.c=.o) $(auto_c_files:.c=.opp)
# this is to check basic sanity of using libqb from C++ code, if possible
%.opp: %.c
if HAVE_GXX
$(AM_V_GEN)$(CXX) $(AM_CPPFLAGS) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $<
else
@echo "C++ compatibility tests not run"
endif
if HAVE_DICT_WORDS
if HAVE_SLOW_TESTS
nodist_bench_log_SOURCES = auto_write_logs.c
bench_log: auto_write_logs.c
$(builddir)/auto_write_logs.c: make-log-test.sh
@$(srcdir)/make-log-test.sh > $(builddir)/write_logs-tmp.c
$(AM_V_GEN)mv $(builddir)/write_logs-tmp.c $(builddir)/auto_write_logs.c
endif
endif
bench_log_SOURCES = bench-log.c
bench_log_LDADD = $(top_builddir)/lib/libqb.la
libdir= $(TESTDIR)
if HAVE_CHECK
-TESTS = array.test map.test rb.test list.test log.test blackbox-segfault.sh loop.test all_ipcs.test
+TESTS = array.test map.test rb.test list.test log.test blackbox-segfault.sh loop.test ipc.test sock_ipc_wrapper.test
TESTS_ENVIRONMENT = export PATH=.:../tools:$$PATH;
-resources.log: rb.log log.log all_ipcs.log
-
check_PROGRAMS = array.test ipc.test ipc_sock.test list.test log.test loop.test \
map.test rb.test util.test tlist.test \
crash_test_dummy file_change_bytes
-dist_check_SCRIPTS = all_ipcs.test blackbox-segfault.sh
+dist_check_SCRIPTS = sock_ipc_wrapper.test blackbox-segfault.sh
check_LTLIBRARIES =
if HAVE_SLOW_TESTS
TESTS += util.test
check_PROGRAMS += util.test
endif
if INSTALL_TESTS
testsuitedir = $(TESTDIR)
testsuite_PROGRAMS = $(check_PROGRAMS)
testsuite_SCRIPTS = $(dist_check_SCRIPTS) test.conf
endif
file_change_bytes_SOURCES = file_change_bytes.c
crash_test_dummy_SOURCES = crash_test_dummy.c
crash_test_dummy_CFLAGS = @CHECK_CFLAGS@
crash_test_dummy_LDADD = $(top_builddir)/lib/libqb.la @CHECK_LIBS@
array_test_SOURCES = check_array.c
array_test_CFLAGS = @CHECK_CFLAGS@
array_test_LDADD = $(top_builddir)/lib/libqb.la @CHECK_LIBS@
map_test_SOURCES = check_map.c
map_test_CFLAGS = @CHECK_CFLAGS@
map_test_LDADD = $(top_builddir)/lib/libqb.la @CHECK_LIBS@
rb_test_SOURCES = check_rb.c
rb_test_CFLAGS = @CHECK_CFLAGS@
rb_test_LDADD = $(top_builddir)/lib/libqb.la @CHECK_LIBS@
loop_test_SOURCES = check_loop.c
loop_test_CFLAGS = @CHECK_CFLAGS@
loop_test_LDADD = $(top_builddir)/lib/libqb.la @CHECK_LIBS@
tlist_test_SOURCES = check_tlist.c
tlist_test_CFLAGS = @CHECK_CFLAGS@
tlist_test_LDADD = $(top_builddir)/lib/libqb.la @CHECK_LIBS@
if HAVE_FAILURE_INJECTION
check_LTLIBRARIES += _failure_injection.la
_failure_injection_la_SOURCES = _failure_injection.c _failure_injection.h
_failure_injection_la_LDFLAGS = -module
_failure_injection_la_LIBADD = $(dlopen_LIBS)
endif
check_LTLIBRARIES += _libstat_wrapper.la
_libstat_wrapper_la_SOURCES = _libstat_wrapper.c
_libstat_wrapper_la_LDFLAGS = -module
_libstat_wrapper_la_LIBADD = $(dlopen_LIBS)
ipc_test_SOURCES = check_ipc.c
ipc_test_CFLAGS = @CHECK_CFLAGS@
ipc_test_LDADD = $(top_builddir)/lib/libqb.la @CHECK_LIBS@
if HAVE_GLIB
ipc_test_CFLAGS += $(GLIB_CFLAGS)
ipc_test_LDADD += $(GLIB_LIBS)
endif
if HAVE_FAILURE_INJECTION
ipc_test_LDADD += _failure_injection.la
endif
ipc_sock_test_SOURCES = check_ipc.c
ipc_sock_test_CFLAGS = @CHECK_CFLAGS@
ipc_sock_test_LDADD = $(top_builddir)/lib/libqb.la @CHECK_LIBS@
if HAVE_GLIB
ipc_sock_test_CFLAGS += $(GLIB_CFLAGS)
ipc_sock_test_LDADD += $(GLIB_LIBS)
endif
ipc_sock_test_LDADD += _libstat_wrapper.la
if HAVE_FAILURE_INJECTION
ipc_sock_test_LDADD += _failure_injection.la
endif
check_LTLIBRARIES += _syslog_override.la
_syslog_override_la_SOURCES = _syslog_override.c _syslog_override.h
_syslog_override_la_LDFLAGS = -module
log_test_SOURCES = check_log.c
log_test_CFLAGS = @CHECK_CFLAGS@
log_test_LDADD = $(top_builddir)/lib/libqb.la @CHECK_LIBS@
log_test_LDADD += _syslog_override.la
util_test_SOURCES = check_util.c
util_test_CFLAGS = @CHECK_CFLAGS@
util_test_LDADD = $(top_builddir)/lib/libqb.la @CHECK_LIBS@
list_test_SOURCES = check_list.c
list_test_CFLAGS = @CHECK_CFLAGS@
list_test_LDADD = $(top_builddir)/lib/libqb.la @CHECK_LIBS@
+
+#
+# This lot allows the tests to run in parallel
+# but with defined dependancies
+#
+ipc.log: ipc-test-name
+
+sock_ipc_wrapper.log: ipc-test-name
+
+array.log: ipc-test-name
+
+list.log: ipc-test-name
+
+log.log: ipc-test-name
+
+loop.log: ipc-test-name
+
+map.log: ipc-test-name
+
+rb.log: ipc-test-name
+
+tlist.log: ipc-test-name
+
+util.log: ipc-test-name
+
+resources.log: ipc.log sock_ipc_wrapper.log rb.log log.log
+
endif
clean-local:
rm -f *.log
rm -f *.fdata
rm -f ipc-test-name
rm -f crash_test_dummy.core
distclean-local:
rm -rf auto_*.c
rm -rf .deps
diff --git a/tests/all_ipcs.test b/tests/resources.test
old mode 100755
new mode 100644
similarity index 61%
rename from tests/all_ipcs.test
rename to tests/resources.test
index eb923de..25dbf54
--- a/tests/all_ipcs.test
+++ b/tests/resources.test
@@ -1,112 +1,79 @@
#!/bin/sh
-# Run all of the IPC tests in one script. This is needed because
-# make check could run with -j and the start and resource 'tests'
-# need to run first and last respectively.
-
-# Clean-up params
+RETURN=0
SOCKS_PER_PROCESS=3
EXPECTED_DLOCK=6
EXPECTED_LEFTOVER=2
+# Linux also runs filesystem socket tests
+if [ "$(uname -s)" = "Linux" ] && [ "`id -u`" = "0" ]
+then
+ EXPECTED_DLOCK=12
+ EXPECTED_LEFTOVER=4
+fi
+
tidy_qb_dirs()
{
for dd in "$@"; do
rm $dd
rmdir $(dirname $dd) 2> /dev/null
done
}
-run_shm_ipcs()
-{
- echo "======================= Running SHM IPC tests ======================="
- ./ipc.test
-}
-
-run_sock_ipcs()
-{
- # filesystem socket IPC test
- if [ "$(uname -s)" = "Linux" ] && [ "`id -u`" = "0" ]
- then
- echo "======================= Running socket IPC tests ======================="
-
- if [ "$(uname -s)" = "Linux" ] && [ "`id -u`" = "0" ]
- then
- ./ipc_sock.test
- RES=$?
- if [ "$RES" = "0" ]
- then
- EXPECTED_DLOCK=12
- EXPECTED_LEFTOVER=4
- fi
- fi
- fi
- return $RES
-}
-
-# Normal IPC test
-run_shm_ipcs
-RESULT=$?
-
-# Socket IPC test
-run_sock_ipcs
-# Don't override previous failure status
-if [ $? != 0 ]
-then
- RESULT=$?
-fi
-# Tidy up and check leftovers
IPC_NAME=$(cat ipc-test-name 2>/dev/null)
for d in /dev/shm /var/run $SOCKETDIR; do
# Tidy up the deadlock checker sockets first
dlocks=$(find $d -name "qb-*-test_*dlock*${IPC_NAME}*" -size +0c 2>/dev/null)
if [ "$(echo $dlocks|wc -w)" -eq $(($SOCKS_PER_PROCESS * $EXPECTED_DLOCK)) ]; then
tidy_qb_dirs $dlocks
rm $dlocks
elif [ -n "${dlocks}" ]; then
echo
echo "Error: dlock shared memory segments not closed/unlinked"
echo
RETURN=1
fi
# Now look for other expected leftovers
leftovers=$(find $d -name "qb-*-test_*${IPC_NAME}*" -size +0c 2>/dev/null | wc -l)
if [ "${leftovers}" -gt 0 ]; then
echo
echo "Error: shared memory segments not closed/unlinked"
echo
RETURN=1
fi
leftovers="$(find $d -name "qb-*-test_*${IPC_NAME}*" -size 0c 2>/dev/null)"
if [ "$(printf '%s\n' "${leftovers}" | wc -l)" -eq $(($SOCKS_PER_PROCESS * $EXPECTED_LEFTOVER)) ]; then
echo
echo "There were some empty leftovers (expected), removing them"
echo "${leftovers}"
echo
tidy_qb_dirs $leftovers
elif [ -n "${leftovers}" ]; then
echo
echo "Error: unexpected number of empty leftovers"
echo "${leftovers}"
echo
RETURN=1
fi
done
# Clean up empty /dev/shm directories left over by some tests
-DIRS=$(grep "Free'ing ringbuffer" all_ipcs.log | cut -f4 -d ' '|cut -f-4 -d'/'|sort|uniq)
+DIRS=$(grep "Free'ing ringbuffer" ipc.log ipc_sock.log| cut -f4 -d ' '|cut -f-4 -d'/'|sort|uniq)
for i in $DIRS
do
rmdir $i 2>/dev/null
done
ps aux | grep -v grep | grep -E 'lt-.*\.test'
if [ $? -eq 0 ]; then
echo "test program frozen"
RETURN=1
fi
+# Keep it tidy - distcheck checks we have not left a mess
+rm -f ipc-test-name
+rm -f crash_test_dummy.core
exit $RETURN
diff --git a/tests/sock_ipc_wrapper.test b/tests/sock_ipc_wrapper.test
new file mode 100755
index 0000000..685f3f1
--- /dev/null
+++ b/tests/sock_ipc_wrapper.test
@@ -0,0 +1,7 @@
+#/bin/sh -e
+# filesystem socket IPC test
+if [ "$(uname -s)" = "Linux" ] && [ "`id -u`" = "0" ]
+then
+ ./ipc_sock.test
+fi
+
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Wed, Jun 4, 6:37 AM (6 h, 45 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1820802
Default Alt Text
(11 KB)
Attached To
Mode
rQ LibQB
Attached
Detach File
Event Timeline
Log In to Comment