]> git.ipfire.org Git - thirdparty/systemd.git/blame - test/units/testsuite-74.modules-load.sh
TEST-74-AUX-UTILS: Drop usage of loop module
[thirdparty/systemd.git] / test / units / testsuite-74.modules-load.sh
CommitLineData
9948a169
FS
1#!/usr/bin/env bash
2# SPDX-License-Identifier: LGPL-2.1-or-later
3set -eux
4set -o pipefail
5
6MODULES_LOAD_BIN="/usr/lib/systemd/systemd-modules-load"
7CONFIG_FILE="/run/modules-load.d/99-test.conf"
8
9at_exit() {
10 rm -rfv "${CONFIG_FILE:?}"
11}
12
13trap at_exit EXIT
14
15if systemd-detect-virt -cq; then
16 echo "Running in a container, skipping the systemd-modules-load test..."
17 exit 0
18fi
19
fe8d7d25
RM
20ORIG_MODULES_LOAD_CONFIG="$(systemd-analyze cat-config modules-load.d)"
21
9948a169 22# Check if we have required kernel modules
3d5c6ece 23modprobe --all --resolve-alias dummy
9948a169
FS
24
25mkdir -p /run/modules-load.d/
26
27"$MODULES_LOAD_BIN"
28"$MODULES_LOAD_BIN" --help
29"$MODULES_LOAD_BIN" --version
30
31# Explicit config file
3d5c6ece
DDM
32modprobe -v --all --remove dummy
33printf "dummy" >"$CONFIG_FILE"
9948a169 34"$MODULES_LOAD_BIN" "$CONFIG_FILE" |& tee /tmp/out.log
9948a169
FS
35grep -E "Inserted module .*dummy" /tmp/out.log
36
37# Implicit config file
3d5c6ece
DDM
38modprobe -v --all --remove dummy
39printf "dummy" >"$CONFIG_FILE"
9948a169 40"$MODULES_LOAD_BIN" |& tee /tmp/out.log
9948a169
FS
41grep -E "Inserted module .*dummy" /tmp/out.log
42
43# Valid & invalid data mixed together
3d5c6ece 44modprobe -v --all --remove dummy
9948a169
FS
45cat >"$CONFIG_FILE" <<EOF
46
3d5c6ece
DDM
47dummy
48dummy
49dummy
50 dummy
9948a169
FS
51dummy
52 \\n\n\n\\\\\\
3d5c6ece
DDM
53
54dumm!@@123##2455
9948a169
FS
55# This is a comment
56$(printf "%.0sx" {0..4096})
57dummy
3d5c6ece 58dummy
9948a169
FS
59foo-bar-baz
601
61"
62'
63EOF
64"$MODULES_LOAD_BIN" |& tee /tmp/out.log
9948a169
FS
65grep -E "^Inserted module .*dummy" /tmp/out.log
66grep -E "^Failed to find module .*foo-bar-baz" /tmp/out.log
67(! grep -E "This is a comment" /tmp/out.log)
68# Each module should be loaded only once, even if specified multiple times
3d5c6ece 69[[ "$(grep -Ec "^Inserted module" /tmp/out.log)" -eq 1 ]]
9948a169
FS
70[[ "$(grep -Ec "^Failed to find module" /tmp/out.log)" -eq 7 ]]
71
72# Command line arguments
3d5c6ece 73modprobe -v --all --remove dummy
9948a169
FS
74# Make sure we have no config files left over that might interfere with
75# following tests
76rm -fv "$CONFIG_FILE"
fe8d7d25 77[[ "$ORIG_MODULES_LOAD_CONFIG" == "$(systemd-analyze cat-config modules-load.d)" ]]
3d5c6ece 78CMDLINE="ro root= modules_load= modules_load=, / = modules_load=foo-bar-baz,dummy modules_load=dummy,dummy,dummy"
9948a169 79SYSTEMD_PROC_CMDLINE="$CMDLINE" "$MODULES_LOAD_BIN" |& tee /tmp/out.log
9948a169
FS
80grep -E "^Inserted module .*dummy" /tmp/out.log
81grep -E "^Failed to find module .*foo-bar-baz" /tmp/out.log
82# Each module should be loaded only once, even if specified multiple times
3d5c6ece 83[[ "$(grep -Ec "^Inserted module" /tmp/out.log)" -eq 1 ]]
9948a169
FS
84
85(! "$MODULES_LOAD_BIN" --nope)
86(! "$MODULES_LOAD_BIN" /foo/bar/baz)