Criando ambientes isolados para testes integrados com Docker
O problema...
"O sistema deve garantir apenas um Job em importação por vez."
<requisito funcional>

Algumas possíveis soluções...
Mock do database/cenário?
Teste parcialmente integrado.
Drop/create tables before/after tests?
Baixa performance / alta complexidade.
Um database exclusivo?
Consistência do cenário.
Custo de infra dedicada.
A nossa solução!
(passo a passo)
1 - Preparamos um cenário consistente
2 - Dump
PGPASSWORD=123456 pg_dump -h 192.168.x.x -U <user> -d <database> -F p -n <schema> -T <schema>.<ignoreTable> > dump.sql
3 - Dockerizar tudo
docker rm -f rabbit 2> /dev/null
docker run --name rabbit -d -p 5672:5672 -p 15672:15672 mikaelhg/docker-rabbitmq
docker rm -f mongo 2> /dev/null
docker run -d --name mongo -p 27017:27017 -p 28017:28017 -e AUTH=no tutum/mongodb
docker rm -f psql 2> /dev/null
docker run -d --name psql -p 5432:5432 -e "DB=xxx" -e "PASS=123456" -e "USER=xxx" centurylink/postgresql:9.3
4 - Automatizar dump restore
docker rm -f rabbit 2> /dev/null
docker run --name rabbit -d -p 5672:5672 -p 15672:15672 mikaelhg/docker-rabbitmq
docker rm -f mongo 2> /dev/null
docker run -d --name mongo -p 27017:27017 -p 28017:28017 -e AUTH=no tutum/mongodb
docker rm -f psql 2> /dev/null
docker run -d --name psql -p 5432:5432 -e "DB=xxx" -e "PASS=123456" -e "USER=xxx" centurylink/postgresql:9.3
PGPASSWORD="123456" psql -h 192.168.x.x -U xxx -d xxx -f dump.sql
5 - Shellscript é vida
docker rm -f rabbit 2> /dev/null
docker run --name rabbit -d -p 5672:5672 -p 15672:15672 mikaelhg/docker-rabbitmq
docker rm -f mongo 2> /dev/null
docker run -d --name mongo -p 27017:27017 -p 28017:28017 -e AUTH=no tutum/mongodb
docker rm -f psql 2> /dev/null
docker run -d --name psql -p 5432:5432 -e "DB=xxx" -e "PASS=123456" -e "USER=xxx" centurylink/postgresql:9.3
PGPASSWORD="123456" psql -h 192.168.x.x -U xxx -d xxx -f dump.sql
... others containers ...
cd tests-automation-framework
mvn test
Quais as desvantagens?
Manter o cenário
++TestOps
Quais as vantagens?
Alto isolamento
Performance dos Containers
Um passo para a economia
Dúvidas?
Obrigado!
Criando ambientes isolados para testes com Docker
By Ricardo Longa
Criando ambientes isolados para testes com Docker
- 2,067