42 lines
1.2 KiB
Bash
Executable File
42 lines
1.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
TEST_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
PRIVATE_ROOT="$TEST_ROOT/private"
|
|
TMP_ROOT="$TEST_ROOT/tmp"
|
|
API_BASE="http://localhost:31300/api/v1/master"
|
|
NODE_ID="$(cat "$TMP_ROOT/node_id")"
|
|
|
|
sleep 7
|
|
|
|
detail_file="$TMP_ROOT/offline_detail.json"
|
|
curl -sS "$API_BASE/nodes/$NODE_ID" -o "$detail_file"
|
|
python3 - "$detail_file" <<'PY'
|
|
import json, sys
|
|
with open(sys.argv[1]) as handle:
|
|
node = json.load(handle)
|
|
assert node["status"] == "offline", f"Expected offline, got {node['status']}"
|
|
PY
|
|
|
|
stats_file="$TMP_ROOT/stats.json"
|
|
curl -sS "$API_BASE/nodes/statistics" -o "$stats_file"
|
|
python3 - "$stats_file" <<'PY'
|
|
import json, sys
|
|
with open(sys.argv[1]) as handle:
|
|
stats = json.load(handle)
|
|
assert stats["total"] == 1
|
|
found = {item["status"]: item["count"] for item in stats["status_statistics"]}
|
|
assert found.get("offline") == 1
|
|
PY
|
|
|
|
nodes_json_path="$PRIVATE_ROOT/argus/metric/prometheus/nodes.json"
|
|
python3 - "$nodes_json_path" <<'PY'
|
|
import json, sys
|
|
with open(sys.argv[1]) as handle:
|
|
content = json.load(handle)
|
|
assert content == [], content
|
|
PY
|
|
|
|
echo "[INFO] Offline transition and statistics validated"
|