Travis CI setup for integration testing (fixes #530).

Candidate issues to be addressed:

- race condition: start.sh might fail to start Boulder WFE before
  ./tests/boulder-integration.sh is run (unlikely, but possible,
  leading to flaky tests)

- intertwined build logs (./start.sh boostraps in the background,
  integration test debug logs on server and client side)
This commit is contained in:
Jakub Warmuz 2015-06-25 08:26:02 +00:00
parent 8bde250ff2
commit e0bc6aeb50
No known key found for this signature in database
GPG key ID: 2A7BAD3A489B52EA
3 changed files with 35 additions and 16 deletions

View file

@ -3,19 +3,24 @@ language: python
# http://docs.travis-ci.com/user/ci-environment/#CI-environment-OS
before_install: travis_retry sudo ./bootstrap/ubuntu.sh
install: "travis_retry pip install tox coveralls"
script: "travis_retry tox"
after_success: '[ "$TOXENV" == "cover" ] && coveralls'
# using separate envs with different TOXENVs creates 4x1 Travis build
# matrix, which allows us to clearly distinguish which component under
# test has failed
env:
- TOXENV=py26
- TOXENV=py27
- TOXENV=lint
- TOXENV=cover
global:
- GOPATH=/tmp/go
matrix:
- TOXENV=py26
- TOXENV=py27
- TOXENV=lint
- TOXENV=cover
install: "travis_retry pip install tox coveralls"
before_script: '[ "${TOXENV:0:2}" != "py" ] || ./tests/boulder-start.sh'
# TODO: eliminate substring slice bashism
script: 'travis_retry tox && ([ "${TOXENV:0:2}" != "py" ] || (source .tox/$TOXENV/bin/activate && ./tests/boulder-integration.sh))'
after_success: '[ "$TOXENV" == "cover" ] && coveralls'
notifications:
email: false

View file

@ -1,8 +1,10 @@
#!/bin/sh
# Simple integration test, run as "./boulder-integration.sh auth" or
# adjust parameters: "./boulder-integration.sh --domain bang auth".
#!/bin/sh -xe
# Simple integration test, make sure to activate virtualenv beforehand
# (source venv/bin/activate) and that you are running Boulder test
# instance (see ./boulder-start.sh).
root="$(mktemp -d)"
echo "\nRoot integration tests directory: $root"
# first three flags required, rest is handy defaults
letsencrypt \
@ -17,7 +19,4 @@ letsencrypt \
--domains le.wtf \
--authenticator standalone \
-vvvvvvv \
"$@"
# print at the end, so it's more visible
echo "\nRoot integration tests directory: $root"
auth

15
tests/boulder-start.sh Executable file
View file

@ -0,0 +1,15 @@
#!/bin/sh -xe
# Download and run Boulder instance for integration testing
export GOPATH="${GOPATH:-/tmp/go}"
# $ go get github.com/letsencrypt/boulder
# package github.com/letsencrypt/boulder
# imports github.com/letsencrypt/boulder
# imports github.com/letsencrypt/boulder: no buildable Go source files in /tmp/go/src/github.com/letsencrypt/boulder
go get -d github.com/letsencrypt/boulder/cmd/boulder
cd $GOPATH/src/github.com/letsencrypt/boulder
make -j4 # Travis has 2 cores per build instance.
./start.sh &
# Hopefully start.sh bootstraps before integration test is started...