Unttests initial

This commit is contained in:
Denis Zheleztsov 2016-11-12 13:22:23 +03:00
parent f85ce43708
commit 83d1b32ebb
5 changed files with 136 additions and 95 deletions

View File

@ -2,101 +2,7 @@
set -e
function cleanup() {
echo 'Cleanup'
rm -rf ./surok
rm -rf ./out
rm -f ./Dockerfile*
}
function copy_surok() {
mkdir -p ./surok
for f in ../*; do
if [[ $f != '../.git' ]] && [[ $f != '../build' ]]; then
cp -r $f ./surok;
fi
done
SUROK_DEPS=$(grep '^Depends:' surok/debian/control | awk -F': ' '{print $2}' | sed 's/,//g')
CUR_DIR=$(pwd)
}
function build_builder() {
copy_surok
cat > Dockerfile.builder <<EOF
FROM ubuntu:xenial
# Build debian package
MAINTAINER Denis Zheleztsov <difrex.punk@gmail.com>
# Install build depends
RUN apt-get update
RUN apt-get -y install devscripts debhelper
RUN apt-get clean
COPY surok /opt/surok_build
ENTRYPOINT cd /opt/surok_build && dpkg-buildpackage -uc -us && \
mv /opt/surok_*.deb /opt/out
EOF
}
function build_package() {
# run build
echo 'Build builder'
docker build -t surok_builder:latest -f Dockerfile.builder .
docker run -ti -v $CUR_DIR/out:/opt/out surok_builder:latest
}
function build_surok_base() {
if [[ $1 == 'rebuild' ]]; then
build_builder
build_package
fi
DEB=$(cd out && ls | grep .deb)
cat > Dockerfile.surok <<EOF
FROM ubuntu:xenial
MAINTAINER Denis Zheleztsov <difrex.punk@gmail.com>
ADD out/${DEB} /tmp
RUN apt-get update && apt-get install -y ${SUROK_DEPS} python3-memcache
RUN dpkg -i /tmp/${DEB}
RUN apt-get clean
RUN rm -rf /tmp/*
ENTRYPOINT cd /opt/surok && python3 surok.py -c /etc/surok/conf/surok.json
EOF
docker build -t surok_base:latest -f Dockerfile.surok .
}
function build_alpine() {
copy_surok
cat > Dockerfile.alpine << EOF
FROM alpine:latest
MAINTAINER Denis Zheleztsov <difrex.punk@gmail.com>
# Install Python
RUN apk update && apk add python3
# Upgrade pip
RUN pip3 install --upgrade pip
RUN pip3 install dnspython
RUN pip3 install jinja2
RUN pip3 install requests
RUN pip3 install python-memcached
COPY surok /opt/surok
ENTRYPOINT cd /opt/surok && python3 surok.py -c /etc/surok/conf/surok.json
EOF
docker build -t surok_alpine -f Dockerfile.alpine .
}
. functions.sh
function usage() {
echo "$0 <clean|build_package|surok_image|alpine>"

95
build/functions.sh Normal file
View File

@ -0,0 +1,95 @@
function cleanup() {
echo 'Cleanup'
rm -rf ./surok
rm -rf ./out
rm -f ./Dockerfile*
}
function copy_surok() {
mkdir -p ./surok
for f in ../*; do
if [[ $f != '../.git' ]] && [[ $f != '../build' ]]; then
cp -r $f ./surok;
fi
done
SUROK_DEPS=$(grep '^Depends:' surok/debian/control | awk -F': ' '{print $2}' | sed 's/,//g')
CUR_DIR=$(pwd)
}
function build_builder() {
copy_surok
cat > Dockerfile.builder <<EOF
FROM ubuntu:xenial
# Build debian package
MAINTAINER Denis Zheleztsov <difrex.punk@gmail.com>
# Install build depends
RUN apt-get update
RUN apt-get -y install devscripts debhelper
RUN apt-get clean
COPY surok /opt/surok_build
ENTRYPOINT cd /opt/surok_build && dpkg-buildpackage -uc -us && \
mv /opt/surok_*.deb /opt/out
EOF
}
function build_package() {
# run build
echo 'Build builder'
docker build -t surok_builder:latest -f Dockerfile.builder .
docker run -ti -v $CUR_DIR/out:/opt/out surok_builder:latest
}
function build_surok_base() {
if [[ $1 == 'rebuild' ]]; then
build_builder
build_package
fi
DEB=$(cd out && ls | grep .deb)
cat > Dockerfile.surok <<EOF
FROM ubuntu:xenial
MAINTAINER Denis Zheleztsov <difrex.punk@gmail.com>
ADD out/${DEB} /tmp
RUN apt-get update && apt-get install -y ${SUROK_DEPS} python3-memcache
RUN dpkg -i /tmp/${DEB}
RUN apt-get clean
RUN rm -rf /tmp/*
ENTRYPOINT cd /opt/surok && python3 surok.py -c /etc/surok/conf/surok.json
EOF
docker build -t surok_base:latest -f Dockerfile.surok .
}
function build_alpine() {
copy_surok
cat > Dockerfile.alpine << EOF
FROM alpine:latest
MAINTAINER Denis Zheleztsov <difrex.punk@gmail.com>
# Install Python
RUN apk update && apk add python3
# Upgrade pip
RUN pip3 install --upgrade pip
RUN pip3 install dnspython
RUN pip3 install jinja2
RUN pip3 install requests
RUN pip3 install python-memcached
COPY surok /opt/surok
ENTRYPOINT cd /opt/surok && python3 surok.py -c /etc/surok/conf/surok.json
EOF
docker build -t surok_alpine -f Dockerfile.alpine .
}

14
build/runtests.sh Executable file
View File

@ -0,0 +1,14 @@
#!/bin/bash
set -e
. functions.sh
function run_tests() {
docker run -ti -v $(pwd)/tests.py:/opt/surok/tests.py \
-v $(pwd)/tests_entrypoint.sh:/tests_entrypoint.sh \
--entrypoint /tests_entrypoint.sh \
surok_base:latest
}
run_tests

23
build/tests.py Normal file
View File

@ -0,0 +1,23 @@
import unittest
import json
import os
class TestLoadConfig(unittest.TestCase):
def test_main_conf(self):
# Load base configurations
surok_conf = '/etc/surok/conf/surok.json'
# Read config file
f = open(surok_conf, 'r')
conf = json.loads(f.read())
f.close()
self.assertIn('confd', conf)
self.assertTrue(os.path.isdir(conf['confd']))
self.assertIn('domain', conf)
if __name__ == '__main__':
unittest.main()

3
build/tests_entrypoint.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
cd /opt/surok && python3 tests.py