|
|
|
|
@ -107,10 +107,15 @@ wait_for_etcp() {
|
|
|
|
|
|
|
|
|
|
# -------- test runners -------- |
|
|
|
|
|
|
|
|
|
# Монотонное время не зависит от wall clock и поддержки точности %N в date. |
|
|
|
|
clock_ms() { |
|
|
|
|
python3 -c 'import time; print(time.monotonic_ns() // 1000000)' |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
run_test() { |
|
|
|
|
local name=$1; shift |
|
|
|
|
local t_start log rc elapsed |
|
|
|
|
t_start=$(date +%s%3N) |
|
|
|
|
t_start=$(clock_ms) |
|
|
|
|
echo -n " $name ... " |
|
|
|
|
log="$LOG_DIR/tcp_client_${name}.log" |
|
|
|
|
if python3 "$CLIENT_PY" "$@" --name "$name" >"$log" 2>&1; then |
|
|
|
|
@ -118,7 +123,7 @@ run_test() {
|
|
|
|
|
else |
|
|
|
|
rc=$? |
|
|
|
|
fi |
|
|
|
|
elapsed=$(($(date +%s%3N) - t_start)) |
|
|
|
|
elapsed=$(($(clock_ms) - t_start)) |
|
|
|
|
if [ $rc -eq 0 ]; then |
|
|
|
|
echo "PASS (${elapsed}ms)" |
|
|
|
|
tail -1 "$log" |
|
|
|
|
@ -133,7 +138,7 @@ run_test() {
|
|
|
|
|
run_test_neg() { |
|
|
|
|
local name=$1; shift |
|
|
|
|
local t_start log rc elapsed |
|
|
|
|
t_start=$(date +%s%3N) |
|
|
|
|
t_start=$(clock_ms) |
|
|
|
|
echo -n " $name ... " |
|
|
|
|
log="$LOG_DIR/tcp_client_${name}.log" |
|
|
|
|
if ! python3 "$CLIENT_PY" "$@" --name "$name" >"$log" 2>&1; then |
|
|
|
|
@ -141,7 +146,7 @@ run_test_neg() {
|
|
|
|
|
else |
|
|
|
|
rc=1 |
|
|
|
|
fi |
|
|
|
|
elapsed=$(($(date +%s%3N) - t_start)) |
|
|
|
|
elapsed=$(($(clock_ms) - t_start)) |
|
|
|
|
if [ $rc -eq 0 ]; then |
|
|
|
|
echo "PASS (expected error, ${elapsed}ms)"; return 0 |
|
|
|
|
else |
|
|
|
|
@ -152,7 +157,7 @@ run_test_neg() {
|
|
|
|
|
run_concurrent() { |
|
|
|
|
local name=$1 count=$2 size=$3; shift 3 |
|
|
|
|
local t_start pids ok elapsed |
|
|
|
|
t_start=$(date +%s%3N) |
|
|
|
|
t_start=$(clock_ms) |
|
|
|
|
pids=() |
|
|
|
|
for i in $(seq 1 $count); do |
|
|
|
|
python3 "$CLIENT_PY" \ |
|
|
|
|
@ -164,7 +169,7 @@ run_concurrent() {
|
|
|
|
|
done |
|
|
|
|
ok=0 |
|
|
|
|
for pid in "${pids[@]}"; do wait "$pid"; [ $? -eq 0 ] && ((++ok)); done |
|
|
|
|
elapsed=$(($(date +%s%3N) - t_start)) |
|
|
|
|
elapsed=$(($(clock_ms) - t_start)) |
|
|
|
|
echo -n " $name ($count) ... " |
|
|
|
|
if [ "$ok" -eq "$count" ]; then |
|
|
|
|
echo "PASS ($ok/$count, ${elapsed}ms)"; return 0 |
|
|
|
|
@ -180,18 +185,18 @@ run_concurrent() {
|
|
|
|
|
|
|
|
|
|
run_stress() { |
|
|
|
|
local t_start elapsed |
|
|
|
|
t_start=$(date +%s%3N) |
|
|
|
|
t_start=$(clock_ms) |
|
|
|
|
echo -n " stress_sessions ... " |
|
|
|
|
local log="$LOG_DIR/stress.log" |
|
|
|
|
if python3 "$STRESS_PY" \ |
|
|
|
|
--host 10.200.100.1 --port-base "$ECHO_PORT" --ports 20 \ |
|
|
|
|
--threads 10 --iters 20 --min-size 1024 --max-size 65536 --timeout 60 --verbose \ |
|
|
|
|
>"$log" 2>&1; then |
|
|
|
|
elapsed=$(($(date +%s%3N) - t_start)) |
|
|
|
|
elapsed=$(($(clock_ms) - t_start)) |
|
|
|
|
echo "PASS (${elapsed}ms)" |
|
|
|
|
head -1 "$log"; return 0 |
|
|
|
|
else |
|
|
|
|
elapsed=$(($(date +%s%3N) - t_start)) |
|
|
|
|
elapsed=$(($(clock_ms) - t_start)) |
|
|
|
|
echo "FAIL (${elapsed}ms)" |
|
|
|
|
tail -5 "$log"; return 1 |
|
|
|
|
fi |
|
|
|
|
|