[lxc-devel] [PATCH] Add tests for snapshot clone dependencies

Stéphane Graber stgraber at ubuntu.com
Mon Sep 21 15:35:17 UTC 2015


On Tue, Sep 08, 2015 at 02:55:05PM +0000, Serge Hallyn wrote:
> Test edge cases (removing first and last entries in lxc_snapshots and the very
> last snapshot) and make sure original container isn't destroyed while there are
> snapshots, and is when there are none.
> 
> Signed-off-by: Serge Hallyn <serge.hallyn at ubuntu.com>

Acked-by: Stéphane Graber <stgraber at ubuntu.com>

> ---
>  src/tests/Makefile.am       |  2 ++
>  src/tests/lxc-test-snapdeps | 84 +++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 86 insertions(+)
>  create mode 100644 src/tests/lxc-test-snapdeps
> 
> diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am
> index 461d869..2355c84 100644
> --- a/src/tests/Makefile.am
> +++ b/src/tests/Makefile.am
> @@ -54,6 +54,7 @@ if DISTRO_UBUNTU
>  bin_SCRIPTS += \
>  	lxc-test-apparmor-mount \
>  	lxc-test-checkpoint-restore \
> +	lxc-test-snapdeps \
>  	lxc-test-ubuntu \
>  	lxc-test-unpriv \
>  	lxc-test-usernic
> @@ -80,6 +81,7 @@ EXTRA_DIST = \
>  	lxc-test-checkpoint-restore \
>  	lxc-test-cloneconfig \
>  	lxc-test-createconfig \
> +	lxc-test-snapdeps \
>  	lxc-test-ubuntu \
>  	lxc-test-unpriv \
>  	may_control.c \
> diff --git a/src/tests/lxc-test-snapdeps b/src/tests/lxc-test-snapdeps
> new file mode 100644
> index 0000000..273ecc8
> --- /dev/null
> +++ b/src/tests/lxc-test-snapdeps
> @@ -0,0 +1,84 @@
> +#!/bin/bash
> +
> +# lxc: linux Container library
> +
> +# Authors:
> +# Serge Hallyn <serge.hallyn at ubuntu.com>
> +#
> +# This is a test for dependency between snapshots
> +#
> +# When container c2 is created as an overlayfs clone of c1, then
> +# we record it as such, because c1 cannot be deleted until c2 is
> +# deleted.  Once c2 is deleted, c1 should be delete-able.
> +
> +# This library is free software; you can redistribute it and/or
> +# modify it under the terms of the GNU Lesser General Public
> +# License as published by the Free Software Foundation; either
> +# version 2.1 of the License, or (at your option) any later version.
> +
> +# This library is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +# Lesser General Public License for more details.
> +
> +# You should have received a copy of the GNU Lesser General Public
> +# License along with this library; if not, write to the Free Software
> +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> +
> +# This test assumes an Ubuntu host
> +
> +set -e
> +
> +if ! grep -q overlay /proc/filesystems; then
> +	echo "Not running this test as overlay is not available"
> +	exit 0
> +fi
> +
> +cleanup() {
> +	for i in `seq 1 20`; do
> +		lxc-destroy -n snapdeptest$i > /dev/null 2>&1 || true
> +	done
> +	lxc-destroy -n snapdeptest > /dev/null 2>&1 || true
> +}
> +
> +verify_deps() {
> +	n=$1
> +	m=`wc -l /var/lib/lxc/snapdeptest/lxc_snapshots | awk '{ print $1 }'`
> +	[ $((n*2)) -eq $m ]
> +}
> +
> +cleanup
> +
> +trap cleanup EXIT SIGHUP SIGINT SIGTERM
> +
> +lxc-create -t busybox -n snapdeptest
> +lxc-clone -s -o snapdeptest -n snapdeptest1
> +fail=0
> +lxc-destroy -n snapdeptest || fail=1
> +if [ $fail -eq 0 ]; then
> +	echo "FAIL: clone did not prevent deletion"
> +	false
> +fi
> +
> +for i in `seq 2 20`; do
> +	lxc-clone -s -o snapdeptest -n snapdeptest$i
> +done
> +
> +verify_deps 20
> +
> +lxc-destroy -n snapdeptest1
> +
> +verify_deps 19
> +
> +lxc-destroy -n snapdeptest20
> +
> +verify_deps 18
> +
> +for i in `seq 2 19`; do
> +	lxc-destroy -n snapdeptest$i
> +done
> +
> +lxc-destroy -n snapdeptest
> +
> +echo "Snapshot clone dependency test passed"
> +exit 0
> -- 
> 2.5.0
> 
> _______________________________________________
> lxc-devel mailing list
> lxc-devel at lists.linuxcontainers.org
> http://lists.linuxcontainers.org/listinfo/lxc-devel

-- 
Stéphane Graber
Ubuntu developer
http://www.ubuntu.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20150921/84c872bf/attachment.sig>


More information about the lxc-devel mailing list