#!/bin/bash

set -o errexit -o nounset -o pipefail

: "${TEST_VOLUME:=/var/vcap/store}"
: "${TEST_DURATION:=30}"
: "${MONITOR_INTERVAL=1s}"

script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
module_dir=$(cd "${script_dir}/.." && pwd)
repo_dir=$(cd "${module_dir}/../.." && pwd)

cd "${module_dir}"

run() {
  echo "\$ $*"
  "$@"
}

docker_build() {
  run docker build \
    --quiet \
    --file=bin/Dockerfile \
    --tag=mysql-metrics-test \
    .
}

docker_run() {
  run docker run \
    --volume="${repo_dir}:/workspace" \
    --volume=/var/run/docker.sock:/var/run/docker.sock \
    --volume=/var/vcap/store \
    --volume=/var/vcap/data \
    --env=TEST_VOLUME="${TEST_VOLUME}" \
    --env=TEST_DURATION="${TEST_DURATION}" \
    --env=MONITOR_INTERVAL="${MONITOR_INTERVAL}" \
    --privileged \
    --network=host \
    --workdir=/workspace/src/mysql-metrics \
    --rm \
    mysql-metrics-test \
    "$@"
}

docker_build
docker_run \
  go run github.com/onsi/ginkgo/v2/ginkgo \
  -r \
  --compilers=2 \
  --procs=4 \
  -race \
  --fail-on-pending \
  --randomize-all \
  --randomize-suites \
  "$@"
