#!/bin/sh

# This test requires cobra to be available
which cobra > /dev/null || {
    echo cobra is not installed on this machine.
    exit 0
}

# Handle Ctrl-C by killing all sub-processing AND exiting
trap cleanup INT

function cleanup {
    exit_code=${1:-1}
    echo "Killing all servers (ws and cobra)"
    echo
    kill `cat /tmp/pidfile.proxy`  &>/dev/null
    kill `cat /tmp/pidfile.echo_server`  &>/dev/null
    kill `cat /tmp/pidfile.cobra`  &>/dev/null
    kill `cat /tmp/pidfile.connect.echo`  &>/dev/null
    kill `cat /tmp/pidfile.connect.cobra`  &>/dev/null
    exit ${exit_code}
}

ws proxy_server --pidfile /tmp/pidfile.proxy --config_path proxyConfig.json &
ws echo_server --pidfile /tmp/pidfile.echo_server --port 8009 &
cobra -v run --pidfile /tmp/pidfile.cobra --port 5678 &

# Wait for the servers to be up
sleep 1

# unbuffer comes with expect (written in tcl)
echo 'hello' | unbuffer ws connect --pidfile /tmp/pidfile.connect.echo ws://echo.localhost:8008 &

echo 'hello' | unbuffer ws connect --pidfile /tmp/pidfile.connect.cobra ws://cobra.localhost:8008 &

# Wait
sleep 2

cleanup