dbus/test
Simon McVittie bef88fd562 test/bus: Break up dispatch test into three separate tests
This is really three separate test-cases: one for traditional
activation as a direct child process of the dbus-daemon, and two for
traditional activation (successful and failing) via the setuid
dbus-daemon-launch-helper on Unix.

The ones where activation succeeds extremely slow, as a result of the
instrumentation for simulating malloc() failures combined with a large
number of memory operations, particularly when using AddressSanitizer.

Splitting up "OOM" tests like these has a disproportionately good impact
on the time they take, because the simulated malloc() failure
instrumentation repeats the entire test making the first malloc() fail,
then making the second malloc() fail, and so on. For allocation failures
in the second half of the test, this means we repeat the first half of
the test with no malloc() failures a very large number of times, which
is not a good use of time, because we already tested it successfully.

Even when not using the "OOM" instrumentation, splitting up these tests
lets them run in parallel, which is also a major time saving.

Needless to say, this speeds up testing considerably. On my modern but
unexceptional x86 laptop, in a typical debug build with Meson, the old
dispatch test took just over 21 minutes, which drops to about 40 seconds
each for the new normal-activation and helper-activation tests (and for
most of that time, they're running in parallel, so the wall-clock time
taken for the whole test suite is somewhere around a minute).

In a debug build with Meson, gcc and AddressSanitizer, the old dispatch
test takes longer than my patience will allow, and the new separate
tests take about 5-6 minutes each. Reduce their timeout accordingly, but
not as far as the default for slow tests (5 minutes) to allow some
headroom for AddressSanitizer or slower systems.

