Skip to content

Commit f0fea30

Browse files
authored
[WIP] Add bats QA tests (#90)
Add bats QA tests
1 parent c412cef commit f0fea30

File tree

9 files changed

+1031
-9
lines changed

9 files changed

+1031
-9
lines changed

.travis.yml

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,22 @@
11
sudo: required
22

3-
services:
3+
services:
44
- docker
55

6-
env:
6+
env:
77
global:
88
- DOCKER_VERSION=1.10.1-0~trusty
99
- DOCKER_COMPOSE_VERSION=1.7.1
1010

11-
before_install:
11+
before_install:
1212
# list docker-engine versions
1313
- apt-cache madison docker-engine
1414

15+
# add bats repo https://github.com/tkuchiki/bats-travis-ci
16+
- sudo add-apt-repository ppa:duggan/bats --yes
17+
- sudo apt-get update -qq
18+
- sudo apt-get install -qq bats
19+
1520
# upgrade docker-engine to specific version
1621
- sudo apt-get -o Dpkg::Options::="--force-confnew" install -y docker-engine=${DOCKER_VERSION}
1722

@@ -20,9 +25,10 @@ before_install:
2025
- curl -L https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > docker-compose
2126
- chmod +x docker-compose
2227
- sudo mv docker-compose /usr/local/bin
28+
- docker pull appropriate/curl:latest
2329

24-
script:
25-
- docker-compose build
30+
script:
31+
- bats test/test.full.bats
2632

2733
notifications:
2834
email: false

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ FROM debian:jessie
33
MAINTAINER Alt Three <[email protected]>
44

55
ARG cachet_ver
6-
ENV cachet_ver v2.3.0-RC2
6+
ENV cachet_ver v2.3.0-RC5
77

88
# Using debian packages instead of compiling from scratch
99
RUN DEBIAN_FRONTEND=noninteractive \

conf/nginx-site.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
server {
2-
listen 8000 default; ## Listen for ipv4; this line is default and implied
2+
listen 80 default; ## Listen for ipv4; this line is default and implied
33

44
# Make site accessible from http://localhost/
55
server_name localhost;

docker-compose.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ services:
44
nginx:
55
image: nginx:stable-alpine
66
volumes:
7-
- ./docker/nginx-site.conf:/etc/nginx/conf.d/default.conf
7+
- ./conf/nginx-site.conf:/etc/nginx/conf.d/default.conf
88
ports:
9-
- 80:8000
9+
- 80:80
1010
links:
1111
- cachet
1212
volumes_from:

test/docker_helpers.bash

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
## functions to help deal with docker
2+
3+
# Removes container $1
4+
function docker_clean {
5+
docker kill $1 &>/dev/null ||:
6+
sleep .25s
7+
docker rm -vf $1 &>/dev/null ||:
8+
sleep .25s
9+
}
10+
11+
# get the ip of docker container $1
12+
function docker_ip {
13+
docker inspect --format '{{ .NetworkSettings.Networks.docker_default.IPAddress }}' $1
14+
}
15+
16+
# get the id of docker container $1
17+
function docker_id {
18+
docker inspect --format '{{ .ID }}' $1
19+
}
20+
21+
# get the running state of container $1
22+
# → true/false
23+
# fails if the container does not exist
24+
function docker_running_state {
25+
docker inspect -f {{.State.Running}} $1
26+
}
27+
28+
# get the docker container $1 PID
29+
function docker_pid {
30+
docker inspect --format {{.State.Pid}} $1
31+
}
32+
33+
# asserts logs from container $1 contains $2
34+
function docker_assert_log {
35+
local -r container=$1
36+
shift
37+
run docker logs $container
38+
assert_output -p "$*"
39+
}
40+
41+
# wait for a container to produce a given text in its log
42+
# $1 container
43+
# $2 timeout in second
44+
# $* text to wait for
45+
function docker_wait_for_log {
46+
local -r container=$1
47+
local -ir timeout_sec=$2
48+
shift 2
49+
retry $(( $timeout_sec * 2 )) .5s docker_assert_log $container "$*"
50+
}
51+
52+
# Create a docker container named $1 which exposes the docker host unix
53+
# socket over tcp on port 2375.
54+
#
55+
# $1 container name
56+
function docker_tcp {
57+
local container_name="$1"
58+
docker_clean $container_name
59+
docker run -d \
60+
--label bats-type="socat" \
61+
--name $container_name \
62+
--expose 2375 \
63+
-v /var/run/docker.sock:/var/run/docker.sock \
64+
rancher/socat-docker
65+
docker run --label bats-type="docker" --link "$container_name:docker" docker:1.10 version
66+
}

0 commit comments

Comments
 (0)