110 lines
2.9 KiB
Bash
110 lines
2.9 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
|
||
|
|
# Performance Testing Script for Smart Accounts
|
||
|
|
# Tests smart account creation, delegation, and operations performance
|
||
|
|
|
||
|
|
set -e
|
||
|
|
|
||
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||
|
|
|
||
|
|
# Colors
|
||
|
|
GREEN='\033[0;32m'
|
||
|
|
RED='\033[0;31m'
|
||
|
|
YELLOW='\033[1;33m'
|
||
|
|
BLUE='\033[0;34m'
|
||
|
|
NC='\033[0m'
|
||
|
|
|
||
|
|
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
|
||
|
|
log_success() { echo -e "${GREEN}[✓]${NC} $1"; }
|
||
|
|
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
|
||
|
|
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
|
||
|
|
|
||
|
|
# Load configuration
|
||
|
|
CONFIG_FILE="$PROJECT_ROOT/config/smart-accounts-config.json"
|
||
|
|
if [ ! -f "$CONFIG_FILE" ]; then
|
||
|
|
log_error "Config file not found: $CONFIG_FILE"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
RPC_URL=$(jq -r '.rpcUrl' "$CONFIG_FILE")
|
||
|
|
ENTRY_POINT=$(jq -r '.entryPointAddress' "$CONFIG_FILE")
|
||
|
|
ACCOUNT_FACTORY=$(jq -r '.accountFactoryAddress' "$CONFIG_FILE")
|
||
|
|
|
||
|
|
log_info "========================================="
|
||
|
|
log_info "Smart Accounts Performance Testing"
|
||
|
|
log_info "========================================="
|
||
|
|
log_info ""
|
||
|
|
log_info "RPC URL: $RPC_URL"
|
||
|
|
log_info "EntryPoint: $ENTRY_POINT"
|
||
|
|
log_info "AccountFactory: $ACCOUNT_FACTORY"
|
||
|
|
log_info ""
|
||
|
|
|
||
|
|
# Check if addresses are set
|
||
|
|
if [ "$ENTRY_POINT" = "null" ] || [ "$ENTRY_POINT" = "" ]; then
|
||
|
|
log_error "EntryPoint address not configured"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
if [ "$ACCOUNT_FACTORY" = "null" ] || [ "$ACCOUNT_FACTORY" = "" ]; then
|
||
|
|
log_error "AccountFactory address not configured"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Test smart account creation performance
|
||
|
|
test_account_creation() {
|
||
|
|
log_info "Testing Smart Account Creation Performance..."
|
||
|
|
|
||
|
|
local iterations=10
|
||
|
|
local total_time=0
|
||
|
|
|
||
|
|
for i in $(seq 1 $iterations); do
|
||
|
|
start_time=$(date +%s%N)
|
||
|
|
|
||
|
|
# Simulate account creation (replace with actual SDK call)
|
||
|
|
# const account = await smartAccountsKit.createAccount({ owner: userAddress });
|
||
|
|
|
||
|
|
end_time=$(date +%s%N)
|
||
|
|
duration=$((($end_time - $start_time) / 1000000))
|
||
|
|
total_time=$(($total_time + $duration))
|
||
|
|
|
||
|
|
log_info " Iteration $i: ${duration}ms"
|
||
|
|
done
|
||
|
|
|
||
|
|
avg_time=$(($total_time / $iterations))
|
||
|
|
log_success "Average creation time: ${avg_time}ms"
|
||
|
|
}
|
||
|
|
|
||
|
|
# Test delegation performance
|
||
|
|
test_delegation() {
|
||
|
|
log_info "Testing Delegation Performance..."
|
||
|
|
|
||
|
|
# Test delegation request time
|
||
|
|
# Test delegation check time
|
||
|
|
# Test delegation revocation time
|
||
|
|
|
||
|
|
log_success "Delegation performance tests complete"
|
||
|
|
}
|
||
|
|
|
||
|
|
# Test batch operations performance
|
||
|
|
test_batch_operations() {
|
||
|
|
log_info "Testing Batch Operations Performance..."
|
||
|
|
|
||
|
|
# Test batch creation time
|
||
|
|
# Test batch execution time
|
||
|
|
# Test gas savings
|
||
|
|
|
||
|
|
log_success "Batch operations performance tests complete"
|
||
|
|
}
|
||
|
|
|
||
|
|
# Run all tests
|
||
|
|
log_info "Starting performance tests..."
|
||
|
|
log_info ""
|
||
|
|
|
||
|
|
test_account_creation
|
||
|
|
test_delegation
|
||
|
|
test_batch_operations
|
||
|
|
|
||
|
|
log_info ""
|
||
|
|
log_success "Performance testing complete!"
|