[lxc-devel] [PATCH 1/1] add basic lxc-test-ubuntu (v3)
Serge Hallyn
serge.hallyn at ubuntu.com
Thu Oct 3 03:30:31 UTC 2013
Some features of lxc - networking and LSM configuration for instance -
are generally configured by the distro packages. This program
tests the Ubuntu configuration.
changelog v2:
Switch to lxc-info -i to detect ip address as stgraber suggested
Don't look for 'expect' as I'm not using it yet.
changelog v3:
Make sure to only read one ip address from container.
Signed-off-by: Serge Hallyn <serge.hallyn at ubuntu.com>
---
configure.ac | 1 +
src/tests/Makefile.am | 4 +++
src/tests/lxc-test-ubuntu | 78 +++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 83 insertions(+)
create mode 100644 src/tests/lxc-test-ubuntu
diff --git a/configure.ac b/configure.ac
index 92a4690..d7f2f03 100644
--- a/configure.ac
+++ b/configure.ac
@@ -51,6 +51,7 @@ case $with_distro in
esac
AC_MSG_RESULT([$with_distro])
AM_CONDITIONAL([HAVE_DEBIAN], [test x"$with_distro" = "xdebian" -o x"$with_distro" = "xubuntu"])
+AM_CONDITIONAL([DISTRO_UBUNTU], [test "x$with_distro" = "xubuntu"])
# Detect the newuidmap tool (required for userns)
AC_CHECK_PROG([NEWUIDMAP], [newuidmap], [newuidmap])
diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am
index 479facc..ef65958 100644
--- a/src/tests/Makefile.am
+++ b/src/tests/Makefile.am
@@ -36,6 +36,10 @@ bin_PROGRAMS = lxc-test-containertests lxc-test-locktests lxc-test-startone \
bin_SCRIPTS = lxc-test-usernic
+if DISTRO_UBUNTU
+bin_SCRIPTS += lxc-test-ubuntu
+endif
+
endif
EXTRA_DIST = \
diff --git a/src/tests/lxc-test-ubuntu b/src/tests/lxc-test-ubuntu
new file mode 100644
index 0000000..c6573c1
--- /dev/null
+++ b/src/tests/lxc-test-ubuntu
@@ -0,0 +1,78 @@
+#!/bin/sh
+
+# lxc-test-ubuntu: some tests of ubuntu-specific features of lxc.
+# Some features of lxc - networking and LSM configuration for instance -
+# are generally configured by the distro packages. This program
+# tests the Ubuntu configuration.
+
+# These require the ubuntu lxc package to be installed.
+
+# General lxc functionality testing does not belong here.
+
+# This program 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
+
+
+set -e
+
+FAIL() {
+ echo -n "Failed " >&2
+ echo "$*" >&2
+ exit 1
+}
+
+# Only run on a normally configured ubuntu lxc system
+if [ ! -d /sys/class/net/lxcbr0 ]; then
+ echo "lxcbr0 is not configured."
+ exit 0
+fi
+if [ "$(id -u)" != "0" ]; then
+ echo "Must run as root."
+ exit 0
+fi
+if ! which host 2>&1 > /dev/null; then
+ echo "'host' program not found. Please install bind9-host"
+ exit 0
+fi
+
+for template in ubuntu ubuntu-cloud; do
+ # need a different name for each container so dnsmasq doesn't
+ # mess us up with its caching
+ if which uuidgen 2>&1 > /dev/null; then
+ name=$(uuidgen)
+ else
+ name=lxc-test-$template
+ fi
+ lxc-create -t $template -n $name || FAIL "creating $template container"
+ lxc-start -n $name -d || FAIL "starting $template container"
+ lxc-wait -n $name -s RUNNING || FAIL "waiting for $template container to run"
+ for tries in `seq 1 20`; do
+ lxcip=`sudo lxc-info -i -n $name | awk -F: '{ print $2 }' | awk '{ print $1}' | head -1`
+ [ -z "$lxcip" ] || break
+ sleep 1
+ done
+ [ -n "$lxcip" ] || FAIL "to start networking in $template container"
+
+ ping -c 1 $lxcip || FAIL "to ping $template container"
+ # Check apparmor
+ lxcpid=`lxc-info -n $name -p | awk -F: '{ print $2 }' | awk '{ print $1}'`
+ aa=`cat /proc/$lxcpid/attr/current`
+ if [ "$aa" != "lxc-container-default-with-nesting (enforce)" ]; then
+ FAIL " to correctly set apparmor profile (profile is \"$aa\")"
+ fi
+ lxc-stop -n $name
+ lxc-destroy -n $name
+done
+
+exit 0
--
1.8.3.2
More information about the lxc-devel
mailing list