Files

46 lines
1.2 KiB
Bash
Raw Permalink Normal View History

2026-06-22 15:35:18 +08:00
#!/bin/bash
set -e
SERVER_BIN="./temp/libmodbus/tests/unit-test-server"
MBPOLL_BIN="./build/bin/mbpoll"
OUTPUT_FILE="benchmark_output.txt"
# Kill any existing server
killall unit-test-server 2>/dev/null || true
# Start server
$SERVER_BIN tcp 127.0.0.1 > /dev/null 2>&1 &
SERVER_PID=$!
sleep 1
echo "Running correctness check..."
$MBPOLL_BIN -m tcp -a 1 -r 400:1000 -t 4 -1 -o 1.0 -p 1502 127.0.0.1 > "$OUTPUT_FILE" 2>&1
kill $SERVER_PID 2>/dev/null || true
wait $SERVER_PID 2>/dev/null || true
# Check lines
line_count=$(grep "^\[" "$OUTPUT_FILE" | wc -l)
echo "Lines read: $line_count"
if [ "$line_count" -ne 601 ]; then
echo "Error: Expected 601 lines, got $line_count"
exit 1
fi
echo "Running performance benchmark (10 iterations)..."
start_time=$(date +%s%N)
for i in {1..10}; do
$SERVER_BIN tcp 127.0.0.1 > /dev/null 2>&1 &
SERVER_PID=$!
# Wait for server to bind
sleep 0.05
$MBPOLL_BIN -m tcp -a 1 -r 400:1000 -t 4 -1 -o 1.0 -p 1502 127.0.0.1 > /dev/null 2>&1
kill $SERVER_PID 2>/dev/null || true
wait $SERVER_PID 2>/dev/null || true
done
end_time=$(date +%s%N)
duration=$((end_time - start_time))
ms=$((duration / 1000000))
echo "Total Duration: $ms ms"
echo "Average per run: $((ms / 10)) ms"