Merge pull request #783 from aaronlehmann/multiple-version-integration-testing
Run integration tests with multiple Docker engine versions
This commit is contained in:
commit
12db5fc16b
2 changed files with 65 additions and 0 deletions
54
contrib/docker-integration/run_multiversion.sh
Executable file
54
contrib/docker-integration/run_multiversion.sh
Executable file
|
@ -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
|
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:..."
|
# has_digest enforces the last output line is "Digest: sha256:..."
|
||||||
# the input is the name of the array containing the output lines
|
# the input is the name of the array containing the output lines
|
||||||
function has_digest() {
|
function has_digest() {
|
||||||
|
@ -35,6 +44,7 @@ function login() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "Test basic auth" {
|
@test "Test basic auth" {
|
||||||
|
basic_auth_version_check
|
||||||
login $hostname:5441
|
login $hostname:5441
|
||||||
docker tag -f $image $hostname:5441/$image
|
docker tag -f $image $hostname:5441/$image
|
||||||
run docker push $hostname:5441/$image
|
run docker push $hostname:5441/$image
|
||||||
|
@ -56,6 +66,7 @@ function login() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "Test basic auth with TLS client auth" {
|
@test "Test basic auth with TLS client auth" {
|
||||||
|
basic_auth_version_check
|
||||||
login $hostname:5444
|
login $hostname:5444
|
||||||
docker tag -f $image $hostname:5444/$image
|
docker tag -f $image $hostname:5444/$image
|
||||||
run docker push $hostname:5444/$image
|
run docker push $hostname:5444/$image
|
||||||
|
|
Loading…
Reference in a new issue