libinput parallel test suite attempts and results
Peter Hutterer
peter.hutterer at who-t.net
Mon May 18 19:04:34 PDT 2015
This is mostly just a comment on a failed attempt, in case someone is
tempted to try it or has any feedback otherwise.
The libinput tests suite has a couple of binaries (test-touchpad,
test-pointer, etc.). The .NOTPARALLEL directive makes sure they're run
serialised during make check. Because of the various timeouts we test again,
a test run now takes nearly 3 minutes to complete. Which is annoying.
Most tests could in theory run parallel because we only ever listen to one
or two devices per test and ignore the rest. Alas, I have yet to get a
single parallel run to succeed (and even that's with only running
path-backend tests in parallel, forget about the udev tests altogether).
The Makefile.am changes are trivial, see below, but even at make -j2 usually
one or two tests fail (the wheel-only one most often since it needs custom
udev rules), at higher -j levels you can forget about it altogether.
So without some larger rewrite and figuring out how uinput + udev becomes
reliable when you're hammering hundreds of devices per second against it the
test suite will have to stay serial.
Any ideas welcome though.
Cheers,
Peter
diff --git a/test/Makefile.am b/test/Makefile.am
index 46959fd..c2f0fde 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -38,18 +38,31 @@ liblitest_la_SOURCES = \
litest-vmware-virtual-usb-mouse.c \
litest.c
liblitest_la_LIBADD = $(top_builddir)/src/libinput-util.la
+liblitest_la_CFLAGS = $(AM_CFLAGS)
+if HAVE_LIBUNWIND
+liblitest_la_LIBADD += $(LIBUNWIND_LIBS) -ldl
+liblitest_la_CFLAGS += $(LIBUNWIND_CFLAGS)
+endif
+
+parallel_tests = \
+ touchpad.test \
+ device.test \
+ pointer.test \
+ touch.test \
+ trackpoint.test \
+ path.test \
+ log.test \
+ misc.test \
+ keyboard.test \
+ litest-selftest.test
+
+serial_tests = \
+ udev.test
run_tests = \
- test-touchpad \
- test-device \
- test-pointer \
- test-touch \
- test-trackpoint \
- test-udev \
- test-path \
- test-log \
- test-misc \
- test-keyboard
+ $(parallel_tests) \
+ $(serial_tests)
+
build_tests = \
test-build-cxx \
test-build-linker \
@@ -60,47 +73,52 @@ noinst_PROGRAMS = $(build_tests) $(run_tests)
noinst_SCRIPTS = symbols-leak-test
TESTS = $(run_tests) symbols-leak-test
-.NOTPARALLEL:
+udev_test_SOURCES = udev.c
+udev_test_LDADD = $(TEST_LIBS)
+udev_test_LDFLAGS = -no-install
-test_udev_SOURCES = udev.c
-test_udev_LDADD = $(TEST_LIBS)
-test_udev_LDFLAGS = -no-install
+path_test_SOURCES = path.c
+path_test_LDADD = $(TEST_LIBS)
+path_test_LDFLAGS = -no-install
-test_path_SOURCES = path.c
-test_path_LDADD = $(TEST_LIBS)
-test_path_LDFLAGS = -no-install
+pointer_test_SOURCES = pointer.c
+pointer_test_LDADD = $(TEST_LIBS)
+pointer_test_LDFLAGS = -no-install
-test_pointer_SOURCES = pointer.c
-test_pointer_LDADD = $(TEST_LIBS)
-test_pointer_LDFLAGS = -no-install
+touch_test_SOURCES = touch.c
+touch_test_LDADD = $(TEST_LIBS)
+touch_test_LDFLAGS = -no-install
-test_touch_SOURCES = touch.c
-test_touch_LDADD = $(TEST_LIBS)
-test_touch_LDFLAGS = -no-install
+log_test_SOURCES = log.c
+log_test_LDADD = $(TEST_LIBS)
+log_test_LDFLAGS = -no-install
-test_log_SOURCES = log.c
-test_log_LDADD = $(TEST_LIBS)
-test_log_LDFLAGS = -no-install
+touchpad_test_SOURCES = touchpad.c
+touchpad_test_LDADD = $(TEST_LIBS)
+touchpad_test_LDFLAGS = -no-install
-test_touchpad_SOURCES = touchpad.c
-test_touchpad_LDADD = $(TEST_LIBS)
-test_touchpad_LDFLAGS = -no-install
+trackpoint_test_SOURCES = trackpoint.c
+trackpoint_test_LDADD = $(TEST_LIBS)
+trackpoint_test_LDFLAGS = -no-install
-test_trackpoint_SOURCES = trackpoint.c
-test_trackpoint_LDADD = $(TEST_LIBS)
-test_trackpoint_LDFLAGS = -no-install
+misc_test_SOURCES = misc.c
+misc_test_LDADD = $(TEST_LIBS)
+misc_test_LDFLAGS = -no-install
-test_misc_SOURCES = misc.c
-test_misc_LDADD = $(TEST_LIBS)
-test_misc_LDFLAGS = -no-install
+keyboard_test_SOURCES = keyboard.c
+keyboard_test_LDADD = $(TEST_LIBS)
+keyboard_test_LDFLAGS = -no-install
-test_keyboard_SOURCES = keyboard.c
-test_keyboard_LDADD = $(TEST_LIBS)
-test_keyboard_LDFLAGS = -no-install
+device_test_SOURCES = device.c
+device_test_LDADD = $(TEST_LIBS)
+device_test_LDFLAGS = -no-install
-test_device_SOURCES = device.c
-test_device_LDADD = $(TEST_LIBS)
-test_device_LDFLAGS = -no-install
+litest_selftest_test_SOURCES = litest-selftest.c litest.c litest-int.h litest.h
+litest_selftest_test_CFLAGS = -DLITEST_DISABLE_BACKTRACE_LOGGING
+litest_selftest_test_LDADD = $(TEST_LIBS)
+litest_selftest_test_LDFLAGS = -no-install
+
+$(serial_tests:.test=.log): | $(parallel_tests:.test=.log)
# build-test only
test_build_pedantic_c99_SOURCES = build-pedantic.c
@@ -126,8 +144,8 @@ VALGRIND_FLAGS=--leak-check=full \
--error-exitcode=3 \
--suppressions=$(srcdir)/valgrind.suppressions
-valgrind:
- $(MAKE) check-TESTS LOG_COMPILER="$(VALGRIND)" LOG_FLAGS="$(VALGRIND_FLAGS)" CK_FORK=no
+valgrind: | $(serial_tests:.test=.log) $(parallel_tests:.test=.log)
+ $(MAKE) check-TESTS LOG_COMPILER="$(VALGRIND)" LOG_FLAGS="$(VALGRIND_FLAGS)" CK_FORK=no USING_VALGRIND=yes
check: valgrind
More information about the wayland-devel
mailing list