#!/bin/bash

set -e

# Load test for CCIP message throughput
# Tests CCIP message sending capacity

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"

RPC_URL="${RPC_URL:-http://localhost:8545}"
CCIP_SENDER_ADDRESS="${CCIP_SENDER_ADDRESS:-}"
DEST_CHAIN="${DEST_CHAIN:-5009297550715157269}"
MESSAGES="${MESSAGES:-100}"
CONCURRENT="${CONCURRENT:-10}"

if [ -z "$CCIP_SENDER_ADDRESS" ]; then
    echo "Error: CCIP_SENDER_ADDRESS not set"
    exit 1
fi

echo "CCIP Load Test"
echo "RPC URL: $RPC_URL"
echo "Sender: $CCIP_SENDER_ADDRESS"
echo "Destination Chain: $DEST_CHAIN"
echo "Messages: $MESSAGES"
echo "Concurrent: $CONCURRENT"

# Use cast or web3 to send messages
for i in $(seq 1 $MESSAGES); do
    (
        cast send "$CCIP_SENDER_ADDRESS" \
            "sendOracleUpdate(uint64,uint256,uint256,uint256)" \
            "$DEST_CHAIN" \
            "$((25000000000 + i))" \
            "$i" \
            "$(date +%s)" \
            --rpc-url "$RPC_URL" \
            --private-key "$PRIVATE_KEY" || true
    ) &
    
    if [ $((i % CONCURRENT)) -eq 0 ]; then
        wait
    fi
done

wait

echo "Load test complete!"

