MT#16399 Add initial docker based unit test for Jenkins

Change-Id: Ib6f321089a69c0d27e36167a6fccc785044db229
changes/47/3347/4
Alexander Lutay 11 years ago
parent 85538c754b
commit 2f25ee8b13

@ -0,0 +1,47 @@
# TODO - switch to sipwise internal one
FROM debian:jessie
# Important! Update this no-op ENV variable when this Dockerfile
# is updated with the current date. It will force refresh of all
# of the base images and things like `apt-get update` won't be using
# old cached versions when the Dockerfile is built.
ENV REFRESHED_AT 2015-11-13
# mirrors behind httpredir randomly throw `Error reading from server. Remote end closed connection`
# and we want to be independent from any external services anyway
# TODO - the release-trunk-jessie is too dynamic yet, though required for some build/test dependencies
RUN apt-get update && apt-get -y install apt-transport-https wget
RUN echo "# generated by Dockerfile from data-hal at $(date)\n\
deb https://debian.sipwise.com/debian jessie main non-free\n\
deb https://debian.sipwise.com/debian jessie-updates main non-free\n\
deb https://debian-security.sipwise.com/debian-security jessie-security main contrib non-free\n\
deb https://deb.sipwise.com/autobuild/ release-trunk-jessie main\n" > /etc/apt/sources.list
RUN wget -O /etc/apt/trusted.gpg.d/sipwise.gpg https://deb.sipwise.com/spce/sipwise.gpg
RUN apt-get update
RUN apt-get install --assume-yes perl libstrictures-perl libboolean-perl libclone-perl \
libtest-roo-perl libtype-tiny-perl liburi-perl libhttp-message-perl libjson-perl \
liblog-any-perl libmime-types-perl libdata-hal-perl libfile-slurp-perl libtest-fatal-perl \
liblog-any-adapter-callback-perl liblog-any-adapter-filehandle-perl libtap-formatter-junit-perl
RUN echo 'prove -I /code/lib -v --color -l --formatter TAP::Formatter::JUnit' >>/root/.bash_history
RUN echo 'prove -I /code/lib --color -l' >>/root/.bash_history
RUN echo './t/testrunner' >>/root/.bash_history
WORKDIR /code/
################################################################################
# Instructions for usage
# ----------------------
# When you want to build the base image from scratch (jump to the next section if you don't want to build yourself!):
# % docker build --tag="data-hal-jessie" .
# % docker run --rm -i -t -v $(pwd)/..:/code:rw data-hal-jessie:latest bash
#
# Use the existing docker image:
# % docker pull docker1.mgm.sipwise.com/data-hal-jessie
# % docker run --rm -i -t -v $(pwd)/..:/code:rw docker1.mgm.sipwise.com/data-hal-jessie:latest bash
#
# Inside docker (the command is in history, just press UP button):
# ./t/testrunner
#
################################################################################

@ -0,0 +1,33 @@
#!/bin/bash
# This script is used for running the tests with proper arguments
# from within Jenkins
set -e
set -u
RC=0
if [ -d /results ] ; then
# Running from Jenkins (RW)
RESULTS="/results"
cd "/code"
prove --formatter TAP::Formatter::JUnit -l -I/code/lib | \
tee -a "${RESULTS}/results.xml" || RC=$?
else
# Running locally in Docker
RESULTS="./results"
mkdir -p "${RESULTS}"
prove -v --color -l -I/code/lib | tee -a "${RESULTS}/results.pretty" || RC=$?
fi
echo "Finished test execution, test execution returned with exit code ${RC}."
for file in "${RESULTS}/results.pretty" "${RESULTS}/results.xml" ; do
if [ -f "$file" ] ; then
echo "Test results available at ${file}"
fi
done
exit "${RC}"
Loading…
Cancel
Save