74 lines
2.5 KiB
Bash
74 lines
2.5 KiB
Bash
|
|
#!/usr/bin/env bash
|
|||
|
|
# 标注 API 冒烟:离线单元测试始终运行;API 部分需 platform 在 :8787(可用 HSAP_API_SKIP=1 跳过)
|
|||
|
|
set -euo pipefail
|
|||
|
|
BASE="${HSAP_API:-http://127.0.0.1:8787}"
|
|||
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|||
|
|
|
|||
|
|
echo "==> offline export_ls_to_yolo unit tests"
|
|||
|
|
python3 "$ROOT/datasets/dms/scripts/test_export_ls_to_yolo.py"
|
|||
|
|
|
|||
|
|
echo "==> offline export_ls_to_lane_gt unit tests"
|
|||
|
|
python3 "$ROOT/datasets/lane/scripts/test_export_ls_to_lane_gt.py"
|
|||
|
|
|
|||
|
|
if [[ "${HSAP_API_SKIP:-0}" == "1" ]]; then
|
|||
|
|
echo "SKIP API tests (HSAP_API_SKIP=1)"
|
|||
|
|
echo "OK (offline only)"
|
|||
|
|
exit 0
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo "==> check platform $BASE"
|
|||
|
|
LOGIN_RESP=$(curl -sS -m 5 -X POST "$BASE/api/v1/auth/dev/login" \
|
|||
|
|
-H 'Content-Type: application/json' -d '{"name":"smoke"}' 2>&1) || LOGIN_RESP=""
|
|||
|
|
|
|||
|
|
TOKEN=$(printf '%s' "$LOGIN_RESP" | python3 -c "
|
|||
|
|
import sys, json
|
|||
|
|
raw = sys.stdin.read().strip()
|
|||
|
|
if not raw:
|
|||
|
|
sys.exit(1)
|
|||
|
|
try:
|
|||
|
|
data = json.loads(raw)
|
|||
|
|
except json.JSONDecodeError:
|
|||
|
|
sys.exit(1)
|
|||
|
|
tok = data.get('access_token')
|
|||
|
|
if not tok:
|
|||
|
|
print(data.get('detail') or data, file=sys.stderr)
|
|||
|
|
sys.exit(1)
|
|||
|
|
print(tok)
|
|||
|
|
" 2>/dev/null) || {
|
|||
|
|
echo "SKIP API tests: platform 未就绪 ($BASE)"
|
|||
|
|
echo " 启动: cd $ROOT && docker compose up -d platform"
|
|||
|
|
echo " 或: bash $ROOT/scripts/run_local.sh"
|
|||
|
|
echo " 仅跑离线测试可: HSAP_API_SKIP=1 bash $0"
|
|||
|
|
echo "OK (offline only)"
|
|||
|
|
exit 0
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
AUTH="Authorization: Bearer $TOKEN"
|
|||
|
|
|
|||
|
|
echo "==> labeling/batches"
|
|||
|
|
curl -sS -H "$AUTH" "$BASE/api/v1/labeling/batches" | python3 -m json.tool | head -40
|
|||
|
|
|
|||
|
|
CID=$(curl -sS -H "$AUTH" "$BASE/api/v1/labeling/batches" | python3 -c "
|
|||
|
|
import sys,json
|
|||
|
|
items=json.load(sys.stdin).get('items',[])
|
|||
|
|
dam=[i for i in items if i.get('task')=='dam' and '0516' in str(i.get('batch',''))]
|
|||
|
|
print(dam[0]['campaign_id'] if dam else (items[0]['campaign_id'] if items else ''))
|
|||
|
|
")
|
|||
|
|
|
|||
|
|
if [[ -z "$CID" ]]; then
|
|||
|
|
echo "open campaign dam/batch_0516"
|
|||
|
|
CID=$(curl -sS -X POST -H "$AUTH" -H 'Content-Type: application/json' \
|
|||
|
|
"$BASE/api/v1/labeling/campaigns/open" \
|
|||
|
|
-d '{"project":"dms","task":"dam","batch":"batch_0516","mode":"batch_0516","location":"inbox"}' \
|
|||
|
|
| python3 -c "import sys,json; print(json.load(sys.stdin).get('id',''))")
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo "campaign_id=$CID"
|
|||
|
|
echo "==> bootstrap"
|
|||
|
|
curl -sS -H "$AUTH" "$BASE/api/v1/labeling/campaigns/$CID/bootstrap" | python3 -m json.tool | head -25
|
|||
|
|
echo "==> tasks"
|
|||
|
|
curl -sS -H "$AUTH" "$BASE/api/v1/labeling/campaigns/$CID/tasks?limit=3" | python3 -m json.tool | head -30
|
|||
|
|
echo "==> export"
|
|||
|
|
curl -sS -X POST -H "$AUTH" "$BASE/api/v1/labeling/campaigns/$CID/export" | python3 -m json.tool
|
|||
|
|
echo "OK"
|