full-test, unix-test: modified to operate in Fedora as well

That also enables a check for ping in the IPv6 address.
This commit is contained in:
Nikos Mavrogiannopoulos
2014-12-29 12:55:24 +02:00
parent 3edc36c137
commit e2192d546c
9 changed files with 169 additions and 79 deletions

View File

@@ -3,7 +3,7 @@ EXTRA_DIST = ca-key.pem ca.pem common.sh server-cert.pem server-key.pem test1.co
user-config/test user-config-opt/test test-pass-script.config test-multi-cookie.config test-pam.config \
test-stress.config user-cert-wrong.pem connect-script test-group.passwd \
test-group-pass.config user-group-cert.pem user-group-key.pem test-user-group-cert.config \
test-user-group-cert-no-pass.config
test-user-group-cert-no-pass.config docker-common.sh
SUBDIRS = docker-ocserv

74
tests/docker-common.sh Executable file
View File

@@ -0,0 +1,74 @@
if test -x /usr/bin/docker;then
DOCKER=/usr/bin/docker
else
DOCKER=/usr/bin/docker.io
fi
if ! test -x $DOCKER;then
echo "The docker program is needed to perform this test"
exit 77
fi
if test -f /etc/debian_version;then
DEBIAN=1
fi
if test -f /etc/fedora-release;then
FEDORA=1
fi
if test -z $FEDORA && test -z $DEBIAN;then
echo "******************************************************"
echo "This test requires compiling ocserv in a Debian or Fedora systems"
echo "******************************************************"
exit 77
fi
lockfile docker.lock
if test "$UNIX" = 1;then
$DOCKER stop test_unix >/dev/null 2>&1
$DOCKER rm test_unix >/dev/null 2>&1
else
$DOCKER stop test_ocserv >/dev/null 2>&1
$DOCKER rm test_ocserv >/dev/null 2>&1
fi
if test "$FEDORA" = 1;then
echo "Using the fedora image"
$DOCKER pull fedora:21
if test $? != 0;then
echo "Cannot pull docker image"
rm -f docker.lock
exit 1
fi
if test "$UNIX" = 1;then
cp docker-ocserv/Dockerfile-fedora-unix docker-ocserv/Dockerfile
else
cp docker-ocserv/Dockerfile-fedora-tcp docker-ocserv/Dockerfile
fi
else #DEBIAN
echo "Using the Debian image"
$DOCKER pull debian:jessie
if test $? != 0;then
echo "Cannot pull docker image"
rm -f docker.lock
exit 1
fi
if test "$UNIX" = 1;then
cp docker-ocserv/Dockerfile-debian-unix docker-ocserv/Dockerfile
else
cp docker-ocserv/Dockerfile-debian-tcp docker-ocserv/Dockerfile
fi
fi
cp ../src/ocserv ../src/ocpasswd ../src/occtl docker-ocserv/
echo "Creating image $IMAGE"
$DOCKER build -t $IMAGE docker-ocserv/
if test $? != 0;then
echo "Cannot build docker image"
rm -f docker.lock
exit 1
fi
rm -f docker.lock

View File

@@ -1,4 +1,4 @@
FROM tianon/debian:jessie
FROM debian:jessie
RUN apt-get update;sleep 3
RUN apt-get install -y libgnutls-deb0-28

View File

@@ -1,4 +1,4 @@
FROM tianon/debian:jessie
FROM debian:jessie
RUN apt-get update
RUN apt-get install -y haproxy

View File

