distribution/contrib/docker-integration
Derek McGowan ef859e1b21
Merge pull request #2474 from vikstrous/disable-v1-master
disable schema1 by default, add a config flag to enable it
2018-08-24 10:58:39 -07:00
..
malevolent-certs Update certificates 2018-05-21 16:00:52 -07:00
nginx Update certificates 2018-05-21 16:00:52 -07:00
tokenserver disable schema1 by default, add a config flag to enable it 2017-12-19 10:23:25 -08:00
tokenserver-oauth disable schema1 by default, add a config flag to enable it 2017-12-19 10:23:25 -08:00
docker-compose.yml Add plugin push/pull tests 2017-01-09 16:44:37 -08:00
Dockerfile Add temporary cache directory 2016-04-04 19:57:40 -07:00
golem.conf Add plugin push/pull tests 2017-01-09 16:44:37 -08:00
helpers.bash Update login helpers to handle email removal 2017-01-09 16:44:36 -08:00
install_certs.sh Add v1 search with v2 token auth test 2016-07-13 17:03:14 -07:00
malevolent.bats Support docker 1.12 2016-11-23 13:33:19 -08:00
plugins.bats Remove container after export 2017-01-09 16:44:37 -08:00
README.md Integration test readme update 2016-04-12 14:03:56 -07:00
run_multiversion.sh Add test for 1.13 2017-01-09 16:44:37 -08:00
tls.bats Update login helpers to handle email removal 2017-01-09 16:44:36 -08:00
token.bats Update login helpers to handle email removal 2017-01-09 16:44:36 -08:00

Docker Registry Integration Testing

These integration tests cover interactions between registry clients such as the docker daemon and the registry server. All tests can be run using the golem integration test runner

The integration tests configure components using docker compose (see docker-compose.yaml) and the runner can be using the golem configuration file (see golem.conf).

Running integration tests

Run using multiversion script

The integration tests in the contrib/docker-integration directory can be simply run by executing the run script ./run_multiversion.sh. If there is no running daemon to connect to, run as ./run_multiversion.sh -d.

This command will build the distribution image from the locally checked out version and run against multiple versions of docker defined in the script. To run a specific version of the registry or docker, Golem will need to be executed manually.

Run manually using Golem

Using the golem tool directly allows running against multiple versions of the registry and docker. Running against multiple versions of the registry can be useful for testing changes in the docker daemon which are not covered by the default run script.

Installing Golem

Golem is distributed as an executable binary which can be installed from the release page.

Running golem with docker

Additionally golem can be run as a docker image requiring no additonal installation.

docker run --privileged -v "$GOPATH/src/github.com/docker/distribution/contrib/docker-integration:/test" -w /test distribution/golem golem -rundaemon .

Golem custom images

Golem tests version of software by defining the docker image to test.

Run with registry 2.2.1 and docker 1.10.3

golem -i golem-dind:latest,docker:1.10.3-dind,1.10.3 -i golem-distribution:latest,registry:2.2.1 .

Use golem caching for developing tests

Golem allows caching image configuration to reduce test start up time. Using this cache will allow tests with the same set of images to start up quickly. This can be useful when developing tests and needing the test to run quickly. If there are changes which effect the image (such as building a new registry image), then startup time will be slower.

Run this command multiple times and after the first time test runs should start much quicker. golem -cache ~/.cache/docker/golem -i golem-dind:latest,docker:1.10.3-dind,1.10.3 -i golem-distribution:latest,registry:2.2.1 .