From: Stéphane Graber Date: Tue, 11 Feb 2014 23:40:18 +0000 (-0500) Subject: tests: Add lxc-test-autostart X-Git-Tag: lxc-1.0.0.rc1~35 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=45794802f13e5db18b5d7acb45169e1f4e8b70b2;p=thirdparty%2Flxc.git tests: Add lxc-test-autostart Signed-off-by: Stéphane Graber Acked-by: Serge E. Hallyn --- diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am index de1f7e696..7ba93bc7c 100644 --- a/src/tests/Makefile.am +++ b/src/tests/Makefile.am @@ -46,33 +46,34 @@ bin_PROGRAMS = lxc-test-containertests lxc-test-locktests lxc-test-startone \ lxc-test-snapshot lxc-test-concurrent lxc-test-may-control \ lxc-test-reboot lxc-test-list lxc-test-attach lxc-test-device-add-remove -bin_SCRIPTS = lxc-test-usernic +bin_SCRIPTS = lxc-test-autostart if DISTRO_UBUNTU -bin_SCRIPTS += lxc-test-ubuntu lxc-test-unpriv +bin_SCRIPTS += lxc-test-usernic lxc-test-ubuntu lxc-test-unpriv endif endif EXTRA_DIST = \ cgpath.c \ + clonetest.c \ + concurrent.c \ + console.c \ containertests.c \ createtest.c \ destroytest.c \ + device_add_remove.c \ get_item.c \ getkeys.c \ + list.c locktests.c \ lxcpath.c \ + lxc-test-autostart \ + lxc-test-ubuntu \ + lxc-test-unpriv \ + lxc-test-usernic \ + may_control.c \ saveconfig.c \ shutdowntest.c \ - clonetest.c \ - startone.c \ - console.c \ - lxc-test-usernic \ snapshot.c \ - concurrent.c \ - may_control.c \ - lxc-test-ubuntu \ - lxc-test-unpriv \ - device_add_remove.c \ - list.c + startone.c \ diff --git a/src/tests/lxc-test-autostart b/src/tests/lxc-test-autostart new file mode 100755 index 000000000..6c2acb030 --- /dev/null +++ b/src/tests/lxc-test-autostart @@ -0,0 +1,78 @@ +#!/bin/sh + +# lxc: linux Container library + +# Authors: +# Stéphane Graber +# +# This is a test script for lxc-autostart + +# 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 + +DONE=0 +cleanup() { + lxc-destroy -n $CONTAINER_NAME >/dev/null 2>&1 || true + + if [ $DONE -eq 0 ]; then + echo "FAIL" + exit 1 + fi + echo "PASS" +} + +trap cleanup EXIT HUP INT TERM +set -eu + +# Create a container +CONTAINER_NAME=lxc-test-auto +lxc-create -t download -n $CONTAINER_NAME -- -d ubuntu -r trusty -a i386 +CONTAINER_PATH=$(dirname $(lxc-info -n $CONTAINER_NAME -c lxc.rootfs -H)) +cp $CONTAINER_PATH/config $CONTAINER_PATH/config.bak + +# Ensure it's not in lxc-autostart +lxc-autostart -L | grep -q $CONTAINER_NAME && \ + (echo "Container shouldn't be auto-started" && exit 1) + +# Mark it as auto-started and re-check +echo "lxc.start.auto = 1" >> $CONTAINER_PATH/config +lxc-autostart -L | grep -q $CONTAINER_NAME || \ + (echo "Container should be auto-started" && exit 1) + +# Put it in a test group and set a delay +echo "lxc.group = lxc-auto-test" >> $CONTAINER_PATH/config +echo "lxc.start.delay = 5" >> $CONTAINER_PATH/config + +# Check that everything looks good +if [ "$(lxc-autostart -L -g lxc-auto-test | grep $CONTAINER_NAME)" != "$CONTAINER_NAME 5" ]; then + echo "Invalid autostart setting" && exit 1 +fi + +# Start it +lxc-autostart -g lxc-auto-test +lxc-wait -n $CONTAINER_NAME -t 5 -s RUNNING || (echo "Container didn't start" && exit 1) + +# Restart it +lxc-autostart -g lxc-auto-test -r +lxc-wait -n $CONTAINER_NAME -t 5 -s RUNNING || (echo "Container didn't restart" && exit 1) + +# Shut it down +lxc-autostart -g lxc-auto-test -s +lxc-wait -n $CONTAINER_NAME -t 60 -s STOPPED || (echo "Container didn't stop" && exit 1) + +# Kill it +lxc-autostart -g lxc-auto-test -k +lxc-wait -n $CONTAINER_NAME -t 60 -s STOPPED || (echo "Container didn't die" && exit 1) + +DONE=1