]> git.ipfire.org Git - thirdparty/systemd.git/blob - test/units/testsuite-17.06.sh
tests: add spdx headers to scripts and Makefiles
[thirdparty/systemd.git] / test / units / testsuite-17.06.sh
1 #!/bin/bash
2 # SPDX-License-Identifier: LGPL-2.1-or-later
3 set -ex
4 set -o pipefail
5
6 # tests for udev watch
7
8 function check_validity() {
9 local f ID_OR_HANDLE
10
11 for f in /run/udev/watch/*; do
12 ID_OR_HANDLE="$(readlink "$f")"
13 test -L "/run/udev/watch/${ID_OR_HANDLE}"
14 test "$(readlink "/run/udev/watch/${ID_OR_HANDLE}")" = "$(basename "$f")"
15 done
16 }
17
18 function check() {
19 local i j
20
21 for ((i=0;i<2;i++)); do
22 systemctl restart systemd-udevd.service
23 udevadm control --ping
24 udevadm settle
25 check_validity
26
27 for ((j=0;j<2;j++)); do
28 udevadm trigger -w --action add --subsystem-match=block
29 check_validity
30 done
31
32 for ((j=0;j<2;j++)); do
33 udevadm trigger -w --action change --subsystem-match=block
34 check_validity
35 done
36 done
37 }
38
39 mkdir -p /run/udev/rules.d/
40
41 cat >/run/udev/rules.d/00-debug.rules <<EOF
42 SUBSYSTEM=="block", KERNEL=="sda*", OPTIONS="log_level=debug"
43 EOF
44
45 cat >/run/udev/rules.d/50-testsuite.rules <<EOF
46 ACTION=="add", SUBSYSTEM=="block", KERNEL=="sda", OPTIONS:="watch"
47 EOF
48
49 check
50
51 MAJOR=$(udevadm info /dev/sda | grep -e '^E: MAJOR=' | sed -e 's/^E: MAJOR=//')
52 MINOR=$(udevadm info /dev/sda | grep -e '^E: MINOR=' | sed -e 's/^E: MINOR=//')
53 test -L "/run/udev/watch/b${MAJOR}:${MINOR}"
54
55 cat >/run/udev/rules.d/50-testsuite.rules <<EOF
56 ACTION=="change", SUBSYSTEM=="block", KERNEL=="sda", OPTIONS:="nowatch"
57 EOF
58
59 check
60
61 MAJOR=$(udevadm info /dev/sda | grep -e '^E: MAJOR=' | sed -e 's/^E: MAJOR=//')
62 MINOR=$(udevadm info /dev/sda | grep -e '^E: MINOR=' | sed -e 's/^E: MINOR=//')
63 test ! -e "/run/udev/watch/b${MAJOR}:${MINOR}"
64
65 rm /run/udev/rules.d/00-debug.rules
66 rm /run/udev/rules.d/50-testsuite.rules
67
68 udevadm control --reload
69
70 exit 0