v0.7.10 - Fixed api errors in accepting : in subscriptions
This commit is contained in:
@@ -50,20 +50,13 @@ run_client() {
|
||||
done
|
||||
# Send CLOSE message
|
||||
echo '["CLOSE","load_test_'"$client_id"'_*"]'
|
||||
) | timeout 60 websocat -B 1048576 "ws://$RELAY_HOST:$RELAY_PORT" > "$temp_file" 2>/dev/null &
|
||||
) | timeout 30 websocat -B 1048576 "ws://$RELAY_HOST:$RELAY_PORT" > "$temp_file" 2>/dev/null
|
||||
|
||||
local client_pid=$!
|
||||
local exit_code=$?
|
||||
|
||||
# Wait a bit for the client to complete
|
||||
sleep 2
|
||||
|
||||
# Check if client is still running (good sign)
|
||||
if kill -0 "$client_pid" 2>/dev/null; then
|
||||
# Check if connection was successful (exit code 0 means successful)
|
||||
if [[ $exit_code -eq 0 ]]; then
|
||||
connection_successful=true
|
||||
((SUCCESSFUL_CONNECTIONS++))
|
||||
else
|
||||
wait "$client_pid" 2>/dev/null || true
|
||||
((FAILED_CONNECTIONS++))
|
||||
fi
|
||||
|
||||
# Count messages sent
|
||||
@@ -131,52 +124,61 @@ run_load_test() {
|
||||
TOTAL_MESSAGES_SENT=0
|
||||
TOTAL_MESSAGES_RECEIVED=0
|
||||
|
||||
# Start resource monitoring in background
|
||||
monitor_resources 30 &
|
||||
local monitor_pid=$!
|
||||
|
||||
# Launch clients
|
||||
local client_pids=()
|
||||
# Launch clients sequentially for now (simpler debugging)
|
||||
local client_results=()
|
||||
|
||||
echo "Launching $concurrent_clients concurrent clients..."
|
||||
echo "Launching $concurrent_clients clients..."
|
||||
|
||||
for i in $(seq 1 "$concurrent_clients"); do
|
||||
run_client "$i" "$messages_per_client" &
|
||||
client_pids+=($!)
|
||||
local result
|
||||
result=$(run_client "$i" "$messages_per_client")
|
||||
client_results+=("$result")
|
||||
TOTAL_CONNECTIONS=$((TOTAL_CONNECTIONS + 1))
|
||||
done
|
||||
|
||||
# Wait for all clients to complete
|
||||
echo "Waiting for clients to complete..."
|
||||
for pid in "${client_pids[@]}"; do
|
||||
wait "$pid" 2>/dev/null || true
|
||||
done
|
||||
|
||||
# Stop monitoring
|
||||
kill "$monitor_pid" 2>/dev/null || true
|
||||
wait "$monitor_pid" 2>/dev/null || true
|
||||
echo "All clients completed. Processing results..."
|
||||
|
||||
END_TIME=$(date +%s)
|
||||
local duration=$((END_TIME - START_TIME))
|
||||
|
||||
# Process client results
|
||||
local successful_connections=0
|
||||
local failed_connections=0
|
||||
local total_messages_sent=0
|
||||
local total_messages_received=0
|
||||
|
||||
for result in "${client_results[@]}"; do
|
||||
messages_sent=$(echo "$result" | cut -d: -f1)
|
||||
messages_received=$(echo "$result" | cut -d: -f2)
|
||||
connection_successful=$(echo "$result" | cut -d: -f3)
|
||||
if [[ "$connection_successful" == "true" ]]; then
|
||||
successful_connections=$((successful_connections + 1))
|
||||
else
|
||||
failed_connections=$((failed_connections + 1))
|
||||
fi
|
||||
total_messages_sent=$((total_messages_sent + messages_sent))
|
||||
total_messages_received=$((total_messages_received + messages_received))
|
||||
done
|
||||
|
||||
# Calculate metrics
|
||||
local total_messages_expected=$((concurrent_clients * messages_per_client))
|
||||
local connection_success_rate=0
|
||||
local total_connections=$((SUCCESSFUL_CONNECTIONS + FAILED_CONNECTIONS))
|
||||
|
||||
if [[ $total_connections -gt 0 ]]; then
|
||||
connection_success_rate=$((SUCCESSFUL_CONNECTIONS * 100 / total_connections))
|
||||
if [[ $TOTAL_CONNECTIONS -gt 0 ]]; then
|
||||
connection_success_rate=$((successful_connections * 100 / TOTAL_CONNECTIONS))
|
||||
fi
|
||||
|
||||
# Report results
|
||||
echo ""
|
||||
echo "=== Load Test Results ==="
|
||||
echo "Test duration: ${duration}s"
|
||||
echo "Total connections attempted: $total_connections"
|
||||
echo "Successful connections: $SUCCESSFUL_CONNECTIONS"
|
||||
echo "Failed connections: $FAILED_CONNECTIONS"
|
||||
echo "Total connections attempted: $TOTAL_CONNECTIONS"
|
||||
echo "Successful connections: $successful_connections"
|
||||
echo "Failed connections: $failed_connections"
|
||||
echo "Connection success rate: ${connection_success_rate}%"
|
||||
echo "Messages expected: $total_messages_expected"
|
||||
echo "Messages sent: $total_messages_sent"
|
||||
echo "Messages received: $total_messages_received"
|
||||
|
||||
# Performance assessment
|
||||
if [[ $connection_success_rate -ge 95 ]]; then
|
||||
@@ -190,9 +192,7 @@ run_load_test() {
|
||||
# Check if relay is still responsive
|
||||
echo ""
|
||||
echo -n "Checking relay responsiveness... "
|
||||
if timeout 5 bash -c "
|
||||
echo 'ping' | websocat -n1 ws://$RELAY_HOST:$RELAY_PORT >/dev/null 2>&1
|
||||
" 2>/dev/null; then
|
||||
if echo 'ping' | timeout 5 websocat -B 1048576 ws://$RELAY_HOST:$RELAY_PORT >/dev/null 2>&1; then
|
||||
echo -e "${GREEN}✓ Relay is still responsive${NC}"
|
||||
else
|
||||
echo -e "${RED}✗ Relay became unresponsive after load test${NC}"
|
||||
@@ -200,39 +200,40 @@ run_load_test() {
|
||||
fi
|
||||
}
|
||||
|
||||
echo "=========================================="
|
||||
echo "C-Relay Load Testing Suite"
|
||||
echo "=========================================="
|
||||
echo "Testing against relay at ws://$RELAY_HOST:$RELAY_PORT"
|
||||
echo ""
|
||||
# Only run main code if script is executed directly (not sourced)
|
||||
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
||||
echo "=========================================="
|
||||
echo "C-Relay Load Testing Suite"
|
||||
echo "=========================================="
|
||||
echo "Testing against relay at ws://$RELAY_HOST:$RELAY_PORT"
|
||||
echo ""
|
||||
|
||||
# Test basic connectivity first
|
||||
echo "=== Basic Connectivity Test ==="
|
||||
if timeout 5 bash -c "
|
||||
echo 'ping' | websocat -n1 ws://$RELAY_HOST:$RELAY_PORT >/dev/null 2>&1
|
||||
" 2>/dev/null; then
|
||||
echo -e "${GREEN}✓ Relay is accessible${NC}"
|
||||
else
|
||||
echo -e "${RED}✗ Cannot connect to relay. Aborting tests.${NC}"
|
||||
exit 1
|
||||
fi
|
||||
echo ""
|
||||
# Test basic connectivity first
|
||||
echo "=== Basic Connectivity Test ==="
|
||||
if echo 'ping' | timeout 5 websocat -B 1048576 ws://$RELAY_HOST:$RELAY_PORT >/dev/null 2>&1; then
|
||||
echo -e "${GREEN}✓ Relay is accessible${NC}"
|
||||
else
|
||||
echo -e "${RED}✗ Cannot connect to relay. Aborting tests.${NC}"
|
||||
exit 1
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# Run different load scenarios
|
||||
run_load_test "Light Load Test" "Basic load test with moderate concurrent connections" 10 5
|
||||
echo ""
|
||||
# Run different load scenarios
|
||||
run_load_test "Light Load Test" "Basic load test with moderate concurrent connections" 10 5
|
||||
echo ""
|
||||
|
||||
run_load_test "Medium Load Test" "Moderate load test with higher concurrency" 25 10
|
||||
echo ""
|
||||
run_load_test "Medium Load Test" "Moderate load test with higher concurrency" 25 10
|
||||
echo ""
|
||||
|
||||
run_load_test "Heavy Load Test" "Heavy load test with high concurrency" 50 20
|
||||
echo ""
|
||||
run_load_test "Heavy Load Test" "Heavy load test with high concurrency" 50 20
|
||||
echo ""
|
||||
|
||||
run_load_test "Stress Test" "Maximum load test to find breaking point" 100 50
|
||||
echo ""
|
||||
run_load_test "Stress Test" "Maximum load test to find breaking point" 100 50
|
||||
echo ""
|
||||
|
||||
echo "=========================================="
|
||||
echo "Load Testing Complete"
|
||||
echo "=========================================="
|
||||
echo "All load tests completed. Check individual test results above."
|
||||
echo "If any tests failed, the relay may need optimization or have resource limits."
|
||||
echo "=========================================="
|
||||
echo "Load Testing Complete"
|
||||
echo "=========================================="
|
||||
echo "All load tests completed. Check individual test results above."
|
||||
echo "If any tests failed, the relay may need optimization or have resource limits."
|
||||
fi
|
||||
Reference in New Issue
Block a user