The failed-helper-activation test is almost instantaneous, and no longer
needs to be marked as slow.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2022-07-18 11:15:54 +00:00
..
bus test/bus: Break up dispatch test into three separate tests 2022-07-18 11:15:54 +00:00
data meson: add test-autolaunch-win 2022-07-13 20:36:13 +01:00
integration tests: Ensure session bus has started before integration test 2022-02-21 18:09:22 +00:00
internals test: enable AF_UNIX server-oom test on !unix 2022-07-15 16:26:54 +01:00
name-test test: Work around TAP test regression in Meson 0.63.0 2022-07-15 10:10:54 +01:00
.gitignore .gitignore: Ignore many more generated files 2018-12-14 13:28:50 +00:00
CMakeLists.txt test/bus: Break up dispatch test into three separate tests 2022-07-18 11:15:54 +00:00
containers.c Disable the Containers interface 2021-12-10 16:48:51 +00:00
corrupt.c test: enable AF_UNIX corrupt test on !unix 2022-07-15 16:26:54 +01:00
dbus-daemon-eavesdrop.c tests: Detach most connections from main loop before closing 2018-08-02 17:16:43 +01:00
dbus-daemon.c Disable the Containers interface 2021-12-10 16:48:51 +00:00
dbus-test-runner Add support for installing most of the modular tests 2011-06-10 18:32:35 +01:00
disable-crash-handling.c Move _dbus_disable_crash_handling() back into test/ directory 2018-12-11 12:47:22 +00:00
disable-crash-handling.h Move _dbus_disable_crash_handling() back into test/ directory 2018-12-11 12:47:22 +00:00
fdpass.c fdpass test: Assert that we don't leak file descriptors 2020-06-02 10:42:54 +01:00
glib-tap-test.sh When running TAP tests, filter out trailing \r from Windows .exe 2015-10-29 05:50:27 +01:00
header-fields.c tests: Call dbus_shutdown() 2018-08-02 17:14:39 +01:00
loopback.c gitlab: skip failing runtime directory check, add FIXME 2022-07-15 16:26:54 +01:00
Makefile.am test/bus: Break up dispatch test into three separate tests 2022-07-18 11:15:54 +00:00
manual-authz.c tests: reassure clang that oom() does in fact not return 2015-02-24 11:14:02 +00:00
manual-backtrace.c manual-backtrace: use proper prototypes, and make functions static 2015-11-17 15:32:43 +00:00
manual-dir-iter.c test: Add a missing OOM path in manual-dir-iter test 2017-02-14 17:45:08 +00:00
manual-paths.c test: Replace _dbus_assert_not_reached() 2020-04-20 10:13:07 +01:00
manual-tcp.c Add manual tcp test case. 2015-01-30 09:33:40 +01:00
marshal.c test/marshal: Don't leak a message and its marshalled buffer 2018-08-02 17:16:14 +01:00
meson.build test/bus: Break up dispatch test into three separate tests 2022-07-18 11:15:54 +00:00
message.c tests: Call dbus_shutdown() 2018-08-02 17:14:39 +01:00
meta_template.test.in Add Meson build system 2022-07-13 20:36:13 +01:00
mkdir-m700.py test: Try to create temporary XDG_RUNTIME_DIR with correct mode 2022-07-13 20:36:13 +01:00
monitor.c tests: Detach most connections from main loop before closing 2018-08-02 17:16:43 +01:00
relay.c test: enable AF_UNIX relay tests on !unix 2022-07-15 16:26:54 +01:00
sd-activation.c test: activation tests for send_destination_prefix 2019-05-14 10:31:13 +02:00
shell-test.c shell-test: Print diagnostics to stderr 2020-04-28 11:50:23 +01:00
spawn-test.c tests: Call dbus_shutdown() 2018-08-02 17:14:39 +01:00
syntax.c tests: Call dbus_shutdown() 2018-08-02 17:14:39 +01:00
tap-test.sh.in Run most tests under the TAP driver, with a simple adaptor for non-TAP tests 2015-04-16 13:06:29 +01:00
test-apparmor-activation.sh Add an integration test for AppArmor mediating activation 2016-11-28 12:11:52 +00:00
test-dbus-daemon-fork.sh test-dbus-daemon-fork: exercise closed stdin, stdout, stderr 2016-08-12 18:21:36 +01:00
test-dbus-launch-eval.sh tests: Don't exercise GetMachineId() or autolaunch if no machine ID 2017-06-08 18:30:39 +01:00
test-dbus-launch-x11.sh tests: Don't exercise GetMachineId() or autolaunch if no machine ID 2017-06-08 18:30:39 +01:00
test-exit.c Include config.h as the first thing in every .c file 2013-02-22 13:08:27 +00:00
test-names.c tests: Call dbus_shutdown() 2018-08-02 17:14:39 +01:00
test-platform-mutex.c Add unit tests for platform-specific mutex implementation. 2022-05-01 19:52:48 +02:00
test-privserver.c test-privserver: Exit if DBusLoop cannot be allocated 2022-07-15 13:54:59 +01:00
test-segfault.c test-segfault: Fix build error caused by a null pointer dereference warning 2022-04-21 13:54:23 +01:00
test-service.c test: Replace _dbus_assert_not_reached() 2020-04-20 10:13:07 +01:00
test-shell-service.c test-utils: Separate failable and non-failable functions 2017-12-04 11:52:52 +00:00
test-sleep-forever.c fix warning, use Sleep, not _sleep on windows (cherry picked from commit ea36c743ad60a2dd5c6286571d1a475903519809) 2009-11-30 12:00:14 +01:00
test-utils-glib.c test: Skip tests that involve switching uid if unable to do so 2022-07-18 10:31:40 +00:00
test-utils-glib.h test: add test_check_af_unix_works() 2022-07-15 16:26:54 +01:00
test-utils.c test-utils: Don't assume all arrays of tests are zero-terminated 2021-12-15 17:47:32 +00:00
test-utils.h test: Move TAP helpers into dbus-testutils if embedded tests are disabled 2020-04-20 10:13:04 +01:00
thread-blocking.c test/thread-blocking.c: Fix a memory leak 2021-10-29 18:03:13 +00:00
uid-permissions.c tests: Detach most connections from main loop before closing 2018-08-02 17:16:43 +01:00