@@ -0,0 +1,35 @@
FROM fedora:21
RUN yum install -y gnutls gnutls-utils protobuf-c iproute pcllib http-parser tcp_wrappers pam systemd libseccomp
RUN yum install -y bash openssh-server nuttcp
RUN yum install -y libnl3 libtalloc
RUN systemctl enable sshd
RUN sed 's/PermitRootLogin without-password/PermitRootLogin yes/g' -i /etc/ssh/sshd_config
RUN echo 'root:root' |chpasswd
RUN useradd -m -d /home/admin -s /bin/bash admin
RUN echo 'admin:admin' |chpasswd
EXPOSE 5000
EXPOSE 5000/udp
EXPOSE 5001
EXPOSE 5001/udp
EXPOSE 5551
EXPOSE 5551/udp
EXPOSE 22
RUN mkdir /etc/ocserv
ADD key.pem /etc/ocserv/
ADD cert.pem /etc/ocserv/
ADD ocserv.conf /etc/ocserv/
ADD passwd /etc/ocserv/
ADD ocserv /usr/sbin/
ADD ocpasswd /usr/bin/
ADD occtl /usr/bin/
ADD myscript /usr/bin/
# It's not possible to use mknod inside a container with the default LXC
# template, so we untar it from this archive.
ADD dev-tun.tgz /dev/
CMD nuttcp -S;sshd-keygen;/usr/sbin/sshd;mkdir -p /tmp/disconnect/;usr/sbin/ocserv -d 1 -f;sleep 3600

View File

@@ -0,0 +1,37 @@
FROM fedora:21
RUN yum install -y gnutls gnutls-utils protobuf-c iproute pcllib http-parser tcp_wrappers pam systemd libseccomp
RUN yum install -y bash openssh-server nuttcp
RUN systemctl enable sshd
RUN yum install -y libnl3 libtalloc
RUN sed 's/PermitRootLogin without-password/PermitRootLogin yes/g' -i /etc/ssh/sshd_config
RUN echo 'root:root' |chpasswd
RUN useradd -m -d /home/admin -s /bin/bash admin
RUN echo 'admin:admin' |chpasswd
EXPOSE 6000
EXPOSE 6000/udp
EXPOSE 6001
EXPOSE 6001/udp
EXPOSE 6551
EXPOSE 6551/udp
EXPOSE 22
RUN mkdir /etc/ocserv
ADD key.pem /etc/ocserv/
ADD cert.pem /etc/ocserv/
ADD combo.pem /etc/ocserv/
ADD haproxy.cfg /etc/haproxy/
ADD ocserv-unix.conf /etc/ocserv/ocserv.conf
ADD passwd /etc/ocserv/
ADD ocserv /usr/sbin/
ADD ocpasswd /usr/bin/
ADD occtl /usr/bin/
ADD myscript /usr/bin/
# It's not possible to use mknod inside a container with the default LXC
# template, so we untar it from this archive.
ADD dev-tun.tgz /dev/
CMD nuttcp -S;sshd-keygen;/usr/sbin/sshd;mkdir -p /tmp/disconnect/;/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg;/usr/sbin/ocserv -d 1 -f;sleep 3600

View File

@@ -1,5 +1,6 @@
EXTRA_DIST = passwd ocserv.conf Dockerfile-tcp dev-tun.tgz myscript key.pem cert.pem \
Dockerfile-unix ocserv-unix.conf haproxy.cfg combo.pem
EXTRA_DIST = passwd ocserv.conf Dockerfile-debian-tcp dev-tun.tgz myscript key.pem cert.pem \
Dockerfile-debian-unix ocserv-unix.conf haproxy.cfg combo.pem Dockerfile-fedora-unix \
Dockerfile-fedora-tcp
TESTS_ENVIRONMENT = srcdir="$(srcdir)" \
top_builddir="$(top_builddir)"

View File

