]> git.ipfire.org Git - thirdparty/systemd.git/blob - test/units/testsuite-74.busctl.sh
6e905a025a260f06b439a30598ef95cb9d30bbea
[thirdparty/systemd.git] / test / units / testsuite-74.busctl.sh
1 #!/usr/bin/env bash
2 # SPDX-License-Identifier: LGPL-2.1-or-later
3 set -eux
4 set -o pipefail
5
6 # Unset $PAGER so we don't have to use --no-pager everywhere
7 export PAGER=
8
9 busctl --help
10 busctl help
11 busctl --version
12 busctl
13 busctl list --no-pager --allow-interactive-authorization=no
14 busctl list
15 busctl list --unique --show-machine --full
16 # Pass the JSON output (-j) through jq to check if it's valid
17 busctl list --acquired --activatable --no-legend -j | jq
18 busctl status
19 busctl status --machine=.host --augment-creds=no
20 busctl status --user --machine=testuser@.host
21 busctl status org.freedesktop.systemd1
22 # Ignore the exit code here, since this runs during machine bootup, so busctl
23 # might attempt to introspect a job that already finished and fail, i.e.:
24 # Failed to introspect object /org/freedesktop/systemd1/job/335 of service org.freedesktop.systemd1: Unknown object '/org/freedesktop/systemd1/job/335'.
25 busctl tree || :
26 busctl tree org.freedesktop.login1
27 busctl tree --list org.freedesktop.login1
28 busctl introspect org.freedesktop.systemd1 /org/freedesktop/systemd1
29 busctl introspect --watch-bind=yes --xml-interface org.freedesktop.systemd1 /org/freedesktop/LogControl1
30 busctl introspect org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager
31
32 busctl call org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager \
33 GetDefaultTarget
34 # Pass both JSON outputs through jq to check if the response JSON is valid
35 busctl call --json=pretty \
36 org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager \
37 ListUnitsByNames as 2 "systemd-journald.service" "systemd-logind.service" | jq
38 busctl call --json=short \
39 org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager \
40 ListUnitsByNames as 2 "systemd-journald.service" "systemd-logind.service" | jq
41 busctl call --verbose --timeout=60 --expect-reply=yes \
42 org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager \
43 ListUnitsByPatterns asas 1 "active" 2 "systemd-*.socket" "*.mount"
44
45 busctl emit /org/freedesktop/login1 org.freedesktop.login1.Manager \
46 PrepareForSleep b false
47 busctl emit --auto-start=no --destination=systemd-logind.service \
48 /org/freedesktop/login1 org.freedesktop.login1.Manager \
49 PrepareForShutdown b false
50
51 busctl get-property org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager \
52 Version
53 busctl get-property --verbose \
54 org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager \
55 LogLevel LogTarget SystemState Version
56 # Pass both JSON outputs through jq to check if the response JSON is valid
57 busctl get-property --json=pretty \
58 org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager \
59 LogLevel LogTarget SystemState Version | jq
60 busctl get-property --json=short \
61 org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager \
62 LogLevel LogTarget SystemState Version | jq
63
64 # Set a property and check if it was indeed set
65 busctl set-property org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager \
66 KExecWatchdogUSec t 666
67 busctl get-property -j \
68 org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager \
69 KExecWatchdogUSec | jq -e '.data == 666'
70
71 (! busctl status org.freedesktop.systemd2)
72 (! busctl tree org.freedesktop.systemd2)
73 (! busctl introspect org.freedesktop.systemd1)
74 (! busctl introspect org.freedesktop.systemd1 /org/freedesktop/systemd2)
75 (! busctl introspect org.freedesktop.systemd2 /org/freedesktop/systemd1)
76
77 # Invalid method
78 (! busctl call org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager \
79 ThisMethodDoesntExist)
80 # Invalid signature
81 (! busctl call org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager \
82 ListUnitsByNames ab 1 false)
83 # Invalid arguments
84 (! busctl call org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager \
85 GetUnitByPID u "hello")
86 (! busctl call org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager \
87 -- ListUnitsByNames as -1 "systemd-journald.service")
88 # Not enough arguments
89 (! busctl call org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager \
90 ListUnitsByNames as 99 "systemd-journald.service")
91
92 (! busctl get-property org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager \
93 NonexistentProperty)
94 (! busctl get-property org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager \
95 Version NonexistentProperty Version)
96
97 # Invalid property
98 (! busctl set-property org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager \
99 NonexistentProperty t 666)
100 # Invalid signature
101 (! busctl set-property org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager \
102 KExecWatchdogUSec s 666)
103 # Invalid argument
104 (! busctl set-property org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager \
105 KExecWatchdogUSec t "foo")