mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-03-10 00:58:20 +03:00
Merge pull request #12020 from mrc0mmand/test-functions-interactive-debug
test: test-functions improvements for debugging
This commit is contained in:
commit
59b44cc3b1
@ -44,11 +44,38 @@ An absolute path may also be used in both cases.
|
||||
Configuration variables
|
||||
=======================
|
||||
|
||||
TEST_NO_QEMU=1 can be used to disable qemu tests.
|
||||
TEST_NO_QEMU=1
|
||||
Don't run tests under QEMU
|
||||
|
||||
TEST_NO_NSPAWN=1 can be used to disable nspawn tests.
|
||||
TEST_NO_NSPAWN=1
|
||||
Don't run tests under systemd-nspawn
|
||||
|
||||
KERNEL_APPEND='...' can be used to add additional kernel parameters for the QEMU runs.
|
||||
TEST_NO_KVM=1
|
||||
Disable QEMU KVM autodetection (may be necessary when you're trying to run the
|
||||
*vanilla* QEMU and have both qemu and qemu-kvm installed)
|
||||
|
||||
QEMU_MEM=512M
|
||||
Configure amount of memory for QEMU VMs (defaults to 512M)
|
||||
|
||||
QEMU_SMP=1
|
||||
Configure number of CPUs for QEMU VMs (defaults to 1)
|
||||
|
||||
KERNEL_APPEND='...'
|
||||
Append additional parameters to the kernel command line
|
||||
|
||||
NSPAWN_ARGUMENTS='...'
|
||||
Specify additional arguments for systemd-nspawn
|
||||
|
||||
QEMU_TIMEOUT=infinity
|
||||
Set a timeout for tests under QEMU (defaults to infinity)
|
||||
|
||||
NSPAWN_TIMEOUT=infinity
|
||||
Set a timeout for tests under systemd-nspawn (defaults to infinity)
|
||||
|
||||
INTERACTIVE_DEBUG=1
|
||||
Configure the machine to be more *user-friendly* for interactive debuggung
|
||||
(e.g. by setting a usable default terminal, suppressing the shutdown after
|
||||
the test, etc.)
|
||||
|
||||
The kernel and initramfs can be specified with $KERNEL_BIN and $INITRD.
|
||||
(Fedora's or Debian's default kernel path and initramfs are used by default)
|
||||
|
@ -25,7 +25,7 @@ fi
|
||||
PATH_TO_INIT=$ROOTLIBDIR/systemd
|
||||
|
||||
BASICTOOLS="test sh bash setsid loadkeys setfont login sulogin gzip sleep echo head tail cat mount umount cryptsetup date dmsetup modprobe sed cmp tee rm true false chmod chown ln xargs"
|
||||
DEBUGTOOLS="df free ls stty ps ln ip route dmesg dhclient mkdir cp ping dhclient strace less grep id tty touch du sort hostname find"
|
||||
DEBUGTOOLS="df free ls stty ps ln ip route dmesg dhclient mkdir cp ping dhclient strace less grep id tty touch du sort hostname find vi mv"
|
||||
|
||||
STATEDIR="${BUILD_DIR:-.}/test/$(basename $(dirname $(realpath $0)))"
|
||||
STATEFILE="$STATEDIR/.testdir"
|
||||
@ -60,7 +60,7 @@ function find_qemu_bin() {
|
||||
# SUSE and Red Hat call the binary qemu-kvm. Debian and Gentoo call it kvm.
|
||||
# Either way, only use this version if we aren't running in KVM, because
|
||||
# nested KVM is flaky still.
|
||||
if [ `systemd-detect-virt -v` != kvm ] ; then
|
||||
if [[ $(systemd-detect-virt -v) != kvm && -z $TEST_NO_KVM ]] ; then
|
||||
[ "$QEMU_BIN" ] || QEMU_BIN=$(which -a kvm qemu-kvm 2>/dev/null | grep '^/' -m1)
|
||||
fi
|
||||
|
||||
@ -192,7 +192,7 @@ $KERNEL_APPEND \
|
||||
fi
|
||||
|
||||
# Let's use KVM if it is available, but let's avoid using nested KVM as that is still flaky
|
||||
if [ -c /dev/kvm -a `systemd-detect-virt -v` != kvm ]; then
|
||||
if [[ -c /dev/kvm && $(systemd-detect-virt -v) != kvm && -z $TEST_NO_KVM ]] ; then
|
||||
QEMU_OPTIONS="$QEMU_OPTIONS -machine accel=kvm -enable-kvm -cpu host"
|
||||
fi
|
||||
|
||||
@ -509,7 +509,7 @@ check_asan_reports() {
|
||||
"dbus-daemon" => undef,
|
||||
);
|
||||
}
|
||||
print $2 if /\s(\S*)\[(\d+)\]:\s*SUMMARY:\s+\w+Sanitizer/ && !exists $services_to_ignore{$1}'
|
||||
print $2 if /\s(\S*)\[(\d+)\]:\s*SUMMARY:\s+\w+Sanitizer/ && !exists $services_to_ignore{$1}'
|
||||
)
|
||||
if [[ ! -z "$pids" ]]; then
|
||||
ret=$(($ret+1))
|
||||
@ -655,6 +655,21 @@ install_basic_tools() {
|
||||
|
||||
install_debug_tools() {
|
||||
[[ $DEBUGTOOLS ]] && dracut_install $DEBUGTOOLS
|
||||
|
||||
if [[ $INTERACTIVE_DEBUG ]]; then
|
||||
# Set default TERM from vt220 to linux, so at least basic key shortcuts work
|
||||
local _getty_override="$initdir/etc/systemd/system/serial-getty@.service.d"
|
||||
mkdir -p "$_getty_override"
|
||||
echo -e "[Service]\nEnvironment=TERM=linux" > "$_getty_override/default-TERM.conf"
|
||||
|
||||
cat > "$initdir/etc/motd" << EOF
|
||||
To adjust the terminal size use:
|
||||
export COLUMNS=xx
|
||||
export LINES=yy
|
||||
or
|
||||
stty cols xx rows yy
|
||||
EOF
|
||||
fi
|
||||
}
|
||||
|
||||
install_libnss() {
|
||||
@ -761,7 +776,8 @@ setup_testsuite() {
|
||||
|
||||
mkdir -p $initdir/etc/systemd/system/testsuite.target.wants
|
||||
ln -fs $TEST_BASE_DIR/testsuite.service $initdir/etc/systemd/system/testsuite.target.wants/testsuite.service
|
||||
ln -fs $TEST_BASE_DIR/end.service $initdir/etc/systemd/system/testsuite.target.wants/end.service
|
||||
# Don't shutdown the machine after running the test when INTERACTIVE_DEBUG is set
|
||||
[[ -z $INTERACTIVE_DEBUG ]] && ln -fs $TEST_BASE_DIR/end.service $initdir/etc/systemd/system/testsuite.target.wants/end.service
|
||||
|
||||
# make the testsuite the default target
|
||||
ln -fs testsuite.target $initdir/etc/systemd/system/default.target
|
||||
|
Loading…
x
Reference in New Issue
Block a user