Merge pull request #3459 from opensourcerouting/feature/topotests-registry

tests/topotests: Pull docker image from registry
This commit is contained in:
Donald Sharp 2018-12-11 12:19:37 -05:00 committed by GitHub
commit 33fc89ddf2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 6 deletions

View File

@ -10,19 +10,15 @@ Your current user needs to have access to the Docker daemon. Alternatively
you can run these commands as root.
```console
make topotests-build
make topotests
```
The first command will build a docker image with all the dependencies needed
to run the topotests.
The second command will spawn an instance of this image, compile FRR inside
This command will pull the most recent topotests image from dockerhub, compile FRR inside
of it, and run the topotests.
## Advanced Usage
Internally, the topotests make target uses a shell script to spawn the docker
Internally, the topotests make target uses a shell script to pull the image and spawn the docker
container.
There are several environment variables which can be used to modify the behavior
@ -55,3 +51,22 @@ And to compile FRR but drop into a shell instead of running pytest:
```console
./tests/topotests/docker/frr-topotests.sh /bin/bash
```
## Development
The docker image just includes all the components to run the topotests, but not the topotests
themselves. So if you just want to write tests and don't want to make changes to the environment
provided by the docker image. You don't need to build your own docker image if you do not want to.
When developing new tests, there is one caveat though: The startup script of the container will
run a `git-clean` on its copy of the FRR tree to avoid any pollution of the container with build
artefacts from the host. This will also result in your newly written tests being unavailable in the
container unless at least added to the index with `git-add`.
If you do want to test changes to the docker image, you can locally build the image and run the tests
without pulling from the registry using the following commands:
```console
make topotests-build
TOPOTEST_PULL=0 make topotests
```

View File

@ -61,6 +61,9 @@ if [[ "$1" = "-h" ]] || [[ "$1" = "--help" ]]; then
TOPOTEST_OPTIONS These options are appended to the docker-run
command for starting the tests.
TOPOTEST_PULL If set to 0, don't try to pull the most recent
version of the docker image from dockerhub.
TOPOTEST_SANITIZER Controls whether to use the address sanitizer.
Enabled by default, set to 0 to disable.
@ -132,6 +135,10 @@ if [ -z "$TOPOTEST_BUILDCACHE" ]; then
|| docker volume create "${TOPOTEST_BUILDCACHE}"
fi
if [ "${TOPOTEST_PULL:-1}" = "1" ]; then
docker pull frrouting/frr:topotests-latest
fi
set -- --rm -i \
-v "$TOPOTEST_LOGS:/tmp" \
-v "$TOPOTEST_FRR:/root/host-frr:ro" \