]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test: add test for journals without RTC
authorLennart Poettering <lennart@poettering.net>
Wed, 8 Feb 2023 10:29:49 +0000 (11:29 +0100)
committerLennart Poettering <lennart@poettering.net>
Thu, 2 Mar 2023 09:18:24 +0000 (10:18 +0100)
This adds a test for checking we can safely order boot IDs via the
timestamp of their most recent known entry. It takes a set of journal
files (supplied by a user) and that are partially corrupted, and ensures
we get a clear, defined order of boot IDs out of it.

test/TEST-04-JOURNAL/test.sh
test/test-journals/1/system.journal.zst [new file with mode: 0644]
test/test-journals/1/system@0005ebbfd42fc981-39a8842ec948769a.journal~.zst [new file with mode: 0644]
test/test-journals/1/system@0005ebbfd4346b9f-43185b46162d9fa5.journal~.zst [new file with mode: 0644]
test/test-journals/1/system@0005ebbfd4385848-2e5dff5354ab9bcf.journal~.zst [new file with mode: 0644]
test/test-journals/1/user-1000.journal.zst [new file with mode: 0644]
test/test-journals/1/user-1000@0005ebbfd660bcbe-dbef2eee11f4b575.journal~.zst [new file with mode: 0644]
test/test-journals/1/user-1000@0005ebbfe89faec4-a5e890e7b00bedd1.journal~.zst [new file with mode: 0644]
test/units/testsuite-04.sh

index 0a3bfb545c14f53c14a3299f264f4e45f6d9a7dd..507dace51492e1a464ca7cf0c1dc35c76a142182 100755 (executable)
@@ -7,4 +7,13 @@ TEST_DESCRIPTION="Journal-related tests"
 # shellcheck source=test/test-functions
 . "${TEST_BASE_DIR:?}/test-functions"
 
+test_append_files() {
+    local workspace="${1:?}"
+
+    mkdir -p "$workspace/test-journals/"
+    cp -av "${TEST_BASE_DIR:?}/test-journals/"* "$workspace/test-journals/"
+
+    inst_binary unzstd
+}
+
 do_test "$@"
diff --git a/test/test-journals/1/system.journal.zst b/test/test-journals/1/system.journal.zst
new file mode 100644 (file)
index 0000000..35636c2
Binary files /dev/null and b/test/test-journals/1/system.journal.zst differ
diff --git a/test/test-journals/1/system@0005ebbfd42fc981-39a8842ec948769a.journal~.zst b/test/test-journals/1/system@0005ebbfd42fc981-39a8842ec948769a.journal~.zst
new file mode 100644 (file)
index 0000000..69be13e
Binary files /dev/null and b/test/test-journals/1/system@0005ebbfd42fc981-39a8842ec948769a.journal~.zst differ
diff --git a/test/test-journals/1/system@0005ebbfd4346b9f-43185b46162d9fa5.journal~.zst b/test/test-journals/1/system@0005ebbfd4346b9f-43185b46162d9fa5.journal~.zst
new file mode 100644 (file)
index 0000000..961b930
Binary files /dev/null and b/test/test-journals/1/system@0005ebbfd4346b9f-43185b46162d9fa5.journal~.zst differ
diff --git a/test/test-journals/1/system@0005ebbfd4385848-2e5dff5354ab9bcf.journal~.zst b/test/test-journals/1/system@0005ebbfd4385848-2e5dff5354ab9bcf.journal~.zst
new file mode 100644 (file)
index 0000000..ff692c3
Binary files /dev/null and b/test/test-journals/1/system@0005ebbfd4385848-2e5dff5354ab9bcf.journal~.zst differ
diff --git a/test/test-journals/1/user-1000.journal.zst b/test/test-journals/1/user-1000.journal.zst
new file mode 100644 (file)
index 0000000..3b462e5
Binary files /dev/null and b/test/test-journals/1/user-1000.journal.zst differ
diff --git a/test/test-journals/1/user-1000@0005ebbfd660bcbe-dbef2eee11f4b575.journal~.zst b/test/test-journals/1/user-1000@0005ebbfd660bcbe-dbef2eee11f4b575.journal~.zst
new file mode 100644 (file)
index 0000000..8e85612
Binary files /dev/null and b/test/test-journals/1/user-1000@0005ebbfd660bcbe-dbef2eee11f4b575.journal~.zst differ
diff --git a/test/test-journals/1/user-1000@0005ebbfe89faec4-a5e890e7b00bedd1.journal~.zst b/test/test-journals/1/user-1000@0005ebbfe89faec4-a5e890e7b00bedd1.journal~.zst
new file mode 100644 (file)
index 0000000..1318bd6
Binary files /dev/null and b/test/test-journals/1/user-1000@0005ebbfe89faec4-a5e890e7b00bedd1.journal~.zst differ
index 3bf7577a0e92460b25adde884e06de5a4ec65b61..3f3d8bc9c89cdf3de5af57f709b725236bc5ebad 100755 (executable)
@@ -275,4 +275,19 @@ journalctl --sync
 SEQNUM2=$(journalctl -o export -n 1 | grep -Ea "^__SEQNUM=" | cut -d= -f2)
 test "$SEQNUM2" -gt "$SEQNUM1"
 
+JTMP="/var/tmp/jtmp-$RANDOM"
+mkdir "$JTMP"
+
+( cd /test-journals/1 && for f in *.zst ; do unzstd < "$f" > "$JTMP/${f%.zst}" ; done )
+
+journalctl --directory="$JTMP" --list-boots --output=json > /tmp/lb1
+
+diff -u /tmp/lb1 - <<'EOF'
+[{"index":-3,"boot_id":"5ea5fc4f82a14186b5332a788ef9435e","first_entry":1666569600994371,"last_entry":1666584266223608},{"index":-2,"boot_id":"bea6864f21ad4c9594c04a99d89948b0","first_entry":1666584266731785,"last_entry":1666584347230411},{"index":-1,"boot_id":"4c708e1fd0744336be16f3931aa861fb","first_entry":1666584348378271,"last_entry":1666584354649355},{"index":0,"boot_id":"35e8501129134edd9df5267c49f744a4","first_entry":1666584356661527,"last_entry":1666584438086856}]
+EOF
+
+rm -rf "$JTMP"
+
+rm /tmp/lb1
+
 touch /testok