libinput parallel test suite attempts and results

Bryce Harrington bryce at osg.samsung.com
Mon May 18 19:27:01 PDT 2015


On Tue, May 19, 2015 at 12:04:34PM +1000, Peter Hutterer wrote:
> 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.

Could you do something like swap in a synthetic clock where they're
doing time dependent stuff, that you can advance at will to trigger the
timeouts?
 
> 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
>  
> 
> 
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel


More information about the wayland-devel mailing list