#!/bin/sh

export DEBIAN_FRONTEND=noninteractive

wait_for() {
  host="${1}"
  port="${2}"
  name="${3}"
  timeout="30"

  if command -v nc > /dev/null ; then
    netcat="nc"
  elif command -v netcat > /dev/null ; then
    netcat="netcat"
  else
    printf "Unable to find a usable netcat command.\n"
    return 1
  fi

  printf "Waiting for %s on %s:%s ... " "${name}" "${host}" "${port}"

  sleep 30

  i=0
  while ! ${netcat} -z "${host}" "${port}"; do
    sleep 1
    if [ "$i" -gt "$timeout" ]; then
      printf "Timed out!\n"
      return 1
    fi
    i="$((i + 1))"
  done
  printf "OK\n"
}

if [ -z "$(command -v nc 2>/dev/null)" ] && [ -z "$(command -v netcat 2>/dev/null)" ]; then
    sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get install -y netcat
fi

docker run -d --name=netdata \
           -p 19999:19999 \
           -v netdataconfig:/etc/netdata \
           -v netdatalib:/var/lib/netdata \
           -v netdatacache:/var/cache/netdata \
           -v /etc/passwd:/host/etc/passwd:ro \
           -v /etc/group:/host/etc/group:ro \
           -v /proc:/host/proc:ro \
           -v /sys:/host/sys:ro \
           -v /etc/os-release:/host/etc/os-release:ro \
           --cap-add SYS_PTRACE \
           --security-opt apparmor=unconfined \
           netdata/netdata:test

wait_for localhost 19999 netdata || exit 1

curl -sS http://127.0.0.1:19999/api/v1/info > ./response || exit 1

cat ./response

jq '.version' ./response || exit 1
