Files
hermes-agent/tests/agent/test_stream_wait_notice.py
teknium1 b2ecd3518f test: purge low-value tests, lane py04 (294 removed)
Change-detectors, tautologies, source-reading tests, redundant duplicates,
mock-echo tests and dead/unrunnable tests. Per-test rationale in the lane
ledger (category + reason for every removal).
2026-09-23 03:15:26 -07:00

58 lines
2.1 KiB
Python

"""Resumed chunks clear only the stream monitor's own silence notice."""
from types import SimpleNamespace
import pytest
from agent import chat_completion_helpers as h
@pytest.mark.parametrize("local_loading,heartbeat_race", [(False, False), (True, False), (False, True)])
def test_resumed_chunks_clear_wait_without_erasing_local_load(monkeypatch, local_loading, heartbeat_race):
call = h._StreamingCall.__new__(h._StreamingCall)
notices, touches = [], []
now = [1000.0]
call.agent = SimpleNamespace(
base_url="http://localhost:1234" if local_loading else "https://example.com",
_interrupt_requested=False,
_emit_wait_notice=lambda text: notices.append((now[0], text)),
_touch_activity=lambda text: touches.append((now[0], text)),
)
call.api_kwargs = {"model": "test-model"}
call.last_chunk_time = {"t": now[0]}
call._stream_stale_timeout = 180.0
loading = "Loading local model weights"
monkeypatch.setattr(h, "_managed_local_load_notice",
lambda *args: loading if now[0] >= 1060.6 else None)
monkeypatch.setattr(h.time, "time", lambda: now[0])
if heartbeat_race:
heartbeat = call._heartbeat
def resume_before_notice(waiting_secs):
if waiting_secs >= 60:
now[0] += 0.1
call.last_chunk_time["t"] = now[0]
heartbeat(waiting_secs)
monkeypatch.setattr(call, "_heartbeat", resume_before_notice)
class Done:
def is_set(self):
return now[0] >= 1062.0
def wait(self, timeout):
now[0] = round(now[0] + timeout, 1)
if not heartbeat_race and now[0] >= 1061.5:
call.last_chunk_time["t"] = now[0]
call._call_done = Done()
call._monitor_loop()
assert all(t >= 1060.0 for t, _ in notices)
assert touches # the quiet gateway heartbeat still fires
assert notices[0][1] # the first silence notice is non-empty
if local_loading:
assert notices[-1][1] == loading
assert not any(text == "" for _, text in notices)
else:
assert notices[1:] == [(1060.4 if heartbeat_race else 1061.5, "")]