argus/src/sys/tests/scripts/04_verify_dns_routing.sh

51 lines
1.6 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
TEST_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
# 直接根据 container_name 获取容器ID避免 compose project 名称不一致导致查找失败
cid_by_name() {
docker ps -aqf "name=^$1$"
}
echo "[INFO] Verifying DNS routing via bind..."
pushd "$TEST_ROOT" >/dev/null
# Check master IP file exists in shared private
MASTER_FILE="$TEST_ROOT/private/argus/etc/master.argus.com"
if [[ ! -f "$MASTER_FILE" ]]; then
echo "[ERR] master.argus.com file missing at $MASTER_FILE" >&2
exit 1
fi
MASTER_IP_HOST="$(cat "$MASTER_FILE" | tr -d '\r\n' || true)"
echo "[INFO] master.argus.com file content: ${MASTER_IP_HOST}"
# dig inside bind container
BIN_ID="$(cid_by_name argus-bind-sys)"
if [[ -n "$BIN_ID" ]]; then
DIG_IP="$(docker exec "$BIN_ID" dig +short master.argus.com A | tail -n1 || true)"
echo "[INFO] dig(master.argus.com) from bind container -> $DIG_IP"
if [[ -z "$DIG_IP" ]]; then
echo "[ERR] bind did not resolve master.argus.com" >&2; exit 1
fi
else
echo "[WARN] bind container not found; skip dig"
fi
for node in argus-node-a argus-node-b; do
CID="$(cid_by_name "$node")"
echo "[INFO] Checking resolution inside $node..."
if ! docker exec "$CID" getent hosts master.argus.com >/dev/null 2>&1; then
echo "[ERR] $node cannot resolve master.argus.com" >&2
exit 1
fi
RES="$(docker exec "$CID" getent hosts master.argus.com | awk '{print $1}' | head -n1)"
echo "[OK] $node resolved master.argus.com -> $RES"
done
popd >/dev/null
echo "[OK] DNS routing verified"