Browse Source

Infra in compose, docker run individual tests (parallisation)

pull/740/head
Tim Kimber 6 years ago
parent
commit
ed51759b35
7 changed files with 299 additions and 195 deletions
  1. +212
    -0
      docker-compose-orig.yml
  2. +0
    -180
      docker-compose.yml
  3. +1
    -1
      test/Dockerfile-alpine
  4. +25
    -0
      test/Dockerfile-duckdns
  5. +7
    -14
      test/run-all-tests.cmd
  6. +9
    -0
      test/run-bats.sh
  7. +45
    -0
      test/run-test.cmd

+ 212
- 0
docker-compose-orig.yml View File

@ -0,0 +1,212 @@
version: '3'
services:
pebble:
image: letsencrypt/pebble:latest
# TODO enable -strict
command: pebble -config /test/config/pebble-config.json -dnsserver 10.30.50.3:53
environment:
# with Go 1.13.x which defaults TLS 1.3 to on
GODEBUG: "tls13=1"
ports:
- 14000:14000 # HTTPS ACME API
- 15000:15000 # HTTPS Management API
networks:
acmenet:
ipv4_address: 10.30.50.2
challtestsrv:
image: letsencrypt/pebble-challtestsrv:latest
command: pebble-challtestsrv -defaultIPv6 "" -defaultIPv4 10.30.50.3 -dns01 ":53"
ports:
- 8055:8055 # HTTP Management API
networks:
acmenet:
ipv4_address: 10.30.50.3
getssl-alpine:
build:
context: .
dockerfile: test/Dockerfile-alpine
container_name: getssl-alpine
volumes:
- .:/getssl
environment:
GETSSL_HOST: alpine.getssl.test
GETSSL_IP: 10.30.50.10
NGINX_CONFIG: /etc/nginx/conf.d/default.conf
networks:
acmenet:
ipv4_address: 10.30.50.10
aliases:
- alpine.getssl.test
- a.alpine.getssl.test
- b.alpine.getssl.test
- c.alpine.getssl.test
- d.alpine.getssl.test
- e.alpine.getssl.test
- f.alpine.getssl.test
- g.alpine.getssl.test
- h.alpine.getssl.test
- i.alpine.getssl.test
- j.alpine.getssl.test
- k.alpine.getssl.test
getssl-centos6:
build:
context: .
dockerfile: test/Dockerfile-centos6
container_name: getssl-centos6
volumes:
- .:/getssl
environment:
GETSSL_HOST: centos6.getssl.test
GETSSL_IP: 10.30.50.11
NGINX_CONFIG: /etc/nginx/conf.d/default.conf
networks:
acmenet:
ipv4_address: 10.30.50.11
aliases:
- centos6.getssl.test
- a.centos6.getssl.test
- b.centos6.getssl.test
- c.centos6.getssl.test
- d.centos6.getssl.test
- e.centos6.getssl.test
- f.centos6.getssl.test
- g.centos6.getssl.test
- h.centos6.getssl.test
- i.centos6.getssl.test
- j.centos6.getssl.test
- k.centos6.getssl.test
getssl-debian:
build:
context: .
dockerfile: test/Dockerfile-debian
container_name: getssl-debian
volumes:
- .:/getssl
environment:
GETSSL_HOST: debian.getssl.test
GETSSL_IP: 10.30.50.12
NGINX_CONFIG: /etc/nginx/sites-enabled/default
networks:
acmenet:
ipv4_address: 10.30.50.12
aliases:
- debian.getssl.test
- a.debian.getssl.test
- b.debian.getssl.test
- c.debian.getssl.test
- d.debian.getssl.test
- e.debian.getssl.test
- f.debian.getssl.test
- g.debian.getssl.test
- h.debian.getssl.test
- i.debian.getssl.test
- j.debian.getssl.test
- k.debian.getssl.test
getssl-ubuntu:
build:
context: .
dockerfile: test/Dockerfile-ubuntu
container_name: getssl-ubuntu
volumes:
- .:/getssl
environment:
GETSSL_HOST: ubuntu.getssl.test
GETSSL_IP: 10.30.50.13
NGINX_CONFIG: /etc/nginx/sites-enabled/default
networks:
acmenet:
ipv4_address: 10.30.50.13
aliases:
- ubuntu.getssl.test
- a.ubuntu.getssl.test
- b.ubuntu.getssl.test
- c.ubuntu.getssl.test
- d.ubuntu.getssl.test
- e.ubuntu.getssl.test
- f.ubuntu.getssl.test
- g.ubuntu.getssl.test
- h.ubuntu.getssl.test
- i.ubuntu.getssl.test
- j.ubuntu.getssl.test
- k.ubuntu.getssl.test
getssl-ubuntu16:
build:
context: .
dockerfile: test/Dockerfile-ubuntu16
container_name: getssl-ubuntu16
volumes:
- .:/getssl
environment:
GETSSL_HOST: ubuntu16.getssl.test
GETSSL_IP: 10.30.50.14
NGINX_CONFIG: /etc/nginx/sites-enabled/default
networks:
acmenet:
ipv4_address: 10.30.50.14
aliases:
- ubuntu16.getssl.test
- a.ubuntu16.getssl.test
- b.ubuntu16.getssl.test
- c.ubuntu16.getssl.test
- d.ubuntu16.getssl.test
- e.ubuntu16.getssl.test
- f.ubuntu16.getssl.test
- g.ubuntu16.getssl.test
- h.ubuntu16.getssl.test
- i.ubuntu16.getssl.test
- j.ubuntu16.getssl.test
- k.ubuntu16.getssl.test
getssl-ubuntu18:
build:
context: .
dockerfile: test/Dockerfile-ubuntu18
container_name: getssl-ubuntu18
volumes:
- .:/getssl
environment:
GETSSL_HOST: ubuntu18.getssl.test
GETSSL_IP: 10.30.50.15
NGINX_CONFIG: /etc/nginx/sites-enabled/default
networks:
acmenet:
ipv4_address: 10.30.50.15
aliases:
- ubuntu18.getssl.test
- a.ubuntu18.getssl.test
- b.ubuntu18.getssl.test
- c.ubuntu18.getssl.test
- d.ubuntu18.getssl.test
- e.ubuntu18.getssl.test
- f.ubuntu18.getssl.test
- g.ubuntu18.getssl.test
- h.ubuntu18.getssl.test
- i.ubuntu18.getssl.test
- j.ubuntu18.getssl.test
- k.ubuntu18.getssl.test
getssl-duckdns:
build:
context: .
dockerfile: test/Dockerfile-ubuntu
container_name: getssl-duckdns
volumes:
- .:/getssl
environment:
GETSSL_HOST: getssl.duckdns.org
GETSSL_IP: 10.30.50.16
NGINX_CONFIG: /etc/nginx/sites-enabled/default
DUCKDNS_TOKEN: $DUCKDNS_TOKEN
STAGING: "true"
networks:
acmenet:
ipv4_address: 10.30.50.16
aliases:
- getssl.duckdns.org
networks:
acmenet:
driver: bridge
ipam:
driver: default
config:
- subnet: 10.30.50.0/24

