cd performance_test # Lettings logs page echo "Get token" TOKEN=$(curl -c token_cookies.txt -s https://staging.submit-social-housing-data.levellingup.gov.uk/account/sign-in | grep ' performance_lettings_test_results.txt file="performance_lettings_test_results.txt" failed_requests=$(grep "Failed requests:" "$file" | awk '{print $3}') non_2xx_responses=$(grep "Non-2xx responses:" "$file" | awk '{print $3}') time_per_request_all=$(grep "Time per request:" "$file" | awk 'NR==2{print $4}') requests_per_second=$(grep "Requests per second:" "$file" | awk '{print $4}') if [ "$failed_requests" -gt 0 ]; then echo "Lettings logs: Performance test failed - $failed_requests failed requests" exit 1 fi if [ "$non_2xx_responses" -ne 0 ] && [ -n "$non_2xx_responses" ]; then echo "Lettings logs: Performance test failed: There were $non_2xx_responses non-2xx responses." exit 1 fi if (( $(echo "$time_per_request_all > 250" | bc -l) )); then echo "Lettings logs: Performance test failed - Time per request across all concurrent requests is more than 250 ms: $time_per_request_all ms" exit 1 fi if (( $(echo "$requests_per_second < 5" | bc -l) )); then echo "Lettings logs: Performance test failed - Requests per second is less than 5: $requests_per_second" exit 1 fi echo "Lettings logs page test passed: No failed requests and no non-2xx responses." # Sales logs page echo "Running sales logs page performance test..." ab -n 50 -c 50 -l -C "$COOKIES" 'https://staging.submit-social-housing-data.levellingup.gov.uk/sales-logs?years[]=2024&status[]=completed' > performance_sales_test_results.txt file="performance_sales_test_results.txt" failed_requests=$(grep "Failed requests:" "$file" | awk '{print $3}') non_2xx_responses=$(grep "Non-2xx responses:" "$file" | awk '{print $3}') time_per_request_all=$(grep "Time per request:" "$file" | awk 'NR==2{print $4}') requests_per_second=$(grep "Requests per second:" "$file" | awk '{print $4}') if [ "$failed_requests" -gt 0 ]; then echo "Sales logs: Performance test failed - $failed_requests failed requests" exit 1 fi if [ "$non_2xx_responses" -ne 0 ] && [ -n "$non_2xx_responses" ]; then echo "Sales logs: Performance test failed: There were $non_2xx_responses non-2xx responses." exit 1 fi if (( $(echo "$time_per_request_all > 250" | bc -l) )); then echo "Sales logs: Performance test failed - Time per request across all concurrent requests is more than 250 ms: $time_per_request_all ms" exit 1 fi if (( $(echo "$requests_per_second < 5" | bc -l) )); then echo "Sales logs: Performance test failed - Requests per second is less than 5: $requests_per_second" exit 1 fi echo "Sales logs page test passed: No failed requests and no non-2xx responses." # Post data to a log test page_content=$(curl -b login_cookies.txt -s 'https://staging.submit-social-housing-data.levellingup.gov.uk/lettings-logs?years[]=2024&status[]=completed') completed_log_link=$(echo "$page_content" | sed -n 's/.* 500" | bc -l) )); then echo "Update logs: Performance test failed - Time per request across all concurrent requests is more than 500 ms: $time_per_request_all ms" exit 1 fi if (( $(echo "$requests_per_second < 3" | bc -l) )); then echo "Update logs: Performance test failed - Requests per second is less than 3: $requests_per_second" exit 1 fi echo "Update logs test passed: No failed requests and request times as expected." echo "All tests passed" exit 0