]> git.proxmox.com Git - mirror_lxcfs.git/blob - tests/main.sh.in
20571ee1147b0ab7994f3431fbc94d6df7dab47f
[mirror_lxcfs.git] / tests / main.sh.in
1 #!/bin/sh
2 # SPDX-License-Identifier: LGPL-2.1+
3
4 set -eu
5 [ -n "${DEBUG:-}" ] && set -x
6
7 [ $(id -u) -eq 0 ]
8
9 # Run lxcfs testsuite
10 export LXCFSDIR=$(mktemp -d)
11 pidfile=$(mktemp)
12 export LXCFSPID=-1
13
14 cmdline=$(realpath $0)
15 dirname=$(dirname ${cmdline})
16
17 FAILED=1
18 UNSHARE=1
19 cleanup() {
20 echo "=> Cleaning up"
21 set +e
22 if [ $LXCFSPID -ne -1 ]; then
23 kill -9 $LXCFSPID
24 fi
25 if [ ${LXCFSDIR} != "/var/lib/lxcfs" ]; then
26 umount -l ${LXCFSDIR}
27 rmdir ${LXCFSDIR}
28 fi
29 rm -f ${pidfile}
30 if [ ${FAILED} -eq 1 ]; then
31 echo "=> FAILED at $TESTCASE"
32 exit 1
33 fi
34 echo "=> PASSED"
35 exit 0
36 }
37
38 TESTCASE="setup"
39 lxcfs="{{LXCFS_BUILD_ROOT}}/lxcfs"
40
41 if [ -x ${lxcfs} ]; then
42 if [ -n "${LD_LIBRARY_PATH:-}" ]; then
43 export LD_LIBRARY_PATH="{{LXCFS_BUILD_ROOT}}:${LD_LIBRARY_PATH}"
44 else
45 export LD_LIBRARY_PATH="{{LXCFS_BUILD_ROOT}}"
46 fi
47 echo "=> Spawning ${lxcfs} ${LXCFSDIR}"
48 ${lxcfs} -p ${pidfile} ${LXCFSDIR} &
49 LXCFSPID=$!
50 else
51 UNSHARE=0
52 LXCFSPID=$(cat "{{RUNTIME_PATH}}/lxcfs.pid")
53 echo "=> Re-using host lxcfs"
54 rmdir $LXCFSDIR
55 export LXCFSDIR=/var/lib/lxcfs
56 fi
57
58 trap cleanup EXIT HUP INT TERM
59
60 count=1
61 while ! mountpoint -q $LXCFSDIR; do
62 sleep 1s
63 if [ $count -gt 5 ]; then
64 echo "lxcfs failed to start"
65 false
66 fi
67 count=$((count+1))
68 done
69
70 RUNTEST() {
71 echo ""
72 echo "=> Running ${TESTCASE}"
73
74 if [ "${UNSHARE:-1}" != "0" ]; then
75 unshare -fmp --mount-proc $*
76 else
77 $*
78 fi
79 }
80
81 TESTCASE="Stress readdir"
82 RUNTEST ${dirname}/test_readdir
83 TESTCASE="test_proc"
84 RUNTEST ${dirname}/test_proc
85 TESTCASE="test_sysfs"
86 RUNTEST ${dirname}/test_sysfs
87 TESTCASE="test_cgroup"
88 RUNTEST ${dirname}/test_cgroup
89 TESTCASE="test_read_proc.sh"
90 RUNTEST ${dirname}/test_read_proc.sh
91 TESTCASE="cpusetrange"
92 RUNTEST ${dirname}/test-cpusetrange
93 TESTCASE="meminfo hierarchy"
94 RUNTEST ${dirname}/test_meminfo_hierarchy.sh
95 TESTCASE="liblxcfs reloading"
96 UNSHARE=0 RUNTEST ${dirname}/test_reload.sh
97 TESTCASE="SIGUSR2 virtualization mode switching"
98 echo "==> Switching to non-virtualization mode"
99 kill -USR2 $LXCFSPID
100 RUNTEST ${dirname}/test_sigusr2.sh
101 echo "==> Switching to virtualization mode"
102 kill -USR2 $LXCFSPID
103
104 # Check for any defunct processes - children we didn't reap
105 n=`ps -ef | grep lxcfs | grep defunct | wc -l`
106 [ $n = 0 ]
107
108 FAILED=0