#!/usr/bin/env bash
set -euo pipefail

# Make a hash of all ports in use.
declare -A USED_PORTS
for port in $(ss -Htan | awk '{print $4}' | cut -d: -f2); do
    USED_PORTS[$port]=''
done

# Select a random, unused port
PORT=${RANDOM}
while [[ ${USED_PORTS[$PORT]+isset} ]]; do
    PORT=${RANDOM}
done

# Now, the real thing: run endlessh, confirm that the ssh client hangs “forever”
## Start endlessh, kill it on exit
trap 'kill %1' EXIT
set -x
endlessh -f /dev/null -p ${PORT} -v &

## Attempt to ssh in
set +e
timeout 1m ssh -v -p ${PORT} localhost

## Error unless timed out
[[ $? == 124 ]] || exit 1