+ 0
- 180
docker-compose.yml View File

@ -21,186 +21,6 @@ services:
networks:
acmenet:
ipv4_address: 10.30.50.3
getssl-alpine:
build:
context: .
dockerfile: test/Dockerfile-alpine
container_name: getssl-alpine
volumes:
- .:/getssl
environment:
GETSSL_HOST: alpine.getssl.test
GETSSL_IP: 10.30.50.10
NGINX_CONFIG: /etc/nginx/conf.d/default.conf
networks:
acmenet:
ipv4_address: 10.30.50.10
aliases:
- alpine.getssl.test
- a.alpine.getssl.test
- b.alpine.getssl.test
- c.alpine.getssl.test
- d.alpine.getssl.test
- e.alpine.getssl.test
- f.alpine.getssl.test
- g.alpine.getssl.test
- h.alpine.getssl.test
- i.alpine.getssl.test
- j.alpine.getssl.test
- k.alpine.getssl.test
getssl-centos6:
build:
context: .
dockerfile: test/Dockerfile-centos6
container_name: getssl-centos6
volumes:
- .:/getssl
environment:
GETSSL_HOST: centos6.getssl.test
GETSSL_IP: 10.30.50.11
NGINX_CONFIG: /etc/nginx/conf.d/default.conf
networks:
acmenet:
ipv4_address: 10.30.50.11
aliases:
- centos6.getssl.test
- a.centos6.getssl.test
- b.centos6.getssl.test
- c.centos6.getssl.test
- d.centos6.getssl.test
- e.centos6.getssl.test
- f.centos6.getssl.test
- g.centos6.getssl.test
- h.centos6.getssl.test
- i.centos6.getssl.test
- j.centos6.getssl.test
- k.centos6.getssl.test
getssl-debian:
build:
context: .
dockerfile: test/Dockerfile-debian
container_name: getssl-debian
volumes:
- .:/getssl
environment:
GETSSL_HOST: debian.getssl.test
GETSSL_IP: 10.30.50.12
NGINX_CONFIG: /etc/nginx/sites-enabled/default
networks:
acmenet:
ipv4_address: 10.30.50.12
aliases:
- debian.getssl.test
- a.debian.getssl.test
- b.debian.getssl.test
- c.debian.getssl.test
- d.debian.getssl.test
- e.debian.getssl.test
- f.debian.getssl.test
- g.debian.getssl.test
- h.debian.getssl.test
- i.debian.getssl.test
- j.debian.getssl.test
- k.debian.getssl.test
getssl-ubuntu:
build:
context: .
dockerfile: test/Dockerfile-ubuntu
container_name: getssl-ubuntu
volumes:
- .:/getssl
environment:
GETSSL_HOST: ubuntu.getssl.test
GETSSL_IP: 10.30.50.13
NGINX_CONFIG: /etc/nginx/sites-enabled/default
networks:
acmenet:
ipv4_address: 10.30.50.13
aliases:
- ubuntu.getssl.test
- a.ubuntu.getssl.test
- b.ubuntu.getssl.test
- c.ubuntu.getssl.test
- d.ubuntu.getssl.test
- e.ubuntu.getssl.test
- f.ubuntu.getssl.test
- g.ubuntu.getssl.test
- h.ubuntu.getssl.test
- i.ubuntu.getssl.test
- j.ubuntu.getssl.test
- k.ubuntu.getssl.test
getssl-ubuntu16:
build:
context: .
dockerfile: test/Dockerfile-ubuntu16
container_name: getssl-ubuntu16
volumes:
- .:/getssl
environment:
GETSSL_HOST: ubuntu16.getssl.test
GETSSL_IP: 10.30.50.14
NGINX_CONFIG: /etc/nginx/sites-enabled/default
networks:
acmenet:
ipv4_address: 10.30.50.14
aliases:
- ubuntu16.getssl.test
- a.ubuntu16.getssl.test
- b.ubuntu16.getssl.test
- c.ubuntu16.getssl.test
- d.ubuntu16.getssl.test
- e.ubuntu16.getssl.test
- f.ubuntu16.getssl.test
- g.ubuntu16.getssl.test
- h.ubuntu16.getssl.test
- i.ubuntu16.getssl.test
- j.ubuntu16.getssl.test
- k.ubuntu16.getssl.test
getssl-ubuntu18:
build:
context: .
dockerfile: test/Dockerfile-ubuntu18
container_name: getssl-ubuntu18
volumes:
- .:/getssl
environment:
GETSSL_HOST: ubuntu18.getssl.test
GETSSL_IP: 10.30.50.15
NGINX_CONFIG: /etc/nginx/sites-enabled/default
networks:
acmenet:
ipv4_address: 10.30.50.15
aliases:
- ubuntu18.getssl.test
- a.ubuntu18.getssl.test
- b.ubuntu18.getssl.test
- c.ubuntu18.getssl.test
- d.ubuntu18.getssl.test
- e.ubuntu18.getssl.test
- f.ubuntu18.getssl.test
- g.ubuntu18.getssl.test
- h.ubuntu18.getssl.test
- i.ubuntu18.getssl.test
- j.ubuntu18.getssl.test
- k.ubuntu18.getssl.test
getssl-duckdns:
build:
context: .
dockerfile: test/Dockerfile-ubuntu
container_name: getssl-duckdns
volumes:
- .:/getssl
environment:
GETSSL_HOST: getssl.duckdns.org
GETSSL_IP: 10.30.50.16
NGINX_CONFIG: /etc/nginx/sites-enabled/default
DUCKDNS_TOKEN: $DUCKDNS_TOKEN
STAGING: "true"
networks:
acmenet:
ipv4_address: 10.30.50.16
aliases:
- getssl.duckdns.org
networks:


