2 # SPDX-License-Identifier: LGPL-2.1-or-later
6 # shellcheck source=test/units/util.sh
7 .
"$(dirname "$0")"/util.sh
9 # Coverage test for udevadm
11 # shellcheck disable=SC2317
18 ip link delete
"$netdev"
21 # Set up some test devices
22 trap cleanup_17_10 EXIT
25 ip link add
$netdev type dummy
28 dd if=/dev
/zero of
="$blk" bs
=1M count
=1
29 loopdev
="$(losetup --show -f "$blk")"
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
)
46 udevadm control
-p HELLO
=world
48 udevadm control
--ping -t 5
49 udevadm control
--load-credentials
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 .
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
95 udevadm info
-w /sys
/class
/net
/$netdev
96 udevadm info
--wait-for-initialization=5 /sys
/class
/net
/$netdev
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
110 udevadm settle
-E /sys
/class
/net
/$netdev
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)
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
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
165 udevadm test-builtin hwdb
"$scsidev"
167 rmmod scsi_debug ||
:
168 rm -fv /etc
/udev
/hwdb.d
/99-test.hwdb
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
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
222 # https://github.com/systemd/systemd/issues/29863
223 if [[ "$(systemd-detect-virt -v)" != "qemu" ]]; then
224 udevadm control
--log-level=0
226 timeout
30 udevadm trigger
--settle
228 udevadm control
--log-level=debug
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
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
)
249 udevadm lock
--backing "$i" --print
250 udevadm lock
--backing "$i" true
251 (! udevadm lock
--backing "$i" false
)