#!/usr/bin/env python3 import sys import unittest from pathlib import Path PROJECT_ROOT = Path(__file__).resolve().parents[1] SDK_SRC = PROJECT_ROOT / "packages" / "jwebot-sdk" / "src" OFFICIAL_SRC = ( PROJECT_ROOT / "packages" / "jwebot-official-extensions" / "src" ) sys.path[:0] = [str(SDK_SRC), str(OFFICIAL_SRC)] from jwebot_official_extensions.local_commands import ( # noqa: E402 LocalCommandEngine, ) class TelemetryDebugTests(unittest.TestCase): def test_parses_journal_lines_and_renders_p50_p95(self): text = "\n".join( [ 'telemetry {"name":"gui.send.total","status":"ok",' '"elapsed_ms":100}', 'telemetry {"name":"gui.send.total","status":"ok",' '"elapsed_ms":200}', 'telemetry {"name":"gui.send.total","status":"ok",' '"elapsed_ms":300}', 'telemetry {"name":"provider.direct","status":"error",' '"elapsed_ms":9999}', 'not telemetry', ] ) rows = LocalCommandEngine.telemetry_rows_from_text(text) rendered = LocalCommandEngine.render_telemetry_summary(rows) self.assertEqual(len(rows), 4) self.assertIn("调试埋点 p50/p95", rendered) self.assertIn("gui.send.total", rendered) self.assertIn("n=3", rendered) self.assertIn("p50=200.0ms", rendered) self.assertIn("p95=290.0ms", rendered) self.assertNotIn("9999", rendered) if __name__ == "__main__": unittest.main()