From ce631ae3d9847606f7ca70ddba1cb2d8fc3d6441 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 4 Sep 2025 09:15:01 +0900 Subject: [PATCH 1/7] bootctl: add missing varlink IDL entries Follow-up for f2751d757f76f6e50e452431815370a3a45fdfc0. --- src/shared/varlink-io.systemd.BootControl.c | 28 ++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/shared/varlink-io.systemd.BootControl.c b/src/shared/varlink-io.systemd.BootControl.c index 364fa8470e..eeaef291e4 100644 --- a/src/shared/varlink-io.systemd.BootControl.c +++ b/src/shared/varlink-io.systemd.BootControl.c @@ -13,9 +13,27 @@ static SD_VARLINK_DEFINE_ENUM_TYPE( SD_VARLINK_FIELD_COMMENT("Automatically generated entries"), SD_VARLINK_DEFINE_ENUM_VALUE(auto)); +static SD_VARLINK_DEFINE_ENUM_TYPE( + BootEntrySource, + SD_VARLINK_FIELD_COMMENT("Boot entry found in EFI system partition (ESP)"), + SD_VARLINK_DEFINE_ENUM_VALUE(esp), + SD_VARLINK_FIELD_COMMENT("Boot entry found in XBOOTLDR partition"), + SD_VARLINK_DEFINE_ENUM_VALUE(xbootldr)); + +static SD_VARLINK_DEFINE_STRUCT_TYPE( + BootEntryAddon, + SD_VARLINK_FIELD_COMMENT("The location of the global addon."), + SD_VARLINK_DEFINE_FIELD(globalAddon, SD_VARLINK_STRING, SD_VARLINK_NULLABLE), + SD_VARLINK_FIELD_COMMENT("The location of the local addon."), + SD_VARLINK_DEFINE_FIELD(localAddon, SD_VARLINK_STRING, SD_VARLINK_NULLABLE), + SD_VARLINK_FIELD_COMMENT("The command line options by the addon."), + SD_VARLINK_DEFINE_FIELD(options, SD_VARLINK_STRING, 0)); + static SD_VARLINK_DEFINE_STRUCT_TYPE( BootEntry, SD_VARLINK_DEFINE_FIELD_BY_TYPE(type, BootEntryType, 0), + SD_VARLINK_FIELD_COMMENT("The source of the entry"), + SD_VARLINK_DEFINE_FIELD_BY_TYPE(source, BootEntrySource, 0), SD_VARLINK_FIELD_COMMENT("The string identifier of the entry"), SD_VARLINK_DEFINE_FIELD(id, SD_VARLINK_STRING, SD_VARLINK_NULLABLE), SD_VARLINK_DEFINE_FIELD(path, SD_VARLINK_STRING, SD_VARLINK_NULLABLE), @@ -41,7 +59,11 @@ static SD_VARLINK_DEFINE_STRUCT_TYPE( SD_VARLINK_FIELD_COMMENT("Indicates whether this entry is the default entry."), SD_VARLINK_DEFINE_FIELD(isDefault, SD_VARLINK_BOOL, SD_VARLINK_NULLABLE), SD_VARLINK_FIELD_COMMENT("Indicates whether this entry has been booted."), - SD_VARLINK_DEFINE_FIELD(isSelected, SD_VARLINK_BOOL, SD_VARLINK_NULLABLE)); + SD_VARLINK_DEFINE_FIELD(isSelected, SD_VARLINK_BOOL, SD_VARLINK_NULLABLE), + SD_VARLINK_FIELD_COMMENT("Addon images of the entry."), + SD_VARLINK_DEFINE_FIELD_BY_TYPE(addons, BootEntryAddon, SD_VARLINK_NULLABLE|SD_VARLINK_ARRAY), + SD_VARLINK_FIELD_COMMENT("Command line options of the entry."), + SD_VARLINK_DEFINE_FIELD(cmdline, SD_VARLINK_STRING, SD_VARLINK_NULLABLE)); static SD_VARLINK_DEFINE_METHOD_FULL( ListBootEntries, @@ -71,6 +93,10 @@ SD_VARLINK_DEFINE_INTERFACE( SD_VARLINK_INTERFACE_COMMENT("Boot Loader control APIs"), SD_VARLINK_SYMBOL_COMMENT("The type of a boot entry"), &vl_type_BootEntryType, + SD_VARLINK_SYMBOL_COMMENT("The source of a boot entry"), + &vl_type_BootEntrySource, + SD_VARLINK_SYMBOL_COMMENT("A structure encapsulating an addon of a boot entry"), + &vl_type_BootEntryAddon, SD_VARLINK_SYMBOL_COMMENT("A structure encapsulating a boot entry"), &vl_type_BootEntry, SD_VARLINK_SYMBOL_COMMENT("Enumerates boot entries. Method call must be called with 'more' flag set. Each response returns one entry. If no entries are defined returns the NoSuchBootEntry error."), From 83cfc45dfb6c4f138bcafe9dcd2e439c9a3280cc Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 4 Sep 2025 08:09:16 +0900 Subject: [PATCH 2/7] hostname: add missing varlink IDL fields Follow-up for bc60034f43ad47a9f5f60d572cf47f062d0dd21f. --- src/shared/varlink-io.systemd.Hostname.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/shared/varlink-io.systemd.Hostname.c b/src/shared/varlink-io.systemd.Hostname.c index 556a7920d4..fb265b7511 100644 --- a/src/shared/varlink-io.systemd.Hostname.c +++ b/src/shared/varlink-io.systemd.Hostname.c @@ -13,6 +13,8 @@ static SD_VARLINK_DEFINE_METHOD( SD_VARLINK_DEFINE_OUTPUT(HostnameSource, SD_VARLINK_STRING, 0), SD_VARLINK_DEFINE_OUTPUT(IconName, SD_VARLINK_STRING, SD_VARLINK_NULLABLE), SD_VARLINK_DEFINE_OUTPUT(Chassis, SD_VARLINK_STRING, SD_VARLINK_NULLABLE), + SD_VARLINK_FIELD_COMMENT("An unique identifier of the system chassis."), + SD_VARLINK_DEFINE_OUTPUT(ChassisAssetTag, SD_VARLINK_STRING, SD_VARLINK_NULLABLE), SD_VARLINK_DEFINE_OUTPUT(Deployment, SD_VARLINK_STRING, SD_VARLINK_NULLABLE), SD_VARLINK_DEFINE_OUTPUT(Location, SD_VARLINK_STRING, SD_VARLINK_NULLABLE), SD_VARLINK_DEFINE_OUTPUT(KernelName, SD_VARLINK_STRING, 0), @@ -23,6 +25,8 @@ static SD_VARLINK_DEFINE_METHOD( SD_VARLINK_DEFINE_OUTPUT(OperatingSystemHomeURL, SD_VARLINK_STRING, SD_VARLINK_NULLABLE), SD_VARLINK_DEFINE_OUTPUT(OperatingSystemSupportEnd, SD_VARLINK_INT, SD_VARLINK_NULLABLE), SD_VARLINK_DEFINE_OUTPUT(OperatingSystemReleaseData, SD_VARLINK_STRING, SD_VARLINK_NULLABLE|SD_VARLINK_ARRAY), + SD_VARLINK_DEFINE_OUTPUT(OperatingSystemImageID, SD_VARLINK_INT, SD_VARLINK_NULLABLE), + SD_VARLINK_DEFINE_OUTPUT(OperatingSystemImageVersion, SD_VARLINK_INT, SD_VARLINK_NULLABLE), SD_VARLINK_DEFINE_OUTPUT(MachineInformationData, SD_VARLINK_STRING, SD_VARLINK_NULLABLE|SD_VARLINK_ARRAY), SD_VARLINK_DEFINE_OUTPUT(HardwareVendor, SD_VARLINK_STRING, SD_VARLINK_NULLABLE), SD_VARLINK_DEFINE_OUTPUT(HardwareModel, SD_VARLINK_STRING, SD_VARLINK_NULLABLE), @@ -35,9 +39,7 @@ static SD_VARLINK_DEFINE_METHOD( SD_VARLINK_DEFINE_OUTPUT(MachineID, SD_VARLINK_STRING, 0), SD_VARLINK_DEFINE_OUTPUT(BootID, SD_VARLINK_STRING, 0), SD_VARLINK_DEFINE_OUTPUT(ProductUUID, SD_VARLINK_STRING, SD_VARLINK_NULLABLE), - SD_VARLINK_DEFINE_OUTPUT(VSockCID, SD_VARLINK_INT, SD_VARLINK_NULLABLE), - SD_VARLINK_FIELD_COMMENT("An unique identifier of the system chassis."), - SD_VARLINK_DEFINE_OUTPUT(ChassisAssetTag, SD_VARLINK_STRING, SD_VARLINK_NULLABLE)); + SD_VARLINK_DEFINE_OUTPUT(VSockCID, SD_VARLINK_INT, SD_VARLINK_NULLABLE)); SD_VARLINK_DEFINE_INTERFACE( io_systemd_Hostname, From f36f3744474d701fd8f215c010782f68bf4d4624 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 4 Sep 2025 18:49:21 +0900 Subject: [PATCH 3/7] core/varlink: do not send unrealized cgroups to oomd Follow-ups for 23ac08115af83e3a0a937fa207fc52511aba2ffa. Since the commit, the cgroup path is set only when it is realized. Fixes the following varlink IDL validation failure: ``` systemd-oomd[1687]: Varlink-IDL: Mandatory field 'path' is null or missing on object, refusing. ``` --- src/core/varlink.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/core/varlink.c b/src/core/varlink.c index 8c6b95e31d..22312a11f7 100644 --- a/src/core/varlink.c +++ b/src/core/varlink.c @@ -95,6 +95,10 @@ static int build_managed_oom_cgroups_json(Manager *m, sd_json_variant **ret) { if (!c) continue; + CGroupRuntime *crt = unit_get_cgroup_runtime(u); + if (!crt || !crt->cgroup_path) + continue; + FOREACH_ELEMENT(i, managed_oom_mode_properties) { _cleanup_(sd_json_variant_unrefp) sd_json_variant *e = NULL; From 2ce397125fe77220d881e0c57bf0c1e7803f9cf7 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 4 Sep 2025 18:38:38 +0900 Subject: [PATCH 4/7] core/varlink: do not call io.systemd.oom.ReportManagedOOMCGroups() with empty "cgroups" parameter Fixes the following varlink IDL validation error: ``` systemd-oomd[1687]: varlink-11-11: Parameters for method io.systemd.oom.ReportManagedOOMCGroups() didn't pass validation on field 'cgroups': No anode ``` --- src/core/varlink.c | 43 +++++++++++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/src/core/varlink.c b/src/core/varlink.c index 22312a11f7..17f5ac4fad 100644 --- a/src/core/varlink.c +++ b/src/core/varlink.c @@ -69,16 +69,18 @@ static int build_managed_oom_json_array_element(Unit *u, const char *property, s SD_JSON_BUILD_PAIR_CONDITION(use_duration, "duration", SD_JSON_BUILD_UNSIGNED(c->moom_mem_pressure_duration_usec))); } -static int build_managed_oom_cgroups_json(Manager *m, sd_json_variant **ret) { - _cleanup_(sd_json_variant_unrefp) sd_json_variant *v = NULL, *arr = NULL; +static int build_managed_oom_cgroups_json(Manager *m, bool allow_empty, sd_json_variant **ret) { + _cleanup_(sd_json_variant_unrefp) sd_json_variant *arr = NULL; int r; assert(m); assert(ret); - r = sd_json_build(&arr, SD_JSON_BUILD_EMPTY_ARRAY); - if (r < 0) - return r; + if (allow_empty) { + r = sd_json_build(&arr, SD_JSON_BUILD_EMPTY_ARRAY); + if (r < 0) + return r; + } for (UnitType t = 0; t < _UNIT_TYPE_MAX; t++) { @@ -119,12 +121,17 @@ static int build_managed_oom_cgroups_json(Manager *m, sd_json_variant **ret) { } } - r = sd_json_buildo(&v, SD_JSON_BUILD_PAIR("cgroups", SD_JSON_BUILD_VARIANT(arr))); + if (!arr) { + assert(!allow_empty); + *ret = NULL; + return 0; + } + + r = sd_json_buildo(ret, SD_JSON_BUILD_PAIR("cgroups", SD_JSON_BUILD_VARIANT(arr))); if (r < 0) return r; - *ret = TAKE_PTR(v); - return 0; + return 1; } static int manager_varlink_send_managed_oom_initial(Manager *m) { @@ -141,8 +148,8 @@ static int manager_varlink_send_managed_oom_initial(Manager *m) { assert(m->managed_oom_varlink); - r = build_managed_oom_cgroups_json(m, &v); - if (r < 0) + r = build_managed_oom_cgroups_json(m, /* allow_empty = */ false, &v); + if (r <= 0) return r; return sd_varlink_send(m->managed_oom_varlink, "io.systemd.oom.ReportManagedOOMCGroups", v); @@ -251,9 +258,11 @@ int manager_varlink_send_managed_oom_update(Unit *u) { if (!c) return 0; - r = sd_json_build(&arr, SD_JSON_BUILD_EMPTY_ARRAY); - if (r < 0) - return r; + if (MANAGER_IS_SYSTEM(u->manager)) { + r = sd_json_build(&arr, SD_JSON_BUILD_EMPTY_ARRAY); + if (r < 0) + return r; + } FOREACH_ELEMENT(i, managed_oom_mode_properties) { _cleanup_(sd_json_variant_unrefp) sd_json_variant *e = NULL; @@ -267,6 +276,12 @@ int manager_varlink_send_managed_oom_update(Unit *u) { return r; } + if (!arr) { + /* There is nothing updated. Skip calling method. */ + assert(!MANAGER_IS_SYSTEM(u->manager)); + return 0; + } + r = sd_json_buildo(&v, SD_JSON_BUILD_PAIR("cgroups", SD_JSON_BUILD_VARIANT(arr))); if (r < 0) return r; @@ -320,7 +335,7 @@ static int vl_method_subscribe_managed_oom_cgroups( _cleanup_(sd_json_variant_unrefp) sd_json_variant *v = NULL; - r = build_managed_oom_cgroups_json(m, &v); + r = build_managed_oom_cgroups_json(m, /* allow_empty = */ true, &v); if (r < 0) return r; From df25e4af162806e67fac88709413516a8182f634 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 4 Sep 2025 08:20:17 +0900 Subject: [PATCH 5/7] test: do not call GetUserRecord without "service" argument Otherwise, following debugging log will be saved and the checker for the varlink-idl log triggers failure: ``` systemd-userwork: processing[3110]: varlink-6-6: Parameters for method io.systemd.UserDatabase.GetUserRecord() didn't pass validation on field 'service': No anode ``` --- test/units/TEST-74-AUX-UTILS.varlinkctl.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/units/TEST-74-AUX-UTILS.varlinkctl.sh b/test/units/TEST-74-AUX-UTILS.varlinkctl.sh index 481dc85d6f..d00d2e65d8 100755 --- a/test/units/TEST-74-AUX-UTILS.varlinkctl.sh +++ b/test/units/TEST-74-AUX-UTILS.varlinkctl.sh @@ -167,7 +167,7 @@ done (! varlinkctl call "") (! varlinkctl call "" "") (! varlinkctl call "" "" "") -(! varlinkctl call /run/systemd/userdb/io.systemd.Multiplexer io.systemd.UserDatabase.GetUserRecord Date: Thu, 4 Sep 2025 08:40:48 +0900 Subject: [PATCH 6/7] network: remove unnecessary fd saved in fd-store Fixes the following warning: ``` [ 130.968170] H systemd-networkd[4288]: Restart operation initiated. [ 130.968265] H systemd-networkd[4288]: Serializing... [ 130.968274] H systemd-networkd[4288]: There is nothing to serialize. (snip) [ 130.978756] H systemd[1]: Stopped systemd-networkd.service. (snip) [ 130.991407] H systemd[1]: Starting systemd-networkd.service... (snip) [ 131.077440] H systemd-networkd[4318]: Enumeration completed. [ 131.077471] H systemd-networkd[4318]: Deserializing... [ 131.077491] H systemd-networkd[4318]: Failed to parse json (line=0, column=0): No data available [ 131.077524] H systemd-networkd[4318]: Failed to deserialize the previous invocation, ignoring: No data available ``` --- src/network/networkd-serialize.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/network/networkd-serialize.c b/src/network/networkd-serialize.c index 93ae377679..8fd978bf09 100644 --- a/src/network/networkd-serialize.c +++ b/src/network/networkd-serialize.c @@ -64,6 +64,7 @@ int manager_serialize(Manager *manager) { if (!v) { log_debug("There is nothing to serialize."); + (void) notify_remove_fd_warn("manager-serialization"); return 0; } From 2985840855b1f0a94c707c5c7de419ff9cd53cc2 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 4 Sep 2025 06:01:52 +0900 Subject: [PATCH 7/7] test: re-enable journal checks for varlink-idl and so on Previously, we have checked journal after TEST-XX-YYYYY.sh, but it was forgotten when we switched to mkosi. This re-enable the check but through ExecStartPost=, and drops unnecessary workarounds for end.service. Then, this drops unnecessary end.service and testsuite.target. --- test/test.service.in | 1 + test/units/TEST-13-NSPAWN.machined.sh | 2 +- test/units/TEST-21-DFUZZER.sh | 20 -------------------- test/units/TEST-82-SOFTREBOOT.sh | 15 +-------------- test/units/TEST-88-UPGRADE.sh | 6 ++++++ test/units/end.service | 11 ----------- test/units/{end.sh => post.sh} | 4 ---- test/units/testsuite.target | 7 ------- 8 files changed, 9 insertions(+), 57 deletions(-) delete mode 100644 test/units/end.service rename test/units/{end.sh => post.sh} (94%) delete mode 100644 test/units/testsuite.target diff --git a/test/test.service.in b/test/test.service.in index 0d0dccdb75..7d1a5ecc99 100644 --- a/test/test.service.in +++ b/test/test.service.in @@ -8,6 +8,7 @@ After=basic.target network.target @after@ [Service] ExecStartPre=rm -f /failed /testok ExecStart=@command@ +ExecStartPost=/usr/lib/systemd/tests/testdata/units/post.sh Type=oneshot MemoryAccounting=@memory-accounting@ Environment=SYSTEMD_PAGER= @env@ diff --git a/test/units/TEST-13-NSPAWN.machined.sh b/test/units/TEST-13-NSPAWN.machined.sh index d466662f96..76db239f91 100755 --- a/test/units/TEST-13-NSPAWN.machined.sh +++ b/test/units/TEST-13-NSPAWN.machined.sh @@ -379,7 +379,7 @@ varlinkctl call /run/systemd/machine/io.systemd.Machine io.systemd.Machine.List # test io.systemd.Machine.Open -# Reducing log level here is to work-around check in end.service (end.sh). Read https://github.com/systemd/systemd/pull/34867 for more details +# Reducing log level here is to work-around check in post.sh. Read https://github.com/systemd/systemd/pull/34867 for more details systemctl service-log-level systemd-machined info (! varlinkctl call /run/systemd/machine/io.systemd.Machine io.systemd.Machine.Open '{"name": ".host"}') (! varlinkctl call /run/systemd/machine/io.systemd.Machine io.systemd.Machine.Open '{"name": ".host", "mode": ""}') diff --git a/test/units/TEST-21-DFUZZER.sh b/test/units/TEST-21-DFUZZER.sh index 449c2d8b9d..fdf0e80549 100755 --- a/test/units/TEST-21-DFUZZER.sh +++ b/test/units/TEST-21-DFUZZER.sh @@ -14,24 +14,6 @@ if [[ ! -v ASAN_OPTIONS && ! -v UBSAN_OPTIONS && "${TEST_RUN_DFUZZER:-0}" == "0" exit 77 fi -# Save the end.service state before we start fuzzing, as it might get changed -# on the fly by one of the fuzzers -systemctl list-jobs | grep -F 'end.service' && SHUTDOWN_AT_EXIT=1 || SHUTDOWN_AT_EXIT=0 - -# shellcheck disable=SC2317 -at_exit() { - set +e - # We have to call the end.service/poweroff explicitly even if it's specified on - # the kernel cmdline via systemd.wants=end.service, since dfuzzer calls - # org.freedesktop.systemd1.Manager.ClearJobs() which drops the service - # from the queue - if [[ $SHUTDOWN_AT_EXIT -ne 0 ]] && ! systemctl poweroff; then - # PID1 is down let's try to save the journal - journalctl --sync # journal can be down as well so let's ignore exit codes here - systemctl -ff poweroff # sync() and reboot(RB_POWER_OFF) - fi -} - add_suppression() { local interface="${1:?}" local suppression="${2:?}" @@ -39,8 +21,6 @@ add_suppression() { sed -i "\%\[$interface\]%a$suppression" /etc/dfuzzer.conf } -trap at_exit EXIT - systemctl log-level info # Skip calling start and stop methods on unit objects, as doing that is not only time consuming, but it also diff --git a/test/units/TEST-82-SOFTREBOOT.sh b/test/units/TEST-82-SOFTREBOOT.sh index e0bf27342b..65d0e030b8 100755 --- a/test/units/TEST-82-SOFTREBOOT.sh +++ b/test/units/TEST-82-SOFTREBOOT.sh @@ -6,19 +6,6 @@ set -o pipefail # shellcheck source=test/units/util.sh . "$(dirname "$0")"/util.sh -at_exit() { - # Since the soft-reboot drops the enqueued end.service, we won't shutdown - # the test VM if the test fails and have to wait for the watchdog to kill - # us (which may take quite a long time). Let's just forcibly kill the machine - # instead to save CI resources. - if [[ $? -ne 0 ]]; then - echo >&2 "Test failed, shutting down the machine..." - systemctl poweroff -ff - fi -} - -trap at_exit EXIT - # Because this test tests soft-reboot, we have to get rid of the symlink we put at # /run/nextroot to allow rebooting into the previous snapshot if the test fails for # the duration of the test. However, let's make sure we put the symlink back in place @@ -272,7 +259,7 @@ exec -a @sleep sleep infinity EOF chmod +x "$survive_argv" # This sets DefaultDependencies=no so that they remain running until the very end, and - # IgnoreOnIsolate=yes so that they aren't stopped via the "testsuite.target" isolation we do on next boot, + # IgnoreOnIsolate=yes so that they aren't stopped via isolation on next boot, # and will be killed by the final sigterm/sigkill spree. systemd-run --collect --service-type=notify -p DefaultDependencies=no -p IgnoreOnIsolate=yes --unit=TEST-82-SOFTREBOOT-nosurvive-sigterm.service "$survive_sigterm" systemd-run --collect --service-type=exec -p DefaultDependencies=no -p IgnoreOnIsolate=yes -p SetCredential=gone:hoge --unit=TEST-82-SOFTREBOOT-nosurvive.service sleep infinity diff --git a/test/units/TEST-88-UPGRADE.sh b/test/units/TEST-88-UPGRADE.sh index 9185725b3d..603efea980 100755 --- a/test/units/TEST-88-UPGRADE.sh +++ b/test/units/TEST-88-UPGRADE.sh @@ -72,6 +72,8 @@ check_sd() { # Copy the unit in /run so systemd finds it after the downgrade cp /usr/lib/systemd/tests/testdata/units/TEST-88-UPGRADE.service /run/systemd/system +# Also backup post.sh +cp /usr/lib/systemd/tests/testdata/units/post.sh /tmp/. now=$(date +%s) after_2h=$((now + 3600 * 2)) @@ -105,4 +107,8 @@ dnf -y upgrade --disablerepo '*' "$pkgdir"/devel/*.rpm # TODO: sanity checks check_sd +# Restore post.sh +mkdir -p /usr/lib/systemd/tests/testdata/units +mv /tmp/post.sh /usr/lib/systemd/tests/testdata/units/. + touch /testok diff --git a/test/units/end.service b/test/units/end.service deleted file mode 100644 index 50a68b9dd4..0000000000 --- a/test/units/end.service +++ /dev/null @@ -1,11 +0,0 @@ -# SPDX-License-Identifier: LGPL-2.1-or-later -[Unit] -Description=End the test -After=testsuite.target -OnFailure=poweroff.target -OnFailureJobMode=replace-irreversibly - -[Service] -Type=oneshot -ExecStart=/usr/lib/systemd/tests/testdata/units/end.sh -TimeoutStartSec=5m diff --git a/test/units/end.sh b/test/units/post.sh similarity index 94% rename from test/units/end.sh rename to test/units/post.sh index cc1d7ee11e..9fd50fffaa 100755 --- a/test/units/end.sh +++ b/test/units/post.sh @@ -1,6 +1,5 @@ #!/usr/bin/env bash # SPDX-License-Identifier: LGPL-2.1-or-later - set -eux set -o pipefail @@ -12,6 +11,3 @@ set -o pipefail # Check if sd-executor doesn't complain about not being able to (de)serialize stuff (! journalctl -q -o short-monotonic --grep "[F]ailed to parse serialized line" >>/failed) (! journalctl -q -o short-monotonic --grep "[F]ailed to (de)?serialize \w+" >>/failed) - -systemctl poweroff --no-block -exit 0 diff --git a/test/units/testsuite.target b/test/units/testsuite.target deleted file mode 100644 index 6bcbfec555..0000000000 --- a/test/units/testsuite.target +++ /dev/null @@ -1,7 +0,0 @@ -# SPDX-License-Identifier: LGPL-2.1-or-later -[Unit] -Description=Testsuite target -Requires=multi-user.target -After=multi-user.target -Conflicts=rescue.target -AllowIsolate=yes