| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #!/usr/bin/env bash
- # Lobster travel full-chain validation (calls running fs-saas-company :8006).
- # Usage:
- # cd java/scripts && chmod +x lobster_travel_full_validation.sh
- # ./lobster_travel_full_validation.sh
- # API_BASE=http://127.0.0.1:8006 COMPANY_ID=338 TENANT_ID=33 ./lobster_travel_full_validation.sh
- # SKIP_STRESS=1 ./lobster_travel_full_validation.sh
- set -euo pipefail
- API_BASE="${API_BASE:-http://127.0.0.1:8006}"
- COMPANY_ID="${COMPANY_ID:-338}"
- TENANT_ID="${TENANT_ID:-33}"
- OPS_SECRET="${OPS_SECRET:-lobster-dev-ops}"
- SKIP_STRESS="${SKIP_STRESS:-0}"
- DIALOGUE_INDUSTRY="${DIALOGUE_INDUSTRY:-travel}"
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
- REPORT_DIR="${SCRIPT_DIR}/reports"
- STAMP="$(date +%Y%m%d-%H%M%S)"
- REPORT_FILE="${REPORT_DIR}/lobster-travel-validation-${STAMP}.json"
- mkdir -p "${REPORT_DIR}"
- echo "=== Lobster Travel Full Validation ==="
- echo "ApiBase=${API_BASE} CompanyId=${COMPANY_ID} TenantId=${TENANT_ID} DialogueIndustry=${DIALOGUE_INDUSTRY}"
- if ! curl -sf -H "X-Lobster-Ops-Secret: ${OPS_SECRET}" \
- "${API_BASE}/api/lobster/admin/phase2/verify/${COMPANY_ID}?tenantId=${TENANT_ID}" >/dev/null; then
- echo "FAIL service not reachable at ${API_BASE}"
- echo "Start fs-saas-company on port 8006 first."
- exit 1
- fi
- echo "OK service reachable"
- INCLUDE_STRESS="true"
- if [[ "${SKIP_STRESS}" == "1" || "${SKIP_STRESS}" == "true" ]]; then
- INCLUDE_STRESS="false"
- fi
- URI="${API_BASE%/}/api/lobster/admin/validation/travel-full/${COMPANY_ID}?tenantId=${TENANT_ID}&includeStress=${INCLUDE_STRESS}&dialogueIndustry=${DIALOGUE_INDUSTRY}"
- echo "POST ${URI}"
- echo "Running validation (may take 2-4 min)..."
- HTTP_CODE="$(curl -sS -o "${REPORT_FILE}" -w '%{http_code}' \
- -X POST \
- -H "Content-Type: application/json" \
- -H "X-Lobster-Ops-Secret: ${OPS_SECRET}" \
- --max-time 900 \
- "${URI}")"
- if [[ "${HTTP_CODE}" -lt 200 || "${HTTP_CODE}" -ge 300 ]]; then
- echo "FAIL HTTP ${HTTP_CODE}"
- cat "${REPORT_FILE}" || true
- exit 1
- fi
- cp -f "${REPORT_FILE}" "${REPORT_DIR}/lobster-travel-validation-latest.json"
- echo "Report saved: ${REPORT_FILE}"
- if command -v python3 >/dev/null 2>&1; then
- python3 - <<'PY' "${REPORT_FILE}"
- import json, sys
- path = sys.argv[1]
- with open(path, encoding="utf-8-sig") as f:
- j = json.load(f)
- print("\n--- Section Summary ---")
- sections = j.get("sections") or {}
- for name, sec in sections.items():
- if name == "stress" and isinstance(sec, dict):
- print(" stress:")
- for k, st in sec.items():
- if isinstance(st, dict) and "passed" in st:
- print(f" {k}: {st.get('passed')}")
- elif isinstance(sec, dict) and "passed" in sec:
- print(f" {name}: {sec.get('passed')} ({sec.get('message', '')})")
- print(f"\nDuration: {j.get('durationMs')}ms Overall: {j.get('passed')}")
- if j.get("passed") is True:
- print("\nPASSED all checks")
- sys.exit(0)
- print("\nFAILED some checks did not pass")
- for f in j.get("failures") or []:
- print(f" - {f}")
- sys.exit(1)
- PY
- else
- PASSED="$(grep -o '"passed"[[:space:]]*:[[:space:]]*true' "${REPORT_FILE}" | head -1 || true)"
- if [[ -n "${PASSED}" ]] && grep -q '"passed"[[:space:]]*:[[:space:]]*true' "${REPORT_FILE}"; then
- echo "PASSED (install python3 for detailed summary)"
- exit 0
- fi
- echo "FAILED (install python3 for detailed summary)"
- exit 1
- fi
|