Files
OpenJarvis/tests/telemetry/test_itl_new.py
T
Prathap PandGitHub c2756964a7 fix(channels): wire channel→agent handler and fix Telegram send pipeline (#94)
* fix(channels): wire channel→agent handler and fix Telegram send pipeline

* format code

* add supported tests
2026-03-20 18:35:18 -07:00

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