]> git.ipfire.org Git - thirdparty/systemd.git/blob - test/units/testsuite-17.10.sh
test: add test for systemd-udev-load-credentials.service
[thirdparty/systemd.git] / test / units / testsuite-17.10.sh
1 #!/usr/bin/env bash
2 # SPDX-License-Identifier: LGPL-2.1-or-later
3 set -ex
4 set -o pipefail
5
6 # shellcheck source=test/units/util.sh
7 . "$(dirname "$0")"/util.sh
8
9 # Coverage test for udevadm
10
11 # shellcheck disable=SC2317
12 cleanup_17_10() {
13 set +e
14
15 losetup -d "$loopdev"
16 rm -f "$blk"
17
18 ip link delete "$netdev"
19 }
20
21 # Set up some test devices
22 trap cleanup_17_10 EXIT
23
24 netdev=dummy17.10
25 ip link add $netdev type dummy
26
27 blk="$(mktemp)"
28 dd if=/dev/zero of="$blk" bs=1M count=1
29 loopdev="$(losetup --show -f "$blk")"
30
31 udevadm -h
32
33 udevadm control -e
34 udevadm control -l emerg
35 udevadm control -l alert
36 udevadm control -l crit
37 udevadm control -l err
38 udevadm control -l warning
39 udevadm control -l notice
40 udevadm control --log-level info
41 udevadm control --log-level debug
42 (! udevadm control -l hello)
43 udevadm control -s
44 udevadm control -S
45 udevadm control -R
46 udevadm control -p HELLO=world
47 udevadm control -m 42
48 udevadm control --ping -t 5
49 udevadm control --load-credentials
50 udevadm control -h
51
52 udevadm info /dev/null
53 udevadm info /sys/class/net/$netdev
54 udevadm info "$(systemd-escape -p --suffix device /sys/devices/virtual/net/$netdev)"
55 udevadm info --property DEVNAME /sys/class/net/$netdev
56 udevadm info --property DEVNAME --value /sys/class/net/$netdev
57 udevadm info --property HELLO /sys/class/net/$netdev
58 udevadm info -p class/net/$netdev
59 udevadm info -p /class/net/$netdev
60 udevadm info --json=off -p class/net/$netdev
61 udevadm info --json=pretty -p class/net/$netdev | jq .
62 udevadm info --json=short -p class/net/$netdev | jq .
63 udevadm info -n null
64 udevadm info -q all /sys/class/net/$netdev
65 udevadm info -q name /dev/null
66 udevadm info -q path /sys/class/net/$netdev
67 udevadm info -q property /sys/class/net/$netdev
68 udevadm info -q symlink /sys/class/net/$netdev
69 udevadm info -q name -r /dev/null
70 udevadm info --query symlink --root /sys/class/net/$netdev
71 (! udevadm info -q hello -r /sys/class/net/$netdev)
72 udevadm info -a /sys/class/net/$netdev
73 udevadm info -t >/dev/null
74 udevadm info --tree /sys/class/net/$netdev
75 udevadm info -x /sys/class/net/$netdev
76 udevadm info -x -q path /sys/class/net/$netdev
77 udevadm info -P TEST_ /sys/class/net/$netdev
78 udevadm info -d /dev/null
79 udevadm info -e >/dev/null
80 udevadm info -e --json=off >/dev/null
81 udevadm info -e --json=pretty | jq . >/dev/null
82 udevadm info -e --json=short | jq . >/dev/null
83 udevadm info -e --subsystem-match acpi >/dev/null
84 udevadm info -e --subsystem-nomatch acpi >/dev/null
85 udevadm info -e --attr-match ifindex=2 >/dev/null
86 udevadm info -e --attr-nomatch ifindex=2 >/dev/null
87 udevadm info -e --property-match SUBSYSTEM=acpi >/dev/null
88 udevadm info -e --tag-match systemd >/dev/null
89 udevadm info -e --sysname-match lo >/dev/null
90 udevadm info -e --name-match /sys/class/net/$netdev >/dev/null
91 udevadm info -e --parent-match /sys/class/net/$netdev >/dev/null
92 udevadm info -e --initialized-match >/dev/null
93 udevadm info -e --initialized-nomatch >/dev/null
94 # udevadm info -c
95 udevadm info -w /sys/class/net/$netdev
96 udevadm info --wait-for-initialization=5 /sys/class/net/$netdev
97 udevadm info -h
98
99 assert_rc 124 timeout 1 udevadm monitor
100 assert_rc 124 timeout 1 udevadm monitor -k
101 assert_rc 124 timeout 1 udevadm monitor -u
102 assert_rc 124 timeout 1 udevadm monitor -s net
103 assert_rc 124 timeout 1 udevadm monitor --subsystem-match net/$netdev
104 assert_rc 124 timeout 1 udevadm monitor -t systemd
105 assert_rc 124 timeout 1 udevadm monitor --tag-match hello
106 udevadm monitor -h
107
108 udevadm settle
109 udevadm settle -t 5
110 udevadm settle -E /sys/class/net/$netdev
111 udevadm settle -h
112
113 udevadm test /dev/null
114 udevadm info /sys/class/net/$netdev
115 udevadm test "$(systemd-escape -p --suffix device /sys/devices/virtual/net/$netdev)"
116 udevadm test -a add /sys/class/net/$netdev
117 udevadm test -a change /sys/class/net/$netdev
118 udevadm test -a move /sys/class/net/$netdev
119 udevadm test -a online /sys/class/net/$netdev
120 udevadm test -a offline /sys/class/net/$netdev
121 udevadm test -a bind /sys/class/net/$netdev
122 udevadm test -a unbind /sys/class/net/$netdev
123 udevadm test -a help /sys/class/net/$netdev
124 udevadm test --action help
125 (! udevadm test -a hello /sys/class/net/$netdev)
126 udevadm test -N early /sys/class/net/$netdev
127 udevadm test -N late /sys/class/net/$netdev
128 udevadm test --resolve-names never /sys/class/net/$netdev
129 (! udevadm test -N hello /sys/class/net/$netdev)
130 udevadm test -h
131
132 # udevadm test-builtin path_id "$loopdev"
133 udevadm test-builtin net_id /sys/class/net/$netdev
134 udevadm test-builtin net_id "$(systemd-escape -p --suffix device /sys/devices/virtual/net/$netdev)"
135 udevadm test-builtin -a add net_id /sys/class/net/$netdev
136 udevadm test-builtin -a remove net_id /sys/class/net/$netdev
137 udevadm test-builtin -a change net_id /sys/class/net/$netdev
138 udevadm test-builtin -a move net_id /sys/class/net/$netdev
139 udevadm test-builtin -a online net_id /sys/class/net/$netdev
140 udevadm test-builtin -a offline net_id /sys/class/net/$netdev
141 udevadm test-builtin -a bind net_id /sys/class/net/$netdev
142 udevadm test-builtin -a unbind net_id /sys/class/net/$netdev
143 udevadm test-builtin -a help net_id /sys/class/net/$netdev
144 udevadm test-builtin net_setup_link /sys/class/net/$netdev
145 udevadm test-builtin blkid "$loopdev"
146 udevadm test-builtin input_id /sys/class/net/$netdev
147 udevadm test-builtin keyboard /dev/null
148 # udevadm test-builtin kmod /sys/class/net/$netdev
149 udevadm test-builtin uaccess /dev/null
150 # udevadm test-builtin usb_id dev/null
151 (! udevadm test-builtin hello /sys/class/net/$netdev)
152 # systemd-hwdb update is extremely slow when combined with sanitizers and run
153 # in a VM without acceleration, so let's just skip the one particular test
154 # if we detect this combination
155 if ! [[ -v ASAN_OPTIONS && "$(systemd-detect-virt -v)" == "qemu" ]]; then
156 modprobe scsi_debug
157 scsidev=$(readlink -f /sys/bus/pseudo/drivers/scsi_debug/adapter*/host*/target*/[0-9]*)
158 mkdir -p /etc/udev/hwdb.d
159 cat >/etc/udev/hwdb.d/99-test.hwdb <<EOF
160 scsi:*
161 ID_TEST=test
162 EOF
163 systemd-hwdb update
164
165 udevadm test-builtin hwdb "$scsidev"
166
167 rmmod scsi_debug || :
168 rm -fv /etc/udev/hwdb.d/99-test.hwdb
169 systemd-hwdb update
170 fi
171
172
173 udevadm trigger
174 udevadm trigger /dev/null
175 udevadm trigger /sys/class/net/$netdev
176 udevadm trigger "$(systemd-escape -p --suffix device /sys/devices/virtual/net/$netdev)"
177 udevadm trigger -v /sys/class/net/$netdev
178 udevadm trigger -n /sys/class/net/$netdev
179 udevadm trigger -q /sys/class/net/$netdev
180 udevadm trigger -t all /sys/class/net/$netdev
181 udevadm trigger -t devices /sys/class/net/$netdev
182 udevadm trigger --type subsystems /sys/class/net/$netdev
183 (! udevadm trigger -t hello /sys/class/net/$netdev)
184 udevadm trigger -c add /sys/class/net/$netdev
185 udevadm trigger -c remove /sys/class/net/$netdev
186 udevadm trigger -c change /sys/class/net/$netdev
187 udevadm trigger -c move /sys/class/net/$netdev
188 udevadm trigger -c online /sys/class/net/$netdev
189 udevadm trigger -c offline /sys/class/net/$netdev
190 udevadm trigger -c bind /sys/class/net/$netdev
191 udevadm trigger -c unbind /sys/class/net/$netdev
192 udevadm trigger -c help /sys/class/net/$netdev
193 udevadm trigger --action help /sys/class/net/$netdev
194 (! udevadm trigger -c hello /sys/class/net/$netdev)
195 udevadm trigger --prioritized-subsystem block
196 udevadm trigger --prioritized-subsystem block,net
197 udevadm trigger --prioritized-subsystem hello
198 udevadm trigger -s net
199 udevadm trigger -S net
200 udevadm trigger -a subsystem=net
201 udevadm trigger --attr-match hello=world
202 udevadm trigger -p DEVNAME=null
203 udevadm trigger --property-match HELLO=world
204 udevadm trigger -g systemd
205 udevadm trigger --tag-match hello
206 udevadm trigger -y net
207 udevadm trigger --sysname-match hello
208 udevadm trigger --name-match /sys/class/net/$netdev
209 udevadm trigger --name-match /sys/class/net/$netdev --name-match /dev/null
210 udevadm trigger -b /sys/class/net/$netdev
211 udevadm trigger --parent-match /sys/class/net/$netdev --name-match /dev/null
212 udevadm trigger --initialized-match
213 udevadm trigger --initialized-nomatch
214 udevadm trigger -w
215 udevadm trigger --uuid /sys/class/net/$netdev
216 udevadm settle -t 300
217 udevadm trigger --wait-daemon
218 udevadm settle -t 300
219 udevadm trigger --wait-daemon=5
220 udevadm trigger -h
221
222 # https://github.com/systemd/systemd/issues/29863
223 if [[ "$(systemd-detect-virt -v)" != "qemu" ]]; then
224 udevadm control --log-level=0
225 for _ in {0..9}; do
226 timeout 30 udevadm trigger --settle
227 done
228 udevadm control --log-level=debug
229 fi
230
231 udevadm wait /dev/null
232 udevadm wait /sys/class/net/$netdev
233 udevadm wait -t 5 /sys/class/net/$netdev
234 udevadm wait --initialized true /sys/class/net/$netdev
235 udevadm wait --initialized false /sys/class/net/$netdev
236 (! udevadm wait --initialized hello /sys/class/net/$netdev)
237 assert_rc 124 timeout 5 udevadm wait --removed /sys/class/net/$netdev
238 udevadm wait --settle /sys/class/net/$netdev
239 udevadm wait -h
240
241 udevadm lock --help
242 udevadm lock --version
243 for i in /dev/block/*; do
244 udevadm lock --device "$i" --print
245 udevadm lock --device "$i" true
246 (! udevadm lock --device "$i" false)
247 done
248 for i in / /usr; do
249 udevadm lock --backing "$i" --print
250 udevadm lock --backing "$i" true
251 (! udevadm lock --backing "$i" false)
252 done
253
254 exit 0