#!/bin/bash set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" # Generate JWT token JWT_TOKEN=$("$PROJECT_ROOT/tests/e2e_helpers/jwt_token_generator_fixed.sh" "load_test_user" "trader") if [ -z "$JWT_TOKEN" ]; then echo "❌ Failed to generate JWT token" exit 1 fi echo "✅ JWT token generated" echo "" # Quick test OUTPUT_DIR="$SCRIPT_DIR/results" mkdir -p "$OUTPUT_DIR" OUTPUT_FILE="$OUTPUT_DIR/quick_test_$(date +%Y%m%d_%H%M%S).json" echo "Running 100 requests at 50 RPS..." ghz --proto "$PROJECT_ROOT/tli/proto/trading.proto" \ --import-paths="$PROJECT_ROOT/tli/proto" \ --call "foxhunt.tli.TradingService.SubmitOrder" \ --insecure \ --total 100 \ --concurrency 5 \ --rps 50 \ --metadata "{\"authorization\":\"Bearer $JWT_TOKEN\"}" \ --data '{ "symbol": "BTC/USD", "side": "ORDER_SIDE_BUY", "order_type": "ORDER_TYPE_LIMIT", "quantity": 1.0, "price": 50000.0, "time_in_force": "GTC", "client_order_id": "quick-test-{{.RequestNumber}}" }' \ --format json \ --output "$OUTPUT_FILE" \ localhost:50051 echo "" if [ -f "$OUTPUT_FILE" ] && command -v jq &> /dev/null; then echo "Results:" echo " Total: $(jq -r '.count' "$OUTPUT_FILE")" echo " Success: $(jq -r '(.statusCodeDistribution["0"] // 0)' "$OUTPUT_FILE")" echo " Success %: $(jq -r '((.statusCodeDistribution["0"] // 0) / .count * 100 | floor)' "$OUTPUT_FILE")%" echo " P50: $(jq -r '(.latencies.p50 / 1000000 | floor)' "$OUTPUT_FILE")ms" echo " P95: $(jq -r '(.latencies.p95 / 1000000 | floor)' "$OUTPUT_FILE")ms" echo " P99: $(jq -r '(.latencies.p99 / 1000000 | floor)' "$OUTPUT_FILE")ms" echo " Throughput: $(jq -r '(.rps | floor)' "$OUTPUT_FILE") req/s" fi