Untitled

 avatar
user_1673309
plain_text
6 months ago
2.2 kB
2
Indexable
Never
#!/bin/bash

# Calculate the delay (in microseconds) between each request to achieve approximately 500 TPS
delay_microseconds=$((1000000 / 500))

# Set the duration of the script in seconds (30 minutes)
duration=1800

# API endpoint
api_endpoint="http://example.com/api"

# Initialize variables for tracking TPS
total_requests=0

# Get the start time
start_time=$(date +%s)
echo "Start time: $(date -u -d @$start_time +'%Y-%m-%d %H:%M:%S')"

# Loop to send requests
while true; do
    # Get the current time in seconds since the script started
    current_time=$(date +%s)
    
    # Check if the duration has passed
    if [ $((current_time - start_time)) -ge $duration ]; then
        break
    fi
    
    # Record the start time of the request in microseconds
    request_start_time=$(date +%s%N)
    
    # Send the request
    # Send the request
    curl --location --request POST 'https://test-cxs.globe.com.ph/v1/partners/ocsp/oauth2/token?grant_type=client_credentials' \
--header 'Authorization: Basic M2oxOXZhY2J2bzM2anFnZHNyY2ZkNnNpbTE6MWxmNjI1dXVzZjlrYm5uaGptMnVpbm1mc2E2ZnFuNGdlcDFuNW1lMzZvZTQ4bmpiOWg5Zw==' \
--header 'Content-Type: application/x-www-form-urlencoded' >/dev/null 2>&1 &
    
    # Record the end time of the request in microseconds
    request_end_time=$(date +%s%N)
    
    # Calculate the time taken for this request in microseconds
    request_time_microseconds=$((request_end_time - request_start_time))
    
    # Calculate the delay needed to achieve the desired TPS
    remaining_delay=$((delay_microseconds - request_time_microseconds))
    
    if [ $remaining_delay -gt 0 ]; then
        # Sleep for the remaining delay
        usleep $remaining_delay
    fi
    
    total_requests=$((total_requests + 1))
done

# Calculate the achieved TPS
achieved_tps=$(awk "BEGIN { printf \"%.2f\", $total_requests / $duration }")

# Get the end time
end_time=$(date +%s)
echo "End time: $(date -u -d @$end_time +'%Y-%m-%d %H:%M:%S')"

echo "Burst requests completed."
echo "Total requests sent: $total_requests"
echo "Total duration: $duration seconds"
echo "Achieved TPS: $achieved_tps transactions per second"