diff options
| -rw-r--r-- | tests/topotests/docker/README.md | 27 | ||||
| -rwxr-xr-x | tests/topotests/docker/frr-topotests.sh | 7 |
2 files changed, 28 insertions, 6 deletions
diff --git a/tests/topotests/docker/README.md b/tests/topotests/docker/README.md index cdc41fad52..2b40994cf6 100644 --- a/tests/topotests/docker/README.md +++ b/tests/topotests/docker/README.md @@ -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 +``` diff --git a/tests/topotests/docker/frr-topotests.sh b/tests/topotests/docker/frr-topotests.sh index 8e93ed31ff..6d8bea0002 100755 --- a/tests/topotests/docker/frr-topotests.sh +++ b/tests/topotests/docker/frr-topotests.sh @@ -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" \ |
