summaryrefslogtreecommitdiffstats
path: root/test/units/TEST-04-JOURNAL.journal-corrupt.sh
diff options
context:
space:
mode:
Diffstat (limited to 'test/units/TEST-04-JOURNAL.journal-corrupt.sh')
-rwxr-xr-xtest/units/TEST-04-JOURNAL.journal-corrupt.sh38
1 files changed, 38 insertions, 0 deletions
diff --git a/test/units/TEST-04-JOURNAL.journal-corrupt.sh b/test/units/TEST-04-JOURNAL.journal-corrupt.sh
new file mode 100755
index 0000000..c25cf54
--- /dev/null
+++ b/test/units/TEST-04-JOURNAL.journal-corrupt.sh
@@ -0,0 +1,38 @@
+#!/usr/bin/env bash
+# SPDX-License-Identifier: LGPL-2.1-or-later
+set -eux
+set -o pipefail
+
+journalctl --rotate --vacuum-files=1
+# Nuke all archived journals, so we start with a clean slate
+rm -f "/var/log/journal/$(</etc/machine-id)"/system@*.journal
+rm -f "/var/log/journal/$(</etc/machine-id)"/user-*@*.journal
+journalctl --header | grep path
+
+# Make sure the user instance is active when we rotate journals
+loginctl enable-linger testuser
+systemd-run --unit user-sleep.service --user -M testuser@ sleep infinity
+
+for _ in {0..9}; do
+ journalctl --rotate
+ journalctl --sync
+ SYSTEMD_LOG_LEVEL=debug journalctl -n1 -q
+ (! journalctl -n0 -q |& grep corrupted)
+done
+
+systemctl stop --user -M testuser@ user-sleep.service
+loginctl disable-linger testuser
+
+journalctl --sync
+journalctl --rotate --vacuum-files=1
+# Nuke all archived journals, so we start with a clean slate
+rm -f "/var/log/journal/$(</etc/machine-id)"/system@*.journal
+rm -f "/var/log/journal/$(</etc/machine-id)/"user-*@*.journal
+journalctl --header | grep path
+
+for _ in {0..9}; do
+ journalctl --rotate --vacuum-files=1
+ journalctl --sync
+ SYSTEMD_LOG_LEVEL=debug journalctl -n1 -q
+ (! journalctl -n0 -q |& grep corrupted)
+done