Merge pull request #783 from aaronlehmann/multiple-version-integration-testing
Run integration tests with multiple Docker engine versionsmaster
						commit
						12db5fc16b
					
				|  | @ -0,0 +1,54 @@ | |||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| # Run the integration tests with multiple versions of the Docker engine | ||||
| 
 | ||||
| set -e | ||||
| set -x | ||||
| 
 | ||||
| # Don't use /tmp because this isn't available in boot2docker | ||||
| tmpdir_template="`pwd`/docker-versions.XXXXX" | ||||
| tmpdir=`mktemp -d "$tmpdir_template"` | ||||
| trap "rm -rf $tmpdir" EXIT | ||||
| 
 | ||||
| # If DOCKER_VOLUME is unset, create a temporary directory to cache containers | ||||
| # between runs | ||||
| # Only do this on Linux, because using /var/lib/docker from a host volume seems | ||||
| # problematic with boot2docker. | ||||
| if [ "$DOCKER_VOLUME" = "" -a `uname` = "Linux" ]; then | ||||
| 	volumes_template="`pwd`/docker-versions.XXXXX" | ||||
| 	volume=`mktemp -d "$volumes_template"` | ||||
| 	trap "rm -rf $tmpdir $volume" EXIT | ||||
| else | ||||
| 	volume="$DOCKER_VOLUME" | ||||
| fi | ||||
| 
 | ||||
| # Released versions | ||||
| 
 | ||||
| versions="1.6.0 1.6.1 1.7.0 1.7.1" | ||||
| 
 | ||||
| for v in $versions; do | ||||
| 	echo "Extracting Docker $v from dind image" | ||||
| 	binpath="$tmpdir/docker-$v/docker" | ||||
| 	ID=$(docker create dockerswarm/dind:$v) | ||||
| 	docker cp "$ID:/usr/local/bin/docker" "$tmpdir/docker-$v" | ||||
| 
 | ||||
| 	echo "Running tests with Docker $v" | ||||
| 	DOCKER_BINARY="$binpath" DOCKER_VOLUME="$volume" ./run.sh | ||||
| 
 | ||||
| 	# Cleanup. | ||||
| 	docker rm -f "$ID" | ||||
| done | ||||
| 
 | ||||
| # Latest experimental version | ||||
| 
 | ||||
| echo "Extracting Docker master from dind image" | ||||
| binpath="$tmpdir/docker-master/docker" | ||||
| docker pull dockerswarm/dind-master | ||||
| ID=$(docker create dockerswarm/dind-master) | ||||
| docker cp "$ID:/usr/local/bin/docker" "$tmpdir/docker-master" | ||||
| 
 | ||||
| echo "Running tests with Docker master" | ||||
| DOCKER_BINARY="$binpath" DOCKER_VOLUME="$volume" ./run.sh | ||||
| 
 | ||||
| # Cleanup. | ||||
| docker rm -f "$ID" | ||||
|  | @ -13,6 +13,15 @@ function setup() { | |||
| 	docker pull $image | ||||
| } | ||||
| 
 | ||||
| # skip basic auth tests with Docker 1.6, where they don't pass due to | ||||
| # certificate issues | ||||
| function basic_auth_version_check() { | ||||
| 	run sh -c 'docker version | fgrep -q "Client version: 1.6."' | ||||
| 	if [ "$status" -eq 0 ]; then | ||||
| 		skip "Basic auth tests don't support 1.6.x" | ||||
| 	fi | ||||
| } | ||||
| 
 | ||||
| # has_digest enforces the last output line is "Digest: sha256:..." | ||||
| # the input is the name of the array containing the output lines | ||||
| function has_digest() { | ||||
|  | @ -35,6 +44,7 @@ function login() { | |||
| } | ||||
| 
 | ||||
| @test "Test basic auth" { | ||||
| 	basic_auth_version_check | ||||
| 	login $hostname:5441 | ||||
| 	docker tag -f $image $hostname:5441/$image | ||||
| 	run docker push $hostname:5441/$image | ||||
|  | @ -56,6 +66,7 @@ function login() { | |||
| } | ||||
| 
 | ||||
| @test "Test basic auth with TLS client auth" { | ||||
| 	basic_auth_version_check | ||||
| 	login $hostname:5444 | ||||
| 	docker tag -f $image $hostname:5444/$image | ||||
| 	run docker push $hostname:5444/$image | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue