]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
TEST-04-JOURNAL: sync journal in test script, and find journal with invocation ID 37039/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 7 Apr 2025 21:56:40 +0000 (06:56 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 7 Apr 2025 21:56:52 +0000 (06:56 +0900)
Hopefully improve the stability of the test.

test/integration-tests/TEST-04-JOURNAL/TEST-04-JOURNAL.units/logs-filtering.service
test/units/TEST-04-JOURNAL.LogFilterPatterns.sh
test/units/delegated_cgroup_filtering_payload.sh

index 4c430058cf171d1521fe4da81d4b7c157a6a051a..6eca47d1fa41282e76aaaf8ba0ba25db22aa8476 100644 (file)
@@ -3,9 +3,8 @@ Description=Log filtering unit
 
 [Service]
 Type=oneshot
-ExecStart=sh -c 'echo "Logging from the service, and ~more~ foo bar"'
 # If the service finishes extremely fast, journald cannot find the source of the
 # stream. Hence, we need to call 'journalctl --sync' before service finishes.
-ExecStart=journalctl --sync
+ExecStart=sh -c 'echo "Logging from the service, and ~more~ foo bar"; journalctl --sync'
 SyslogLevel=notice
 LogLevelMax=info
index e80e78e50022ca59fb55b2f06e222b37ba7018e0..79482d60780c770effa0db68116e44eff6c16eea 100755 (executable)
@@ -11,6 +11,10 @@ if ! cgroupfs_supports_user_xattrs; then
     exit 0
 fi
 
+# Unfortunately, journalctl -I/--invocation= is unstable when debug logging is enabled on service manager.
+SAVED_LOG_LEVEL=$(systemctl log-level)
+systemctl log-level info
+
 NEEDS_RELOAD=
 
 add_logs_filtering_override() {
@@ -25,17 +29,14 @@ add_logs_filtering_override() {
 
 run_service_and_fetch_logs() {
     local unit="${1:?}"
-    local start
 
     if [[ -n "$NEEDS_RELOAD" ]]; then
         systemctl daemon-reload
         NEEDS_RELOAD=
     fi
 
-    journalctl --sync
-    start="$(date '+%Y-%m-%d %T.%6N')"
     systemctl start "$unit"
-    journalctl -q -u "$unit" -S "$start" -p notice
+    journalctl -q -u "$unit" -I -p notice
 }
 
 at_exit() {
@@ -91,3 +92,5 @@ add_logs_filtering_override "delegated-cgroup-filtering.service" "00-allow-all"
 
 add_logs_filtering_override "delegated-cgroup-filtering.service" "01-discard-hello" "~hello"
 [[ -z $(run_service_and_fetch_logs "delegated-cgroup-filtering.service") ]]
+
+systemctl log-level "$SAVED_LOG_LEVEL"
index 1181fbb9108282aa4df1b78009d83d77e9906bbd..6084ae8dcb5878804bcd8d9f03a532c5f85019b4 100755 (executable)
@@ -6,4 +6,7 @@ mkdir /sys/fs/cgroup/system.slice/delegated-cgroup-filtering.service/the_child
 
 echo "parent_process: hello, world!"
 echo "parent_process: hello, people!"
-sleep 2
+
+# If the service finishes extremely fast, journald cannot find the source of the
+# stream. Hence, we need to call 'journalctl --sync' before service finishes.
+journalctl --sync