#!/usr/bin/env bash set -euo pipefail . $(dirname "${BASH_SOURCE[0]}")/common.sh PORT=$(getRandomPort) log ' Testing unconnectable registry' if timeout 1s $DUB fetch dub --skip-registry=all --registry=http://localhost:$PORT; then die $LINENO 'Fetching from unconnectable registry should fail.' elif [ $? -eq 124 ]; then die $LINENO 'Fetching from unconnectable registry should fail immediately.' fi log ' Testing non-responding registry' cat | nc -l $PORT >/dev/null & PID=$! if timeout 10s $DUB fetch dub --skip-registry=all --registry=http://localhost:$PORT; then die $LINENO 'Fetching from non-responding registry should fail.' elif [ $? -eq 124 ]; then die $LINENO 'Fetching from non-responding registry should time-out within 8s.' fi kill $PID 2>/dev/null || true log ' Testing too slow registry' { res=$(printf 'HTTP/1.1 200 OK\r Server: dummy\r Content-Type: application/json\r Content-Length: 2\r \r {}') for i in $(seq 0 $((${#res} - 1))); do echo -n "${res:$i:1}" || true sleep 1 done } | tail -n +1 | nc -l $PORT >/dev/null & PID=$! if timeout 10s time $DUB fetch dub --skip-registry=all --registry=http://localhost:$PORT; then die $LINENO 'Fetching from too slow registry should fail.' elif [ $? -eq 124 ]; then die $LINENO 'Fetching from too slow registry should time-out within 8s.' fi kill $PID 2>/dev/null || true