+ 1
- 1
test/Dockerfile-alpine View File

@ -19,4 +19,4 @@ RUN /bats-core/install.sh /usr/local
# Use supervisord to run nginx in the background
COPY ./test/alpine-supervisord.conf /etc/supervisord.conf
ENTRYPOINT /usr/bin/supervisord -c /etc/supervisord.conf
CMD tail -f /dev/null

+ 25
- 0
test/Dockerfile-duckdns View File

@ -0,0 +1,25 @@
FROM ubuntu:latest
# Note this image uses mawk1.3
ENV staging "true"
ENV DUCKDNS_TOKEN 1d616aa9-b8e4-4bb4-b312-3289de82badb
# Update and install required software
RUN apt-get update --fix-missing
RUN apt-get install -y git curl dnsutils wget nginx-light
RUN apt-get install -y vim dos2unix # for debugging
# TODO test with drill, dig, host
WORKDIR /root
# Prevent "Can't load /root/.rnd into RNG" error from openssl
RUN touch /root/.rnd
# BATS (Bash Automated Testings)
RUN git clone https://github.com/bats-core/bats-core.git /bats-core
RUN git clone https://github.com/jasonkarns/bats-support /bats-support
RUN git clone https://github.com/jasonkarns/bats-assert-1 /bats-assert
RUN /bats-core/install.sh /usr/local
# Run eternal loop - for testing
CMD tail -f /dev/null

