#!/usr/bin/env bash # Load Testing Script # Tests bridge system under load set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../../../.." && pwd)" source "$PROJECT_ROOT/.env" 2>/dev/null || true RPC_URL="${CHAIN138_RPC:-${RPC_URL_138:-http://192.168.11.250:8545}}" ETHEREUM_RPC="${ETHEREUM_MAINNET_RPC:-${ETHEREUM_RPC:-}}" if [ -z "$ETHEREUM_RPC" ]; then echo "Error: ETHEREUM_MAINNET_RPC must be set" exit 1 fi LOCKBOX138="${LOCKBOX138_ADDRESS:-}" INBOX_ETH="${INBOX_ETH_ADDRESS:-}" if [ -z "$LOCKBOX138" ] || [ -z "$INBOX_ETH" ]; then echo "Error: Contract addresses must be set" echo "Set LOCKBOX138_ADDRESS and INBOX_ETH_ADDRESS in .env" exit 1 fi echo "Load Testing - Trustless Bridge" echo "================================" echo "" # Test parameters CONCURRENT_DEPOSITS="${1:-10}" DEPOSIT_AMOUNT="${2:-0.1}" TEST_DURATION="${3:-300}" # 5 minutes echo "Test Parameters:" echo " Concurrent Deposits: $CONCURRENT_DEPOSITS" echo " Deposit Amount: $DEPOSIT_AMOUNT ETH" echo " Test Duration: $TEST_DURATION seconds" echo "" # Create load test script LOAD_TEST_SCRIPT="$SCRIPT_DIR/load-test-runner.js" cat > "$LOAD_TEST_SCRIPT" < setTimeout(resolve, 100 + Math.random() * 200)); const latency = Date.now() - startTime; metrics.depositsSubmitted++; metrics.averageLatency = (metrics.averageLatency * (metrics.depositsSubmitted - 1) + latency) / metrics.depositsSubmitted; console.log(\`Deposit \${index + 1}: Success (latency: \${latency}ms)\`); } catch (error) { metrics.depositsFailed++; console.error(\`Deposit \${index + 1}: Failed - \${error.message}\`); } } loadTest().catch(console.error); EOF echo "Load test script created: $LOAD_TEST_SCRIPT" echo "" echo "To run load test:" echo " 1. Install dependencies: npm install ethers" echo " 2. Run: node $LOAD_TEST_SCRIPT" echo "" echo "For comprehensive load testing, consider:" echo " - k6 (https://k6.io/)" echo " - Apache JMeter" echo " - Custom testing framework" echo "" echo "Load testing should verify:" echo " - System handles concurrent deposits" echo " - Rate limiting works correctly" echo " - Gas costs remain reasonable" echo " - No performance degradation" echo " - Error handling under load"