Browse Source

Measure proxy test durations with a monotonic clock

master
evgeny 5 days ago
parent
commit
67d1718450
  1. 23
      tests/tcp_proxy_full/run_test.sh
  2. 3
      tools/chatgui/src/messagefeedback.cpp

23
tests/tcp_proxy_full/run_test.sh

@ -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

3
tools/chatgui/src/messagefeedback.cpp

@ -136,7 +136,8 @@ void MessageList::createPoll() {
unique.insert(text); values.append(text); bytes += 2 + text.toUtf8().size();
}
if (!valid || values.size() < 2 || values.size() > CHAT_POLL_OPTIONS_MAX || bytes > CHAT_POLL_WIRE_MAX) {
QMessageBox::warning(&dialog, feedbackText("Create poll"), feedbackText("Enter a question and distinct options within the size limit.")); return;
QMessageBox::warning(&dialog, feedbackText("Create poll"),
feedbackText("Enter a question and distinct options within the size limit.")); return;
}
sendFeedback({{"cmd", "poll_create"}, {"question", title}, {"options", values},
{"mode", mode->currentIndex() ? "multiple" : "single"}, {"allow_custom_answer", custom->isChecked()}});

Loading…
Cancel
Save