-
Notifications
You must be signed in to change notification settings - Fork 121
Expand file tree
/
Copy pathintegration-propagation.sh
More file actions
executable file
·58 lines (57 loc) · 1.41 KB
/
integration-propagation.sh
File metadata and controls
executable file
·58 lines (57 loc) · 1.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/bin/bash
source $(realpath $(dirname $0))/common.inc.sh
function test_propagation() {
propagation=$1
INFO "Testing --propagation=$propagation"
d=$(mktemp -d)
state=$d/state
$ROOTLESSKIT --state-dir=$state --propagation=$propagation -- sleep infinity &
job=$!
until test -f $state/child_pid; do sleep 0.1; done
pid=$(cat $state/child_pid)
mkdir -p $d/a
touch $d/a/before_mount
sudo mount -t tmpfs none $d/a
touch $d/a/after_mount
case $propagation in
private | rprivate)
test -f /proc/$pid/root/$d/a/before_mount
test ! -f /proc/$pid/root/$d/a/after_mount
;;
slave | rslave | shared | rshared)
test ! -f /proc/$pid/root/$d/a/before_mount
test -f /proc/$pid/root/$d/a/after_mount
;;
*)
ERROR "Unknown propagation $propagation"
exit 1
;;
esac
sudo umount $d/a
kill $job
wait
rm -rf $d
INFO "Testing --propagation=$propagation with copy-up"
case $propagation in
private | rprivate | slave | rslave)
$ROOTLESSKIT --propagation=$propagation --copy-up=/run echo test
;;
shared | rshared)
INFO "(skipping, because known not to work)"
;;
*)
ERROR "Unknown propagation $propagation"
exit 1
;;
esac
}
test_propagation private
test_propagation rprivate
if findmnt -n -l -o propagation / | grep shared >/dev/null; then
test_propagation slave
test_propagation rslave
test_propagation shared
test_propagation rshared
else
INFO "the propagation of / is not shared; skipping non-private tests"
fi