+ 7
- 14
test/run-all-tests.cmd View File

@ -1,15 +1,8 @@
echo %time%
docker exec -it getssl-alpine bats /getssl/test
echo %time%
docker exec -it getssl-centos6 bats /getssl/test
echo %time%
docker exec -it getssl-debian bats /getssl/test
echo %time%
docker exec -it getssl-ubuntu bats /getssl/test
echo %time%
docker exec -it getssl-ubuntu18 bats /getssl/test
echo %time%
docker exec -it getssl-ubuntu16 bats /getssl/test
echo %time%
docker exec -it getssl-duckdns bats /getssl/test
echo %time%
run-test.cmd alpine /etc/nginx/conf.d/default.conf 10
run-test.cmd centos6 /etc/nginx/conf.d/default.conf 11
run-test.cmd debian /etc/nginx/sites-enabled/default 12
run-test.cmd ubuntu /etc/nginx/sites-enabled/default 13
run-test.cmd ubuntu16 /etc/nginx/sites-enabled/default 14
run-test.cmd ubuntu18 /etc/nginx/sites-enabled/default 15
run-test.cmd duckdns /etc/nginx/sites-enabled/default 16 getssl.duckdns.org

+ 9
- 0
test/run-bats.sh View File

@ -0,0 +1,9 @@
#! /usr/bin/env bash
if [ "$GETSSL_HOST" = "alpine.getssl.test" ]; then
# start nginx in background
/usr/bin/supervisord -c /etc/supervisord.conf &
sleep 5 # to allow for initialization
fi
bats /getssl/test

+ 45
- 0
test/run-test.cmd View File

@ -0,0 +1,45 @@
@echo off
IF %1.==. GOTO NoOS
set OS=%1
IF %2.==. GOTO NoNGINX
set NGINX=%2%
IF %3.==. GOTO NoIP
set IP=%3
IF %4.==. GOTO NoAlias
set ALIAS=%4
GOTO Run
:NoOS
set OS=ubuntu
:NoNGINX
set NGINX=/etc/nginx/sites-enabled/default
:NoIP
set IP=13
:NoAlias
set ALIAS=%OS%.getssl.test
:Run
docker build --rm -f "test\Dockerfile-%OS%" -t getssl-%OS% .
@echo on
docker run -it ^
--env GETSSL_HOST=%OS%.getssl.test ^
--env GETSSL_IP=10.30.50.%IP% ^
--env NGINX_CONFIG=%NGINX% ^
-v %cd%:/getssl ^
--network getssl-timkimber_acmenet ^
--ip 10.30.50.%IP% ^
--network-alias %ALIAS% ^
--network-alias a.%OS%.getssl.test ^
--network-alias b.%OS%.getssl.test ^
--network-alias c.%OS%.getssl.test ^
--network-alias d.%OS%.getssl.test ^
--network-alias e.%OS%.getssl.test ^
--network-alias f.%OS%.getssl.test ^
--network-alias g.%OS%.getssl.test ^
--network-alias h.%OS%.getssl.test ^
--network-alias i.%OS%.getssl.test ^
--network-alias j.%OS%.getssl.test ^
--network-alias k.%OS%.getssl.test ^
getssl-%OS% ^
/getssl/test/run-bats.sh

Loading…
Cancel
Save