summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorFrantisek Sumsal <frantisek@sumsal.cz>2023-05-03 18:24:17 +0200
committerFrantisek Sumsal <frantisek@sumsal.cz>2023-05-03 18:32:00 +0200
commitb003e2c7a6a0b7be8d4f949d285e6b810c0768a8 (patch)
treef0072cf886ce5b5d3d2c8179eb6740a6576e8e7f /test
parent8077d99fd2a85ee005d6dbb371ebb04092bd65bd (diff)
downloadsystemd-b003e2c7a6a0b7be8d4f949d285e6b810c0768a8.tar.gz
test: clean up the test script even further
Most notably: - use `systemd-id128 new` instead of `journalctl --new-id128` - move all temporary files to /tmp - wrap repetitive checks in a function
Diffstat (limited to 'test')
-rw-r--r--test/testsuite-04.units/forever-print-hola.service2
-rwxr-xr-xtest/units/testsuite-04.sh154
2 files changed, 66 insertions, 90 deletions
diff --git a/test/testsuite-04.units/forever-print-hola.service b/test/testsuite-04.units/forever-print-hola.service
index c86b131519..9273d6d3fb 100644
--- a/test/testsuite-04.units/forever-print-hola.service
+++ b/test/testsuite-04.units/forever-print-hola.service
@@ -4,4 +4,4 @@ Description=ForeverPrintHola service
[Service]
Type=exec
-ExecStart=sh -x -c 'while :; do printf "Hola\n" || touch /i-lose-my-logs; sleep 1; done'
+ExecStart=sh -x -c 'while :; do printf "Hola\n" || touch /tmp/i-lose-my-logs; sleep 1; done'
diff --git a/test/units/testsuite-04.sh b/test/units/testsuite-04.sh
index 52a3f7776b..7c1565bf15 100755
--- a/test/units/testsuite-04.sh
+++ b/test/units/testsuite-04.sh
@@ -20,75 +20,50 @@ journalctl --rotate --vacuum-size=8M
systemctl restart systemd-journald
# Test stdout stream
-
+write_and_match() {
+ local input="${1:?}"
+ local expected="${2?}"
+ local id
+ shift 2
+
+ id="$(systemd-id128 new)"
+ echo -ne "$input" | systemd-cat -t "$id" "$@"
+ journalctl --sync
+ diff <(echo -ne "$expected") <(journalctl -b -o cat -t "$id")
+}
# Skip empty lines
-ID=$(journalctl --new-id128 | sed -n 2p)
-: >/expected
-printf $'\n\n\n' | systemd-cat -t "$ID" --level-prefix false
-journalctl --sync
-journalctl -b -o cat -t "$ID" >/output
-cmp /expected /output
-
-ID=$(journalctl --new-id128 | sed -n 2p)
-: >/expected
-printf $'<5>\n<6>\n<7>\n' | systemd-cat -t "$ID" --level-prefix true
-journalctl --sync
-journalctl -b -o cat -t "$ID" >/output
-cmp /expected /output
-
+write_and_match "\n\n\n" "" --level-prefix false
+write_and_match "<5>\n<6>\n<7>\n" "" --level-prefix true
# Remove trailing spaces
-ID=$(journalctl --new-id128 | sed -n 2p)
-printf "Trailing spaces\n">/expected
-printf $'<5>Trailing spaces \t \n' | systemd-cat -t "$ID" --level-prefix true
-journalctl --sync
-journalctl -b -o cat -t "$ID" >/output
-cmp /expected /output
-
-ID=$(journalctl --new-id128 | sed -n 2p)
-printf "Trailing spaces\n">/expected
-printf $'Trailing spaces \t \n' | systemd-cat -t "$ID" --level-prefix false
-journalctl --sync
-journalctl -b -o cat -t "$ID" >/output
-cmp /expected /output
-
+write_and_match "Trailing spaces \t \n" "Trailing spaces\n" --level-prefix false
+write_and_match "<5>Trailing spaces \t \n" "Trailing spaces\n" --level-prefix true
# Don't remove leading spaces
-ID=$(journalctl --new-id128 | sed -n 2p)
-printf $' \t Leading spaces\n'>/expected
-printf $'<5> \t Leading spaces\n' | systemd-cat -t "$ID" --level-prefix true
-journalctl --sync
-journalctl -b -o cat -t "$ID" >/output
-cmp /expected /output
-
-ID=$(journalctl --new-id128 | sed -n 2p)
-printf $' \t Leading spaces\n'>/expected
-printf $' \t Leading spaces\n' | systemd-cat -t "$ID" --level-prefix false
-journalctl --sync
-journalctl -b -o cat -t "$ID" >/output
-cmp /expected /output
+write_and_match " \t Leading spaces\n" " \t Leading spaces\n" --level-prefix false
+write_and_match "<5> \t Leading spaces\n" " \t Leading spaces\n" --level-prefix true
# --output-fields restricts output
-ID=$(journalctl --new-id128 | sed -n 2p)
-printf $'foo' | systemd-cat -t "$ID" --level-prefix false
+ID="$(systemd-id128 new)"
+echo -ne "foo" | systemd-cat -t "$ID" --level-prefix false
journalctl --sync
-journalctl -b -o export --output-fields=MESSAGE,FOO --output-fields=PRIORITY,MESSAGE -t "$ID" >/output
-[[ $(grep -c . /output) -eq 8 ]]
-grep -q '^__CURSOR=' /output
-grep -q '^MESSAGE=foo$' /output
-grep -q '^PRIORITY=6$' /output
-(! grep '^FOO=' /output)
-(! grep '^SYSLOG_FACILITY=' /output)
+journalctl -b -o export --output-fields=MESSAGE,FOO --output-fields=PRIORITY,MESSAGE -t "$ID" >/tmp/output
+[[ $(wc -l </tmp/output) -eq 9 ]]
+grep -q '^__CURSOR=' /tmp/output
+grep -q '^MESSAGE=foo$' /tmp/output
+grep -q '^PRIORITY=6$' /tmp/output
+(! grep '^FOO=' /tmp/output)
+(! grep '^SYSLOG_FACILITY=' /tmp/output)
# '-b all' negates earlier use of -b (-b and -m are otherwise exclusive)
journalctl -b -1 -b all -m >/dev/null
# -b always behaves like -b0
-journalctl -q -b-1 -b0 | head -1 >/expected
-journalctl -q -b-1 -b | head -1 >/output
-cmp /expected /output
+journalctl -q -b-1 -b0 | head -1 >/tmp/expected
+journalctl -q -b-1 -b | head -1 >/tmp/output
+diff /tmp/expected /tmp/output
# ... even when another option follows (both of these should fail due to -m)
-{ journalctl -ball -b0 -m 2>&1 || :; } | head -1 >/expected
-{ journalctl -ball -b -m 2>&1 || :; } | head -1 >/output
-cmp /expected /output
+{ journalctl -ball -b0 -m 2>&1 || :; } | head -1 >/tmp/expected
+{ journalctl -ball -b -m 2>&1 || :; } | head -1 >/tmp/output
+diff /tmp/expected /tmp/output
# https://github.com/systemd/systemd/issues/13708
ID=$(systemd-id128 new)
@@ -98,18 +73,18 @@ wait $PID
journalctl --sync
# We can drop this grep when https://github.com/systemd/systemd/issues/13937
# has a fix.
-journalctl -b -o export -t "$ID" --output-fields=_PID | grep '^_PID=' >/output
-[[ $(grep -c . /output) -eq 2 ]]
-grep -q "^_PID=$PID" /output
-grep -vq "^_PID=$PID" /output
+journalctl -b -o export -t "$ID" --output-fields=_PID | grep '^_PID=' >/tmp/output
+[[ $(wc -l </tmp/output) -eq 2 ]]
+grep -q "^_PID=$PID" /tmp/output
+grep -vq "^_PID=$PID" /tmp/output
# https://github.com/systemd/systemd/issues/15654
-ID=$(journalctl --new-id128 | sed -n 2p)
-printf "This will\nusually fail\nand be truncated\n">/expected
+ID=$(systemd-id128 new)
+printf "This will\nusually fail\nand be truncated\n" >/tmp/expected
systemd-cat -t "$ID" /bin/sh -c 'env echo -n "This will";echo;env echo -n "usually fail";echo;env echo -n "and be truncated";echo;'
journalctl --sync
-journalctl -b -o cat -t "$ID" >/output
-cmp /expected /output
+journalctl -b -o cat -t "$ID" >/tmp/output
+diff /tmp/expected /tmp/output
[[ $(journalctl -b -o cat -t "$ID" --output-fields=_TRANSPORT | grep -Pc "^stdout$") -eq 3 ]]
[[ $(journalctl -b -o cat -t "$ID" --output-fields=_LINE_BREAK | grep -Pc "^pid-change$") -eq 3 ]]
[[ $(journalctl -b -o cat -t "$ID" --output-fields=_PID | sort -u | grep -c "^.*$") -eq 3 ]]
@@ -167,53 +142,55 @@ sleep 3
systemctl restart systemd-journald
sleep 3
systemctl stop forever-print-hola
-[[ ! -f "/i-lose-my-logs" ]]
+[[ ! -f "/tmp/i-lose-my-logs" ]]
# https://github.com/systemd/systemd/issues/4408
-rm -f /i-lose-my-logs
+rm -f /tmp/i-lose-my-logs
systemctl start forever-print-hola
sleep 3
systemctl kill --signal=SIGKILL systemd-journald
sleep 3
-[[ ! -f "/i-lose-my-logs" ]]
+[[ ! -f "/tmp/i-lose-my-logs" ]]
systemctl stop forever-print-hola
# https://github.com/systemd/systemd/issues/15528
journalctl --follow --file=/var/log/journal/*/* | head -n1 || [[ $? -eq 1 ]]
-function add_logs_filtering_override() {
- UNIT=${1:?}
- OVERRIDE_NAME=${2:?}
- LOG_FILTER=${3:-""}
+add_logs_filtering_override() {
+ local unit="${1:?}"
+ local override_name="${2:?}"
+ local log_filter="${3:-}"
- mkdir -p /etc/systemd/system/"$UNIT".d/
- echo "[Service]" >/etc/systemd/system/"$UNIT".d/"${OVERRIDE_NAME}".conf
- echo "LogFilterPatterns=$LOG_FILTER" >>/etc/systemd/system/"$UNIT".d/"${OVERRIDE_NAME}".conf
+ mkdir -p "/run/systemd/system/$unit.d/"
+ echo -ne "[Service]\nLogFilterPatterns=$log_filter" >"/run/systemd/system/$unit.d/$override_name.conf"
systemctl daemon-reload
}
-function run_service_and_fetch_logs() {
- UNIT=$1
+run_service_and_fetch_logs() {
+ local unit="${1:?}"
+ local start end
- START=$(date '+%Y-%m-%d %T.%6N')
- systemctl restart "$UNIT"
+ start="$(date '+%Y-%m-%d %T.%6N')"
+ systemctl restart "$unit"
sleep .5
journalctl --sync
- END=$(date '+%Y-%m-%d %T.%6N')
+ end="$(date '+%Y-%m-%d %T.%6N')"
- journalctl -q -u "$UNIT" -S "$START" -U "$END" -p notice
- systemctl stop "$UNIT"
+ journalctl -q -u "$unit" -S "$start" -U "$end" -p notice
+ systemctl stop "$unit"
}
-function is_xattr_supported() {
- START=$(date '+%Y-%m-%d %T.%6N')
+is_xattr_supported() {
+ local start end
+
+ start="$(date '+%Y-%m-%d %T.%6N')"
systemd-run --unit text_xattr --property LogFilterPatterns=log sh -c "sleep .5"
sleep .5
journalctl --sync
- END=$(date '+%Y-%m-%d %T.%6N')
+ end="$(date '+%Y-%m-%d %T.%6N')"
systemctl stop text_xattr
- ! journalctl -q -u "text_xattr" -S "$START" -U "$END" --grep "Failed to set 'user.journald_log_filter_patterns' xattr.*not supported$"
+ ! journalctl -q -u "text_xattr" -S "$start" -U "$end" --grep "Failed to set 'user.journald_log_filter_patterns' xattr.*not supported$"
}
if is_xattr_supported; then
@@ -251,7 +228,7 @@ if is_xattr_supported; then
[[ -z $(run_service_and_fetch_logs "logs-filtering.service") ]]
# Allow a pattern starting with a tilde
- add_logs_filtering_override "logs-filtering.service" "10-allow-with-escape-char" "\x7emore~"
+ add_logs_filtering_override "logs-filtering.service" "10-allow-with-escape-char" "\\\\x7emore~"
[[ -n $(run_service_and_fetch_logs "logs-filtering.service") ]]
add_logs_filtering_override "delegated-cgroup-filtering.service" "00-allow-all" ".*"
@@ -260,8 +237,7 @@ if is_xattr_supported; then
add_logs_filtering_override "delegated-cgroup-filtering.service" "01-discard-hello" "~hello"
[[ -z $(run_service_and_fetch_logs "delegated-cgroup-filtering.service") ]]
- rm -rf /etc/systemd/system/logs-filtering.service.d
- rm -rf /etc/systemd/system/delegated-cgroup-filtering.service.d
+ rm -rf /run/systemd/system/{logs-filtering,delegated-cgroup-filtering}.service.d
fi
# Check that the seqnum field at least superficially works