Merge pull request #20 from bfirsh/add-ci-test-for-docker-cloud

Docker Cloud stack file and CI tests
This commit is contained in:
Ben Firshman 2016-06-18 18:29:31 +02:00 committed by GitHub
commit c6a5cc9b1c
5 changed files with 128 additions and 0 deletions

33
dockercloud.yml Normal file
View File

@ -0,0 +1,33 @@
db:
image: 'postgres:9.4'
restart: always
redis:
image: 'redis:latest'
restart: always
result-app:
autoredeploy: true
image: 'instavote/result-app:latest'
ports:
- '80:80'
restart: always
lb:
autoredeploy: true
image: 'dockercloud/haproxy:latest'
links:
- voting-app
ports:
- "80:80"
roles:
- global
restart: always
voting-app:
autoredeploy: true
image: 'instavote/voting-app:latest'
restart: always
target_num_containers: 5
worker:
autoredeploy: true
image: 'instavote/worker:latest'
restart: always
target_num_containers: 3

View File

@ -0,0 +1,60 @@
version: '2'
services:
sut:
build: ./tests/
depends_on:
- voting-app
- result-app
- worker
networks:
- front-tier
voting-app:
build: ../voting-app/
ports: ["80"]
depends_on:
- redis
- db
networks:
- front-tier
- back-tier
result-app:
build: .
ports: ["80"]
depends_on:
- redis
- db
networks:
- front-tier
- back-tier
worker:
build: ../worker/
depends_on:
- redis
- db
networks:
- back-tier
redis:
image: redis:alpine
ports: ["6379"]
networks:
- back-tier
db:
image: postgres:9.4
volumes:
- "db-data:/var/lib/postgresql/data"
networks:
- back-tier
volumes:
db-data:
networks:
front-tier:
back-tier:

View File

@ -0,0 +1,5 @@
FROM node
RUN npm install -g phantomjs
ADD . /app
WORKDIR /app
CMD ["/app/tests.sh"]

View File

@ -0,0 +1,15 @@
var system = require('system');
var page = require('webpage').create();
var url = system.args[1];
page.onLoadFinished = function() {
setTimeout(function(){
console.log(page.content);
phantom.exit();
}, 1000);
};
page.open(url, function() {
page.evaluate(function() {
});
});

15
result-app/tests/tests.sh Executable file
View File

@ -0,0 +1,15 @@
#!/bin/sh
while ! timeout 1 bash -c "echo > /dev/tcp/voting-app/80"; do sleep 1; done
curl -sS -X POST --data "vote=a" http://voting-app > /dev/null
curl -sS -X POST --data "vote=b" http://voting-app > /dev/null
sleep 10
if phantomjs render.js http://result-app | grep -q '2 votes'; then
echo -e "\e[42m------------"
echo -e "\e[92mTests passed"
echo -e "\e[42m------------"
exit 0
fi
echo -e "\e[41m------------"
echo -e "\e[91mTests failed"
echo -e "\e[41m------------"
exit 1