]> git.ipfire.org Git - thirdparty/systemd.git/blame - test/units/testsuite-60.sh
tests: add spdx license header to test unit/link/network/conf files
[thirdparty/systemd.git] / test / units / testsuite-60.sh
CommitLineData
0c819009
AZ
1#!/usr/bin/env bash
2set -eux
3set -o pipefail
4
5systemd-analyze log-level debug
6systemd-analyze log-target journal
7
8NUM_DIRS=20
9
10# mount/unmount enough times to trigger the /proc/self/mountinfo parsing rate limiting
11
12for ((i = 0; i < NUM_DIRS; i++)); do
13 mkdir "/tmp/meow${i}"
14done
15
16for ((i = 0; i < NUM_DIRS; i++)); do
17 mount -t tmpfs tmpfs "/tmp/meow${i}"
18done
19
20systemctl daemon-reload
21systemctl list-units -t mount tmp-meow* | grep -q tmp-meow
22
23for ((i = 0; i < NUM_DIRS; i++)); do
24 umount "/tmp/meow${i}"
25done
26
27# figure out if we have entered the rate limit state
28
f571d9d5 29entered_rl=0
0c819009
AZ
30exited_rl=0
31timeout="$(date -ud "2 minutes" +%s)"
32while [[ $(date -u +%s) -le ${timeout} ]]; do
33 if journalctl -u init.scope | grep -q "(mount-monitor-dispatch) entered rate limit"; then
34 entered_rl=1
35 break
36 fi
37 sleep 5
38done
39
40# if the infra is slow we might not enter the rate limit state; in that case skip the exit check
41
42if [ "${entered_rl}" = "1" ]; then
43 exited_rl=0
44 timeout="$(date -ud "2 minutes" +%s)"
45 while [[ $(date -u +%s) -le ${timeout} ]]; do
46 if journalctl -u init.scope | grep -q "(mount-monitor-dispatch) left rate limit"; then
47 exited_rl=1
48 break
49 fi
50 sleep 5
51 done
52
53 if [ "${exited_rl}" = "0" ]; then
54 exit 24
55 fi
56fi
57
58# give some time for units to settle so we don't race between exiting the rate limit state and cleaning up the units
59
60sleep 60
61systemctl daemon-reload
62sleep 60
63
64# verify that the mount units are always cleaned up at the end
65
66if systemctl list-units -t mount tmp-meow* | grep -q tmp-meow; then
67 exit 42
68fi
69
70systemd-analyze log-level info
71
72echo OK >/testok
73
74exit 0