tests: Work around systemd regression for boot id parsing
authorColin Walters <walters@verbum.org>
Thu, 9 Nov 2023 19:08:41 +0000 (14:08 -0500)
committerColin Walters <walters@verbum.org>
Thu, 9 Nov 2023 20:10:33 +0000 (15:10 -0500)
cc https://github.com/systemd/systemd/issues/29275

tests/kolainst/destructive/boot-automount.sh
tests/kolainst/destructive/staged-delay.sh
tests/kolainst/destructive/staged-deploy.sh

index d6d1732e7cf539b89c423df59830e6f9a8c148f1..17e44acaed6cd178914b7608c480bdb833851b07 100755 (executable)
@@ -60,7 +60,8 @@ EOF
     # Check that the finalize and hold services succeeded in the
     # previous boot. Dump them to the test log to help debugging.
     prepare_tmpdir
-    journalctl -b -1 -o short-monotonic \
+    prev_bootid=$(journalctl --list-boots -o json |jq -r '.[] | select(.index == -1) | .boot_id')
+    journalctl -b "${prev_bootid}" -o short-monotonic \
         -u ostree-finalize-staged.service \
         -u ostree-finalize-staged-hold.service \
         -u boot.mount \
@@ -72,10 +73,11 @@ EOF
 
     # Check that the hold service remained active and kept /boot mounted until
     # the finalize service completed.
-    finalize_stopped=$(journalctl -b -1 -o json -g Stopped -u ostree-finalize-staged.service | tail -n1 | jq -r .__MONOTONIC_TIMESTAMP)
-    hold_stopping=$(journalctl -b -1 -o json -g Stopping -u ostree-finalize-staged-hold.service | tail -n1 | jq -r .__MONOTONIC_TIMESTAMP)
-    hold_stopped=$(journalctl -b -1 -o json -g Stopped -u ostree-finalize-staged-hold.service | tail -n1 | jq -r .__MONOTONIC_TIMESTAMP)
-    boot_unmounting=$(journalctl -b -1 -o json -g Unmounting -u boot.mount | tail -n1 | jq -r .__MONOTONIC_TIMESTAMP)
+    prev_bootid=$(journalctl --list-boots -o json |jq -r '.[] | select(.index == -1) | .boot_id')
+    finalize_stopped=$(journalctl -b $prev_bootid -o json -g Stopped -u ostree-finalize-staged.service | tail -n1 | jq -r .__MONOTONIC_TIMESTAMP)
+    hold_stopping=$(journalctl -b $prev_bootid -o json -g Stopping -u ostree-finalize-staged-hold.service | tail -n1 | jq -r .__MONOTONIC_TIMESTAMP)
+    hold_stopped=$(journalctl -b $prev_bootid -o json -g Stopped -u ostree-finalize-staged-hold.service | tail -n1 | jq -r .__MONOTONIC_TIMESTAMP)
+    boot_unmounting=$(journalctl -b $prev_bootid -o json -g Unmounting -u boot.mount | tail -n1 | jq -r .__MONOTONIC_TIMESTAMP)
     test "${finalize_stopped}" -lt "${hold_stopping}"
     test "${hold_stopped}" -lt "${boot_unmounting}"
     ;;
index 699c35509f28d55202bcdfe3dd5c75feefa7b781..12cf9d01253a0afe86ebffc045fdcd6d046ebc89 100755 (executable)
@@ -24,7 +24,8 @@ rpm-ostree kargs --append=somedummykarg=1
 ;;
 
 "2")
-journalctl -b -1 -u ostree-finalize-staged > logs.txt
+prev_bootid=$(journalctl --list-boots -o json |jq -r '.[] | select(.index == -1) | .boot_id')
+journalctl -b $prev_bootid -u ostree-finalize-staged > logs.txt
 assert_file_has_content_literal logs.txt 'ostree-finalize-staged found /boot/loader/entries'
 # older systemd doesn't output the success message
 if systemctl --version | head -1 | grep -qF -e 'systemd 239'; then
index 01c2b48916a45afe070159a8b523a69c843d1f64..ff6f8d7a8dc2374b5c024970a5cc7d413fe53258 100755 (executable)
@@ -72,7 +72,8 @@ EOF
     # Check that deploy-staged service worked
     rpm-ostree status
     # Assert that the previous boot had a journal entry for it
-    journalctl -b "-1" -u ostree-finalize-staged.service > svc.txt
+    prev_bootid=$(journalctl --list-boots -o json |jq -r '.[] | select(.index == -1) | .boot_id')
+    journalctl -b $prev_bootid -u ostree-finalize-staged.service > svc.txt
     assert_file_has_content svc.txt 'Bootloader updated; bootconfig swap: yes;.*deployment count change: 1'
     # Also validate ignoring socket and fifo
     assert_file_has_content svc.txt 'Ignoring.*during /etc merge:.*sock-to-ignore'