You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
boundary/internal/tests/cli/test.sh

65 lines
1.7 KiB

#!/usr/bin/env bash
# Copyright IBM Corp. 2020, 2026
# SPDX-License-Identifier: BUSL-1.1
# TERM isn't set automatically in CI so we need to make sure it's always there.
export TERM=${TERM:=dumb}
function die {
echo $*
exit -1
}
# error out early if missing a command
which boundary || die "missing boundary"
which jq || die "missing jq"
which bats || die "missing bats"
which nc || die "missing nc"
echo "starting boundary dev in background"
boundary dev --create-loopback-plugin &>/dev/null &
boundary_pid=$!
function cleanup {
rv=$?
echo "stopping boundary dev"
if [[ -n ${boundary_pid} ]]; then
kill ${boundary_pid}
fi
exit $rv
}
trap cleanup EXIT
max=120
c=0
until boundary scopes list; do
echo 'waiting for boundary to be up'
((c+=1))
if [[ $c -ge $max ]]; then
die "timeout waiting for boundary controller to get healthy"
fi
sleep 1
done
c=0
until curl -s http://localhost:9203/health\?worker_info\=1 | jq -e '.worker_process_info.upstream_connection_state == "READY"' > /dev/null; do
echo 'waiting for boundary worker to be up'
((c+=1))
if [[ $c -ge $max ]]; then
die "timeout waiting for boundary worker to get healthy"
fi
sleep 1
done
# Wait a little longer to ensure the worker is fully ready before we start
# running tests. Without this, there were some flaky tests, specifically when
# trying to connect to a target in the alias tests (those are the first to run).
# The worker health check alone was not sufficient during testing, and it was
# not clear what else could be checked to ensure the worker was fully ready.
sleep 10
echo "running bats tests"
bats -p ./boundary