@@ -26,23 +26,8 @@ if [ $? != 0 ];then
exit 77
fi
if test -x /usr/bin/docker;then
DOCKER=/usr/bin/docker
else
DOCKER=/usr/bin/docker.io
fi
if ! test -x $DOCKER;then
echo "The docker program is needed to perform this test"
exit 77
fi
if ! test -f /etc/debian_version;then
echo "******************************************************"
echo "This test requires compiling ocserv in a Debian system"
echo "******************************************************"
exit 77
fi
IMAGE=ocserv-test1
. ./docker-common.sh
stop() {
$DOCKER stop test_ocserv
@@ -50,30 +35,13 @@ stop() {
exit 1
}
$DOCKER pull tianon/debian:jessie
if test $? != 0;then
echo "Cannot pull docker image"
exit 1
fi
cp ../src/ocserv ../src/ocpasswd ../src/occtl docker-ocserv/
cp docker-ocserv/Dockerfile-tcp docker-ocserv/Dockerfile
$DOCKER build -t ocserv-test1 docker-ocserv/
if test $? != 0;then
echo "Cannot build docker image"
exit 1
fi
$DOCKER stop test_ocserv >/dev/null 2>&1
$DOCKER rm test_ocserv >/dev/null 2>&1
$DOCKER run -P --privileged=true -p 5000:5000/udp -p 5001:5001/udp -p 22 -p 5551:5551/udp --tty=false -d --name test_ocserv ocserv-test1
$DOCKER run -P --privileged=true -p 5000:5000/udp -p 5001:5001/udp -p 22 -p 5551:5551/udp --tty=false -d --name test_ocserv $IMAGE
if test $? != 0;then
echo "Cannot run docker image"
exit 1
fi
echo "ocserv image was run"
#wait for ocserv to server
sleep 5
@@ -82,9 +50,10 @@ if test -z "$IP";then
echo "Detected IP is null!"
stop
fi
echo "Detected IP: $IP"
printf "test\ntest\n" >pass.tmp
openconnect $IP:5551 -u test --passwd-on-stdin --servercert=d66b507ae074d03b02eafca40d35f87dd81049d3 < pass.tmp &
openconnect $IP:5551 -u test --passwd-on-stdin -v --servercert=d66b507ae074d03b02eafca40d35f87dd81049d3 < pass.tmp &
PID=$!
rm -f pass.tmp
@@ -107,6 +76,13 @@ if test $? != 0;then
stop
fi
ping6 -w 5 fd91:6d87:7341:db6a:0:52:190c:be00
if test $? != 0;then
kill $PID
echo "Cannot ping the IPv6 of ocserv"
stop
fi
echo "UserKnownHostsFile ./known-hosts.tmp" >config.tmp
printf "#\!/bin/sh\n" >echo-admin.tmp
printf "echo yes" >>echo-admin.tmp

View File

@@ -26,23 +26,9 @@ if [ $? != 0 ];then
exit 77
fi
if test -x /usr/bin/docker;then
DOCKER=/usr/bin/docker
else
DOCKER=/usr/bin/docker.io
fi
if ! test -x $DOCKER;then
echo "The docker program is needed to perform this test"
exit 77
fi
if ! test -f /etc/debian_version;then
echo "******************************************************"
echo "This test requires compiling ocserv in a Debian system"
echo "******************************************************"
exit 77
fi
UNIX=1
IMAGE=ocserv-test2
. ./docker-common.sh
stop() {
$DOCKER stop test_unix
@@ -50,26 +36,7 @@ stop() {
exit 1
}
$DOCKER pull tianon/debian:jessie
if test $? != 0;then
echo "Cannot pull docker image"
exit 1
fi
cp ../src/ocserv ../src/ocpasswd ../src/occtl docker-ocserv/
cp docker-ocserv/Dockerfile-unix docker-ocserv/Dockerfile
$DOCKER build -t ocserv-test2 docker-ocserv/
#$DOCKER build --no-cache=true -t ocserv-test2 docker-ocserv/
if test $? != 0;then
echo "Cannot build docker image"
exit 1
fi
$DOCKER stop test_unix >/dev/null 2>&1
$DOCKER rm test_unix >/dev/null 2>&1
$DOCKER run -P --privileged=true -p 6000:6000/udp -p 6001:6001/udp -p 22 -p 6551:6551/udp --tty=false -d --name test_unix ocserv-test2
$DOCKER run -P --privileged=true -p 6000:6000/udp -p 6001:6001/udp -p 22 -p 6551:6551/udp --tty=false -d --name test_unix $IMAGE
if test $? != 0;then
echo "Cannot run docker image"
exit 1