test_stress.sh 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #!/usr/bin/env bash
  2. set -euo pipefail
  3. ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  4. cd "$ROOT_DIR"
  5. ACCOUNT_ID="${ACCOUNT_ID:-qndd8o9ppop6}"
  6. ITERATIONS="${ITERATIONS:-10}"
  7. CONFIG="${CONFIG:-/home/lucky/.openclaw/workspace/config/mcporter.json}"
  8. if [[ -f .venv/bin/activate ]]; then
  9. # shellcheck disable=SC1091
  10. source .venv/bin/activate
  11. fi
  12. ok_count=0
  13. fail_count=0
  14. total_ms=0
  15. for i in $(seq 1 "$ITERATIONS"); do
  16. start_ns=$(date +%s%N)
  17. if ! output="$(mcporter --config "$CONFIG" call exec.get_account_info account_id="$ACCOUNT_ID" 2>&1)"; then
  18. end_ns=$(date +%s%N)
  19. elapsed_ms=$(( (end_ns - start_ns) / 1000000 ))
  20. fail_count=$((fail_count + 1))
  21. total_ms=$((total_ms + elapsed_ms))
  22. echo "[$i/$ITERATIONS] FAIL ${elapsed_ms}ms"
  23. echo "$output"
  24. continue
  25. fi
  26. end_ns=$(date +%s%N)
  27. elapsed_ms=$(( (end_ns - start_ns) / 1000000 ))
  28. if python3 - "$output" <<'PY'
  29. import json, sys
  30. payload = sys.argv[1]
  31. json.loads(payload)
  32. print("ok")
  33. PY
  34. then
  35. ok_count=$((ok_count + 1))
  36. else
  37. fail_count=$((fail_count + 1))
  38. echo "[$i/$ITERATIONS] INVALID_JSON ${elapsed_ms}ms"
  39. echo "$output"
  40. continue
  41. fi
  42. total_ms=$((total_ms + elapsed_ms))
  43. echo "[$i/$ITERATIONS] ${elapsed_ms}ms"
  44. done
  45. if [[ "$ITERATIONS" -gt 0 ]]; then
  46. avg_ms=$((total_ms / ITERATIONS))
  47. else
  48. avg_ms=0
  49. fi
  50. echo "---"
  51. echo "ok=$ok_count fail=$fail_count total=$ITERATIONS avg_ms=$avg_ms"