#!/usr/bin/env bash

# Run the integration tests with multiple versions of the Docker engine

set -e
set -x

DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)


if [ "$TMPDIR" != "" ] && [ ! -d "$TMPDIR" ]; then
	mkdir -p $TMPDIR
fi

cachedir=`mktemp -t -d golem-cache.XXXXXX`
trap "rm -rf $cachedir" EXIT

if [ "$1" == "-d" ]; then
       # Drivers to use for Docker engines the tests are going to create.
       STORAGE_DRIVER=${STORAGE_DRIVER:-overlay}

       docker daemon --log-level=panic --storage-driver="$STORAGE_DRIVER" &
       DOCKER_PID=$!

       # Wait for it to become reachable.
       tries=10
       until docker version &> /dev/null; do
               (( tries-- ))
               if [ $tries -le 0 ]; then
                       echo >&2 "error: daemon failed to start"
                       exit 1
               fi
               sleep 1
       done

       trap "kill $DOCKER_PID" EXIT
fi

distimage=$(docker build -q $DIR/../..)
fullversion=$(git describe --match 'v[0-9]*' --dirty='.m' --always)
distversion=${fullversion:1}

echo "Testing image $distimage with distribution version $distversion"

# Pull needed images before invoking golem to get pull time
# These images are defined in golem.conf
time docker pull nginx:1.9
time docker pull golang:1.6
time docker pull dmcgowan/token-server:simple
time docker pull dmcgowan/token-server:oauth
time docker pull distribution/golem-runner:0.1-bats

time docker pull docker:1.9.1-dind
time docker pull docker:1.10.3-dind
time docker pull docker:1.11.1-dind
time docker pull docker:1.12.3-dind
time docker pull docker:1.13.0-rc5-dind

golem -cache $cachedir \
	-i "golem-distribution:latest,$distimage,$distversion" \
	-i "golem-dind:latest,docker:1.9.1-dind,1.9.1" \
	-i "golem-dind:latest,docker:1.10.3-dind,1.10.3" \
	-i "golem-dind:latest,docker:1.11.1-dind,1.11.1" \
	-i "golem-dind:latest,docker:1.12.3-dind,1.12.3" \
	-i "golem-dind:latest,docker:1.13.0-rc5-dind,1.13.0" \
	$DIR

