mirror of
https://github.com/open-jarvis/OpenJarvis.git
synced 2026-07-29 18:40:38 +00:00
* fix(channels): wire channel→agent handler and fix Telegram send pipeline * format code * add supported tests
69 lines
2.3 KiB
Python
69 lines
2.3 KiB
Python
"""Tests for inter-token latency percentile computation."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import pytest
|
|
|
|
from openjarvis.telemetry.itl import compute_itl_stats
|
|
|
|
|
|
class TestComputeItlStats:
|
|
def test_empty_timestamps(self):
|
|
result = compute_itl_stats([])
|
|
assert result["p50_ms"] == 0
|
|
assert result["mean_ms"] == 0
|
|
|
|
def test_single_timestamp(self):
|
|
result = compute_itl_stats([100.0])
|
|
assert result["p50_ms"] == 0
|
|
assert result["max_ms"] == 0
|
|
|
|
def test_two_timestamps(self):
|
|
result = compute_itl_stats([0.0, 10.0])
|
|
assert result["p50_ms"] == 10.0
|
|
assert result["mean_ms"] == 10.0
|
|
assert result["min_ms"] == 10.0
|
|
assert result["max_ms"] == 10.0
|
|
|
|
def test_uniform_spacing(self):
|
|
# 11 timestamps 5ms apart → 10 ITLs all = 5.0
|
|
timestamps = [i * 5.0 for i in range(11)]
|
|
result = compute_itl_stats(timestamps)
|
|
assert result["p50_ms"] == pytest.approx(5.0)
|
|
assert result["p90_ms"] == pytest.approx(5.0)
|
|
assert result["p95_ms"] == pytest.approx(5.0)
|
|
assert result["p99_ms"] == pytest.approx(5.0)
|
|
assert result["mean_ms"] == pytest.approx(5.0)
|
|
assert result["min_ms"] == pytest.approx(5.0)
|
|
assert result["max_ms"] == pytest.approx(5.0)
|
|
|
|
def test_varying_spacing(self):
|
|
# [0, 1, 3, 6, 10] → ITLs = [1, 2, 3, 4]
|
|
timestamps = [0.0, 1.0, 3.0, 6.0, 10.0]
|
|
result = compute_itl_stats(timestamps)
|
|
assert result["min_ms"] == pytest.approx(1.0)
|
|
assert result["max_ms"] == pytest.approx(4.0)
|
|
assert result["mean_ms"] == pytest.approx(2.5)
|
|
# Median of sorted [1,2,3,4] → 2.5
|
|
assert result["p50_ms"] == pytest.approx(2.5)
|
|
|
|
def test_percentile_ordering(self):
|
|
timestamps = [float(i) for i in range(101)]
|
|
result = compute_itl_stats(timestamps)
|
|
assert result["p50_ms"] <= result["p90_ms"]
|
|
assert result["p90_ms"] <= result["p95_ms"]
|
|
assert result["p95_ms"] <= result["p99_ms"]
|
|
|
|
def test_all_keys_present(self):
|
|
result = compute_itl_stats([0.0, 5.0, 10.0])
|
|
expected_keys = {
|
|
"p50_ms",
|
|
"p90_ms",
|
|
"p95_ms",
|
|
"p99_ms",
|
|
"mean_ms",
|
|
"min_ms",
|
|
"max_ms",
|
|
}
|
|
assert set(result.keys()) == expected_keys
|