feat: per-listener latency tracking
Each listener now tracks chain setup latency independently via a dict[str, LatencyTracker] on Metrics. The global aggregate stays for summary output. /status embeds per-listener latency on each listener entry; /metrics includes a listener_latency map keyed by host:port.
This commit is contained in:
@@ -136,6 +136,23 @@ class TestMetrics:
|
||||
assert "p50=" not in s
|
||||
assert "p95=" not in s
|
||||
|
||||
def test_listener_latency(self):
|
||||
m = Metrics()
|
||||
m.get_listener_latency("0.0.0.0:1080").record(0.5)
|
||||
m.get_listener_latency("0.0.0.0:1080").record(0.6)
|
||||
m.get_listener_latency("0.0.0.0:1081").record(0.1)
|
||||
d = m.to_dict()
|
||||
assert "listener_latency" in d
|
||||
assert "0.0.0.0:1080" in d["listener_latency"]
|
||||
assert "0.0.0.0:1081" in d["listener_latency"]
|
||||
assert d["listener_latency"]["0.0.0.0:1080"]["count"] == 2
|
||||
assert d["listener_latency"]["0.0.0.0:1081"]["count"] == 1
|
||||
|
||||
def test_listener_latency_empty(self):
|
||||
m = Metrics()
|
||||
d = m.to_dict()
|
||||
assert d["listener_latency"] == {}
|
||||
|
||||
|
||||
# -- _human_bytes ------------------------------------------------------------
|
||||
|
||||
|
||||
Reference in New Issue
Block a user