c5ed892b1b
Unfortunately just adding suppressions isn't enough; the build of Expat we have in our CI system does not have frame pointers, so ASan's fast unwinder can't see through it. This means that the suppressions we've added won't be taken into account. For now, disable the fast unwinder for the Xwayland test only. Disabling it globally is not practical as it massively increases the per-test runtime, so here (to avoid polluting the build system), we use a per-test wrapper to selectively choose the unwinder. Signed-off-by: Daniel Stone <daniels@collabora.com>
51 lines
2.0 KiB
Bash
Executable File
51 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# folders that are necessary to run Weston tests
|
|
mkdir -p /tmp/tests
|
|
mkdir -p /tmp/.X11-unix
|
|
chmod -R 0700 /tmp
|
|
|
|
# set environment variables to run Weston tests
|
|
export XDG_RUNTIME_DIR=/tmp/tests
|
|
export LIBSEAT_BACKEND=seatd
|
|
# In our test suite, we use VKMS to run DRM-backend tests. The order in which
|
|
# devices are loaded is not predictable, so the DRM node that VKMS takes can
|
|
# change across each boot. That's why we have this one-liner shell script to get
|
|
# the appropriate node for VKMS.
|
|
export WESTON_TEST_SUITE_DRM_DEVICE=$(basename /sys/devices/platform/vkms/drm/card*)
|
|
# To run tests in the CI that exercise the zwp_linux_dmabuf_v1 implementation in
|
|
# Weston, we use VGEM to allocate buffers.
|
|
export WESTON_TEST_SUITE_ALLOC_DEVICE=$(basename /sys/devices/platform/vgem/drm/card*)
|
|
|
|
# ninja test depends on meson, and meson itself looks for its modules on folder
|
|
# $HOME/.local/lib/pythonX.Y/site-packages (the Python version may differ).
|
|
# build-deps.sh installs dependencies to /usr/local.
|
|
# virtme starts with HOME=/tmp/roothome, but as we installed meson on user root,
|
|
# meson can not find its modules. So we change the HOME env var to fix that.
|
|
export HOME=/root
|
|
export PATH=$HOME/.local/bin:$PATH
|
|
export PATH=/usr/local/bin:$PATH
|
|
|
|
export SEATD_LOGLEVEL=debug
|
|
|
|
# run the tests and save the exit status
|
|
# we give ourselves a very generous timeout multiplier due to ASan overhead
|
|
echo 0x1f > /sys/module/drm/parameters/debug
|
|
seatd-launch -- meson test --no-rebuild --timeout-multiplier 4 \
|
|
--wrapper $(pwd)/../.gitlab-ci/virtme-scripts/per-test-asan.sh
|
|
# note that we need to store the return value from the tests in order to
|
|
# determine if the test suite ran successfully or not.
|
|
TEST_RES=$?
|
|
dmesg &> dmesg.log
|
|
echo 0x00 > /sys/module/drm/parameters/debug
|
|
|
|
# create a file to keep the result of this script:
|
|
# - 0 means the script succeeded
|
|
# - 1 means the tests failed, so the job itself should fail
|
|
TESTS_RES_PATH=$(pwd)/tests-res.txt
|
|
echo $TEST_RES > $TESTS_RES_PATH
|
|
|
|
# shutdown virtme
|
|
sync
|
|
poweroff -f
|