diff --git a/docker/auth-bench/run-ab.sh b/docker/auth-bench/run-ab.sh index f16217b..19a635a 100644 --- a/docker/auth-bench/run-ab.sh +++ b/docker/auth-bench/run-ab.sh @@ -1,53 +1,50 @@ #!/bin/bash - -function test_urls { - local urls=(${URLS//,/ }) - local username=$USERNAME - local password=$PASSWORD - for url in "${urls[@]}"; do - curl -u "$username:$password" "$url" - done -} - -function run_apache_bench { +function run_apache_bench_and_check_ttfb { local urls=(${URLS//,/ }) local username=$USERNAME local password=$PASSWORD local requests=$REQUESTS local concurrency=$CONCURRENCY - local log_file="/logs/authenticated.log" + local log_file="/logs/authenticated.csv" + local ab_summary + local total_ttfb=0 + local ttfb=0 + + echo "URL, Average TTFB, AB Mean Time per Request" | tee "$log_file" + for url in "${urls[@]}"; do - ab -n "$requests" -c "$concurrency" -A "$username:$password" "$url" | tee -a "$log_file" - done -} - -function check_ttfb_and_log { - local urls=(${URLS//,/ }) - local username=$USERNAME - local password=$PASSWORD - local log_file="/logs/authenticated.log" - local total_ttfb sum_ttfb mean_ttfb - for url in "${urls[@]}"; do - total_ttfb=0 + total_ttfb=0 # Reset total TTFB for each URL + + # Apache Bench part + ab_summary=$(ab -n "$requests" -c "$concurrency" -A "$username:$password" "$url" 2>&1 | grep "Time per request" | head -1) + ab_mean_time_per_request=$(echo "$ab_summary" | awk '{print $4 " " $5}') + + # TTFB part for i in {1..5}; do ttfb=$(curl -o /dev/null -s -w "%{time_starttransfer}\n" -u "$username:$password" "$url") total_ttfb=$(echo "$total_ttfb + $ttfb" | bc) done - sum_ttfb=$total_ttfb - mean_ttfb=$(echo "scale=3; $sum_ttfb / 5" | bc) - echo "$url TTFB Mean: $mean_ttfb seconds" | tee -a "$log_file" + local mean_ttfb=$(echo "scale=3; $total_ttfb / 5" | bc) + + # Combine and log + echo "$url, $mean_ttfb, $ab_mean_time_per_request" | tee -a "$log_file" done } +# Define your functions here function prepare_log_file { - local log_file="/logs/authenticated.log" - > "$log_file" - mkdir -p $(dirname "$log_file") - touch "$log_file" + local log_file="/logs/authenticated.csv" + > "$log_file" # Clear the contents of the existing log file, if any + mkdir -p $(dirname "$log_file") # Ensure the directory exists + touch "$log_file" # Create the file if it doesn't exist } +function run_apache_bench_and_check_ttfb { + # Function definition as provided before +} + +# Prepare the log file prepare_log_file -test_urls -run_apache_bench -check_ttfb_and_log +# Run Apache Bench and check TTFB for URLs +run_apache_bench_and_check_ttfb \ No newline at end of file