proper tests

This commit is contained in:
2026-04-10 18:29:58 -03:00
parent e906b0a963
commit ea9dbf8772
16 changed files with 1077 additions and 15 deletions

View File

@@ -51,6 +51,7 @@ class SessionProcessor:
self._get_recording_path = None
self._get_current_global_offset = None
self._telemetry = None
def attach(self, get_recording_path, get_current_global_offset):
"""Wire up callbacks to query the recorder's current state."""
@@ -75,6 +76,11 @@ class SessionProcessor:
self._append_frame_index(entry)
log.info("Scene frame: %s at %.1fs", frame_id, global_ts)
if self._telemetry:
self._telemetry.metric("scene_frame", {
"id": frame_id, "global_ts": global_ts,
})
if self._on_new_frames:
self._on_new_frames([entry])
@@ -465,6 +471,15 @@ class SessionProcessor:
if safe_duration is None or safe_duration <= 0:
continue
# Raw AAC files (from Rust server) have no reliable duration metadata.
# ffprobe wildly overestimates (e.g. 1569s for a 50s session).
# Cap to wall-clock elapsed time as a sanity bound.
wall_elapsed = self._wall_clock_offset()
if wall_elapsed > 0 and safe_duration > wall_elapsed * 1.5:
log.debug("Audio: capping probed duration %.1fs to wall-clock %.1fs",
safe_duration, wall_elapsed)
safe_duration = wall_elapsed
# Fail-safe: processed_time can accumulate past the file if the
# source was recreated (e.g. server restarted same session).
if processed_time > safe_duration:
@@ -495,6 +510,11 @@ class SessionProcessor:
global_start = processed_time + offset
log.info("Audio chunk: %s (%.1fs → %.1fs, global %.1fs)",
wav_path.name, processed_time, process_to, global_start)
if self._telemetry:
self._telemetry.metric("audio_chunk", {
"chunk": chunk_num, "start": processed_time,
"end": process_to, "global_start": global_start,
})
if self._on_new_audio:
try:
self._on_new_audio(