46 lines
1.2 KiB
Bash
46 lines
1.2 KiB
Bash
|
|
#!/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"
|