lxc-test-symlink revision 13cea07dcdf3658da105f17813b572b3a7787022
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder#!/bin/bash
25cc5fbba63f84b47e389af749f55abbbde71c8cChristian Maeder
25cc5fbba63f84b47e389af749f55abbbde71c8cChristian Maederset -ex
25cc5fbba63f84b47e389af749f55abbbde71c8cChristian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder# lxc: linux Container library
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder# Authors:
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder# Serge Hallyn <serge.hallyn@ubuntu.com>
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder#
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder# This is a regression test for symbolic links
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maederdirname=`mktemp -d`
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maederfname=`mktemp`
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maederfname2=`mktemp`
08e5741dd8b6bf9b7419e89298e384e18bc57f64Christian Maeder
08e5741dd8b6bf9b7419e89298e384e18bc57f64Christian Maederlxcpath=/var/lib/lxcsym1
c0c2380bced8159ff0297ece14eba948bd236471Christian Maeder
ce8b15da31cd181b7e90593cbbca98f47eda29d6Till Mossakowskicleanup() {
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder lxc-destroy -P $lxcpath -f -n symtest1 || true
760ae19a92dde8249679a674f93f58d26a7c5f6bChristian Maeder rm -f $lxcpath
760ae19a92dde8249679a674f93f58d26a7c5f6bChristian Maeder rmdir $dirname || true
88c800932dd7053322501ea2039d9f234be6866cKlaus Luettich rm -f $fname || true
c0c2380bced8159ff0297ece14eba948bd236471Christian Maeder rm -f $fname2 || true
c0c2380bced8159ff0297ece14eba948bd236471Christian Maeder}
c0c2380bced8159ff0297ece14eba948bd236471Christian Maeder
c0c2380bced8159ff0297ece14eba948bd236471Christian Maedertrap cleanup EXIT SIGHUP SIGINT SIGTERM
c0c2380bced8159ff0297ece14eba948bd236471Christian Maeder
c0c2380bced8159ff0297ece14eba948bd236471Christian Maedertestrun() {
c0c2380bced8159ff0297ece14eba948bd236471Christian Maeder expected=$1
8410667510a76409aca9bb24ff0eda0420088274Christian Maeder run=$2
8410667510a76409aca9bb24ff0eda0420088274Christian Maeder pass="pass"
8410667510a76409aca9bb24ff0eda0420088274Christian Maeder lxc-start -P $lxcpath -n symtest1 -l trace -o $lxcpath/log || pass="fail"
404166b9366552e9ec5abb87a37c76ec8a815fb7Klaus Luettich [ $pass = "pass" ] && lxc-wait -P $lxcpath -n symtest1 -t 10 -s RUNNING || pass="fail"
404166b9366552e9ec5abb87a37c76ec8a815fb7Klaus Luettich if [ "$pass" != "$expected" ]; then
fdb2d618144159395f7bf8ce3327b3c112a17dd3Till Mossakowski echo "Test $run: expected $expected but container did not. Start log:"
404166b9366552e9ec5abb87a37c76ec8a815fb7Klaus Luettich cat $lxcpath/log
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder echo "FAIL: Test $run: expected $expected but container did not."
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder false
d67a33b40578beef2e255a274f89bb9c34aaf056Christian Maeder fi
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder lxc-stop -P $lxcpath -n symtest1 -k || true
e593b89bfd4952698dc37feced21cefe869d87a2Christian Maeder}
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder
6e049108aa87dc46bcff96fae50a4625df1d9648Klaus Luettich# make lxcpath a symlink - this should NOT cause failure
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maederln -s /var/lib/lxc $lxcpath
c0c2380bced8159ff0297ece14eba948bd236471Christian Maeder
c6fcd42c6d6d9dae8c7835c24fcb7ce8531a9050Christian Maederlxc-destroy -P $lxcpath -f -n symtest1 || true
c6fcd42c6d6d9dae8c7835c24fcb7ce8531a9050Christian Maederlxc-create -P $lxcpath -t busybox -n symtest1
31c49f2fa23d4ac089f35145d80a224deb6ea7e4Till Mossakowski
c55a0f77be7e88d3620b419ec8961f4379a586e3Klaus Luettichcat >> /var/lib/lxc/symtest1/config << EOF
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maederlxc.mount.entry = $dirname opt/xxx/dir none bind,create=dir
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maederlxc.mount.entry = $fname opt/xxx/file none bind,create=file
f4505a64a089693012a3f5c3b1f12a82cd7a2a5aKlaus Luettichlxc.mount.entry = $fname2 opt/xxx/file2 none bind
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maederlxc.mount.entry = $dirname /var/lib/lxc/symtest1/rootfs/opt/xxx/dir2 none bind,create=dir
c0c2380bced8159ff0297ece14eba948bd236471Christian MaederEOF
61fa0ac06ede811c7aad54ec4c4202346727368eChristian Maeder
c0c2380bced8159ff0297ece14eba948bd236471Christian Maeder# Regular - should succeed
c0c2380bced8159ff0297ece14eba948bd236471Christian Maedermkdir -p /var/lib/lxc/symtest1/rootfs/opt/xxx
c0c2380bced8159ff0297ece14eba948bd236471Christian Maedertouch /var/lib/lxc/symtest1/rootfs/opt/xxx/file2
c0c2380bced8159ff0297ece14eba948bd236471Christian Maedertestrun pass 1
c0c2380bced8159ff0297ece14eba948bd236471Christian Maeder
c0c2380bced8159ff0297ece14eba948bd236471Christian Maeder# symlink - should fail
c0c2380bced8159ff0297ece14eba948bd236471Christian Maederrm -rf /var/lib/lxc/symtest1/rootfs/opt/xxx
c0c2380bced8159ff0297ece14eba948bd236471Christian Maedermkdir -p /var/lib/lxc/symtest1/rootfs/opt/xxx2
c0c2380bced8159ff0297ece14eba948bd236471Christian Maederln -s /var/lib/lxc/symtest1/rootfs/opt/xxx2 /var/lib/lxc/symtest1/rootfs/opt/xxx
61fa0ac06ede811c7aad54ec4c4202346727368eChristian Maedertouch /var/lib/lxc/symtest1/rootfs/opt/xxx/file2
61fa0ac06ede811c7aad54ec4c4202346727368eChristian Maedertestrun fail 2
c0c2380bced8159ff0297ece14eba948bd236471Christian Maeder
f4505a64a089693012a3f5c3b1f12a82cd7a2a5aKlaus Luettich# final final symlink - should fail
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maederrm -rf $lxcpath/symtest1/rootfs/opt/xxx
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maedermkdir -p $lxcpath/symtest1/rootfs/opt/xxx
f4505a64a089693012a3f5c3b1f12a82cd7a2a5aKlaus Luettichmkdir -p $lxcpath/symtest1/rootfs/opt/xxx/dir
f4505a64a089693012a3f5c3b1f12a82cd7a2a5aKlaus Luettichtouch $lxcpath/symtest1/rootfs/opt/xxx/file
f4505a64a089693012a3f5c3b1f12a82cd7a2a5aKlaus Luettichtouch $lxcpath/symtest1/rootfs/opt/xxx/file2src
5d4038657f6a63e131f5804af2f7957b69e15a43Klaus Luettichln -s $lxcpath/symtest1/rootfs/opt/xxx/file2src $lxcpath/symtest1/rootfs/opt/xxx/file2
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maedertestrun fail 3
c0c2380bced8159ff0297ece14eba948bd236471Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder# Ideally we'd also try a loop device, but that won't work in nested containers
77a65251ee036c6aaf09c2775315a4ee24259fbdJorina Freya Gerken# anyway - TODO
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder# what about /proc itself
61fa0ac06ede811c7aad54ec4c4202346727368eChristian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maederrm -rf $lxcpath/symtest1/rootfs/opt/xxx
97812b7ce9860bf514a8822a63503451795dbc65Klaus Luettichmkdir -p $lxcpath/symtest1/rootfs/opt/xxx
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maedertouch $lxcpath/symtest1/rootfs/opt/xxx/file2
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maedermv $lxcpath/symtest1/rootfs/proc $lxcpath/symtest1/rootfs/proc1
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maederln -s $lxcpath/symtest1/rootfs/proc1 $lxcpath/symtest1/rootfs/proc
61fa0ac06ede811c7aad54ec4c4202346727368eChristian Maedertestrun fail 4
61fa0ac06ede811c7aad54ec4c4202346727368eChristian Maeder
61fa0ac06ede811c7aad54ec4c4202346727368eChristian Maederecho "all tests passed"
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder