summaryrefslogtreecommitdiff
path: root/scripts/docker/helper/run-test.sh
blob: c3bdd00c49d1cd7f84a03ee3258dfabb007ebd1b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/bin/sh

# Run 2 docker images, one with soledad server and another with a soledad
# client running a test.
#
# As there are many possible, tests, you have to pass an argument to the
# script saying which test you want to run. Currently, possible values are
# "connect" and "perf".
#
# After launching the server container, the script waits for TIMEOUT seconds
# for it to come up. If we fail to detect the server, the script exits with
# nonzero status.

# seconds to wait before giving up waiting from server
TIMEOUT=20

# parse command
if [ ${#} -ne 1 ]; then
  echo "Usage: ${0} perf|bootstrap"
  exit 1
fi

test=${1}

if [ "${test}" != "perf" -a "${test}" != "bootstrap" ]; then
  echo "Usage: ${0} perf|bootstrap"
  exit 1
fi

# make sure the image is up to date
make image

# get script name and path
script=$(readlink -f "$0")
scriptpath=$(dirname "${script}")

# run the server
tempfile=`mktemp -u`
make run-server CONTAINER_ID_FILE=${tempfile}

# wait for server until timeout
container_id=`cat ${tempfile}`
server_ip=`${scriptpath}/get-container-ip.sh ${container_id}`
start=`date +%s`
elapsed=0

echo "Waiting for soledad server container to come up..."

while [ ${elapsed} -lt ${TIMEOUT} ]; do
  curl -s http://${server_ip}:2424 > /dev/null
  if [ ${?} -eq 0 ]; then
    echo "Soledad server container is up!"
    break
  else
    sleep 1
  fi
  now=`date +%s`
  elapsed=`expr ${now} - ${start}`
done

# exit with an error code if timed out waiting for server
if [ ${elapsed} -ge ${TIMEOUT} ]; then
  echo "Error: server unreachable at ${server_ip} after ${TIMEOUT} seconds."
  exit 1
fi

set -e

# run the test
make run-client-${test} CONTAINER_ID_FILE=${tempfile}
rm -r ${tempfile}