Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH] support/testing: TestPolkitSystemd: fix systemctl exit code check on failure
@ 2023-08-09 13:26 Romain Naour
  2023-08-09 17:40 ` Thomas Petazzoni via buildroot
  0 siblings, 1 reply; 2+ messages in thread
From: Romain Naour @ 2023-08-09 13:26 UTC (permalink / raw)
  To: buildroot; +Cc: Romain Naour

As reported by [1] [2], the return code of systemctl command between
systemd 253 and 254 has changed when the polkit authentication is
refused:

/bin/systemctl restart systemd-timesyncd.service

The return code changed from 1 to 4. The Polkit test case
"TestPolkitSystemd" expected 1 as return code [3].

The service log is not the same either:

systemd v253:
Failed to restart systemd-timesyncd.service: Interactive authentication required.

systemd v254:
Failed to restart systemd-timesyncd.service: Access denied

git bisect report this commit:
https://github.com/systemd/systemd/commit/959301cf9f42418314abf027183dc25c08731b82

From the PR (to get more context):
https://github.com/systemd/systemd/pull/26365

Note: systemd doesn't recommend using systemctl exit code to check unit states:
"The mapping of LSB service states to systemd unit states is imperfect, so it is better to
not rely on those return values but to look for specific unit states and substates instead."

Since we only want to check if the command failed, update our test to
check if systemctl returned a non zero code whatever the reason of the
failure.

Thanks to Yann E. MORIN for the brainstorming!

Fixes:
https://gitlab.com/buildroot.org/buildroot/-/jobs/4768561464 (TestPolkitSystemd)

[1] http://lists.busybox.net/pipermail/buildroot/2023-August/671900.html
[2] https://lists.freedesktop.org/archives/systemd-devel/2023-August/049362.html
[3] https://git.buildroot.net/buildroot/tree/support/testing/tests/package/test_polkit.py?h=2023.08-rc1#n45
[4] https://github.com/systemd/systemd/blob/v254/man/systemctl.xml#L2612

Signed-off-by: Romain Naour <romain.naour@smile.fr>
---

Checked that the TestPolkitSystemd pass:

 # su brtest -c '/bin/systemctl restart systemd-timesyncd.service'
 Failed to restart systemd-timesyncd.service: Access denied
 See system logs and 'systemctl status systemd-timesyncd.service' for details.
 # echo $?
 4
---
 support/testing/tests/package/test_polkit.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/support/testing/tests/package/test_polkit.py b/support/testing/tests/package/test_polkit.py
index 3da63c437b..3414fd5159 100644
--- a/support/testing/tests/package/test_polkit.py
+++ b/support/testing/tests/package/test_polkit.py
@@ -44,7 +44,7 @@ class TestPolkitSystemd(TestPolkitInfra):
         for rule_path in TestPolkitInfra.rule_paths:
             cmd = "su brtest -c '/bin/systemctl restart systemd-timesyncd.service'"
             _, exit_code = self.emulator.run(cmd, 10)
-            self.assertEqual(exit_code, 1)
+            self.assertNotEqual(exit_code, 0)
 
             cmd = "cp /root/{file} {path}".format(file=rule_file, path=rule_path)
             _, exit_code = self.emulator.run(cmd, 10)
-- 
2.41.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [Buildroot] [PATCH] support/testing: TestPolkitSystemd: fix systemctl exit code check on failure
  2023-08-09 13:26 [Buildroot] [PATCH] support/testing: TestPolkitSystemd: fix systemctl exit code check on failure Romain Naour
@ 2023-08-09 17:40 ` Thomas Petazzoni via buildroot
  0 siblings, 0 replies; 2+ messages in thread
From: Thomas Petazzoni via buildroot @ 2023-08-09 17:40 UTC (permalink / raw)
  To: Romain Naour; +Cc: buildroot

On Wed,  9 Aug 2023 15:26:22 +0200
Romain Naour <romain.naour@smile.fr> wrote:

> As reported by [1] [2], the return code of systemctl command between
> systemd 253 and 254 has changed when the polkit authentication is
> refused:
> 
> /bin/systemctl restart systemd-timesyncd.service
> 
> The return code changed from 1 to 4. The Polkit test case
> "TestPolkitSystemd" expected 1 as return code [3].
> 
> The service log is not the same either:
> 
> systemd v253:
> Failed to restart systemd-timesyncd.service: Interactive authentication required.
> 
> systemd v254:
> Failed to restart systemd-timesyncd.service: Access denied
> 
> git bisect report this commit:
> https://github.com/systemd/systemd/commit/959301cf9f42418314abf027183dc25c08731b82
> 
> From the PR (to get more context):
> https://github.com/systemd/systemd/pull/26365
> 
> Note: systemd doesn't recommend using systemctl exit code to check unit states:
> "The mapping of LSB service states to systemd unit states is imperfect, so it is better to
> not rely on those return values but to look for specific unit states and substates instead."
> 
> Since we only want to check if the command failed, update our test to
> check if systemctl returned a non zero code whatever the reason of the
> failure.
> 
> Thanks to Yann E. MORIN for the brainstorming!
> 
> Fixes:
> https://gitlab.com/buildroot.org/buildroot/-/jobs/4768561464 (TestPolkitSystemd)
> 
> [1] http://lists.busybox.net/pipermail/buildroot/2023-August/671900.html
> [2] https://lists.freedesktop.org/archives/systemd-devel/2023-August/049362.html
> [3] https://git.buildroot.net/buildroot/tree/support/testing/tests/package/test_polkit.py?h=2023.08-rc1#n45
> [4] https://github.com/systemd/systemd/blob/v254/man/systemctl.xml#L2612
> 
> Signed-off-by: Romain Naour <romain.naour@smile.fr>
> ---

Applied to master, thanks.

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2023-08-09 17:41 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-08-09 13:26 [Buildroot] [PATCH] support/testing: TestPolkitSystemd: fix systemctl exit code check on failure Romain Naour
2023-08-09 17:40 ` Thomas Petazzoni via buildroot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox