]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test: Add option to save in progress test journals to /tmp
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Fri, 10 Jan 2025 13:27:33 +0000 (14:27 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Fri, 10 Jan 2025 15:13:58 +0000 (16:13 +0100)
The journal isn't the best at being fast, especially when writing
to disk and not to memory, which can cause integration tests to
grind to a halt on beefy systems due to all the systemd-journal-remote
instances not being able to write journal entries to disk fast enough.

Let's introduce an option to allow writing in progress test journals
to use /tmp which can be used on beefy systems with lots of memory to
speed things up.

test/README.md
test/integration-test-wrapper.py

index f880a984f1ae0805a7ac01085ef8c0554b44ca1a..6e625bf2b3a692827206a3da3bb7358fba24b67d 100644 (file)
@@ -151,6 +151,10 @@ that make use of `run_testcases`.
 
 `TEST_SKIP_TESTCASE=testcase`: takes a space separated list of testcases to skip.
 
+`TEST_JOURNAL_USE_TMP=1`: Write test journal to `/tmp` while the test is in
+progress and only move the journal to its final location in the build directory
+(`$BUILD_DIR/test/journal`) when the test is finished.
+
 ### SELinux AVCs
 
 To have `TEST-06-SELINUX` check for SELinux denials, write the following to
index d9d92fcba3b0e7a148c6f1a56dd4921b50a4a4bf..1c28cf3776e8073a9d158d3419532568fa2c9a3f 100755 (executable)
@@ -10,6 +10,7 @@ import json
 import os
 import re
 import shlex
+import shutil
 import subprocess
 import sys
 import tempfile
@@ -441,7 +442,11 @@ def main() -> None:
             """
         )
 
-    journal_file = (args.meson_build_dir / (f'test/journal/{name}.journal')).absolute()
+    if os.getenv('TEST_JOURNAL_USE_TMP', '0') == '1':
+        journal_file = Path(f'/tmp/systemd-integration-tests/journal/{name.journal}')
+    else:
+        journal_file = (args.meson_build_dir / f'test/journal/{name}.journal').absolute()
+
     journal_file.unlink(missing_ok=True)
 
     if not sys.stderr.isatty():
@@ -551,6 +556,11 @@ def main() -> None:
     ):
         journal_file.unlink(missing_ok=True)
 
+    if os.getenv('TEST_JOURNAL_USE_TMP', '0') == '1':
+        dst = args.meson_build_dir / f'test/journal/{name}.journal'
+        dst.parent.mkdir(parents=True, exist_ok=True)
+        shutil.move(journal_file, dst)
+
     if shell or (result.returncode in (args.exit_code, 77) and not coredumps and not sanitizer):
         exit(0 if shell or result.returncode == args.exit_code else 77)