]>
git.proxmox.com Git - mirror_lxc.git/blob - src/tests/lxc-test-automount
3 # lxc: linux Container library
6 # Serge Hallyn <serge.hallyn@ubuntu.com>
8 # This library is free software; you can redistribute it and/or
9 # modify it under the terms of the GNU Lesser General Public
10 # License as published by the Free Software Foundation; either
11 # version 2.1 of the License, or (at your option) any later version.
13 # This library is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 # Lesser General Public License for more details.
18 # You should have received a copy of the GNU Lesser General Public
19 # License along with this library; if not, write to the Free Software
20 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22 # At the moment this only tests cgroup automount. Testing proc and
23 # sys automounts would be worthwhile.
25 [ -f /proc
/self
/ns
/cgroup
] && exit 0
27 # cgmanager doesn't do the same cgroup filesystem mounting
34 rmdir /sys
/fs
/cgroup
/freezer
/xx
35 lxc-destroy
-n lxc-test-automount
-f
36 if [ $PHASE != "done" ]; then
37 echo "automount test failed at $PHASE"
40 echo "automount test passed"
47 rmdir /sys
/fs
/cgroup
/freezer
/xx || true
48 lxc-destroy
-n lxc-test-automount
-f || true
49 lxc-create
-t busybox
-n lxc-test-automount
52 echo "Starting phase $PHASE"
53 config
=/var
/lib
/lxc
/lxc-test-automount
/config
54 sed -i '/lxc.mount.auto/d' $config
55 echo "lxc.mount.auto = proc:mixed sys:mixed" >> $config
57 lxc-start
-n lxc-test-automount
58 pid
=$
(lxc-info
-n lxc-test-automount
-p -H)
59 cg
=$
(awk -F: '/freezer/ { print $3 }' /proc
/$pid/cgroup
)
61 stat
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer || notfound
=1
64 # Tests are as follows:
65 # 1. check that freezer controller is mounted
66 # 2. check that it is cgroupfs for cgroup-full (/cgroup.procs exists) or
68 # 3. check that root cgroup dir is readonly or not (try mkdir)
69 # 4. check that the container's cgroup dir is readonly or not
70 # 5. check that the container's cgroup dir is cgroupfs (/cgroup.procs exists)
72 lxc-stop
-n lxc-test-automount
-k
74 echo "Starting phase $PHASE"
75 sed -i '/lxc.mount.auto/d' $config
76 echo "lxc.mount.auto = cgroup:mixed proc:mixed sys:mixed" >> $config
77 lxc-start
-n lxc-test-automount
78 pid
=$
(lxc-info
-n lxc-test-automount
-p -H)
80 stat
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer || notfound
=1
83 stat
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer
/cgroup.procs || notfound
=1
86 mkdir
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer
/xx || ro
=1
89 mkdir
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer
/$cg/xx || ro
=1
92 stat
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer
/$cg/cgroup.procs || notfound
=1
95 lxc-stop
-n lxc-test-automount
-k
97 echo "Starting phase $PHASE"
98 sed -i '/lxc.mount.auto/d' $config
99 echo "lxc.mount.auto = cgroup:ro proc:mixed sys:mixed" >> $config
100 lxc-start
-n lxc-test-automount
101 pid
=$
(lxc-info
-n lxc-test-automount
-p -H)
102 cg
=$
(awk -F: '/freezer/ { print $3 }' /proc
/$pid/cgroup
)
104 stat
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer || notfound
=1
107 stat
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer
/cgroup.procs || notfound
=1
110 mkdir
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer
/xx || ro
=1
113 mkdir
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer
/$cg/xx || ro
=1
116 stat
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer
/$cg/cgroup.procs || notfound
=1
119 lxc-stop
-n lxc-test-automount
-k
121 echo "Starting phase $PHASE"
122 sed -i '/lxc.mount.auto/d' $config
123 echo "lxc.mount.auto = cgroup:rw proc:mixed sys:mixed" >> $config
124 lxc-start
-n lxc-test-automount
125 pid
=$
(lxc-info
-n lxc-test-automount
-p -H)
126 cg
=$
(awk -F: '/freezer/ { print $3 }' /proc
/$pid/cgroup
)
128 stat
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer || notfound
=1
131 stat
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer
/cgroup.procs || notfound
=1
134 mkdir
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer
/xx || ro
=1
136 rmdir /proc
/$pid/root
/sys
/fs
/cgroup
/freezer
/xx
138 mkdir
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer
/$cg/xx || ro
=1
141 stat
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer
/$cg/cgroup.procs || notfound
=1
146 lxc-stop
-n lxc-test-automount
-k
147 PHASE
=cgroup-full
:mixed
148 echo "Starting phase $PHASE"
149 sed -i '/lxc.mount.auto/d' $config
150 echo "lxc.mount.auto = cgroup-full:mixed proc:mixed sys:mixed" >> $config
151 lxc-start
-n lxc-test-automount
152 pid
=$
(lxc-info
-n lxc-test-automount
-p -H)
153 cg
=$
(awk -F: '/freezer/ { print $3 }' /proc
/$pid/cgroup
)
155 stat
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer || notfound
=1
158 stat
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer
/cgroup.procs || notfound
=1
161 mkdir
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer
/xx || ro
=1
164 mkdir
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer
/$cg/xx || ro
=1
166 rmdir /proc
/$pid/root
/sys
/fs
/cgroup
/freezer
/$cg/xx
168 stat
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer
/$cg/cgroup.procs || notfound
=1
171 lxc-stop
-n lxc-test-automount
-k
173 echo "Starting phase $PHASE"
174 sed -i '/lxc.mount.auto/d' $config
175 echo "lxc.mount.auto = cgroup-full:ro proc:mixed sys:mixed" >> $config
176 lxc-start
-n lxc-test-automount
177 pid
=$
(lxc-info
-n lxc-test-automount
-p -H)
178 cg
=$
(awk -F: '/freezer/ { print $3 }' /proc
/$pid/cgroup
)
180 stat
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer || notfound
=1
183 stat
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer
/cgroup.procs || notfound
=1
186 mkdir
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer
/xx || ro
=1
189 mkdir
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer
/$cg/xy || ro
=1
192 stat
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer
/$cg/cgroup.procs || notfound
=1
195 lxc-stop
-n lxc-test-automount
-k
197 echo "Starting phase $PHASE"
198 sed -i '/lxc.mount.auto/d' $config
199 echo "lxc.mount.auto = cgroup-full:rw proc:mixed sys:mixed" >> $config
200 lxc-start
-n lxc-test-automount
201 pid
=$
(lxc-info
-n lxc-test-automount
-p -H)
202 cg
=$
(awk -F: '/freezer/ { print $3 }' /proc
/$pid/cgroup
)
204 stat
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer || notfound
=1
207 stat
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer
/cgroup.procs || notfound
=1
210 mkdir
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer
/xx || ro
=1
212 rmdir /proc
/$pid/root
/sys
/fs
/cgroup
/freezer
/xx
214 mkdir
/proc
/$pid/root
/sys
/fs
/cgroup
/freezer
/$cg/xx || ro
=1
217 /proc
/$pid/root
/sys
/fs
/cgroup
/freezer
/$cg/cgroup.procs || notfound
=1