Files
JWeBot/tests/test_official_local_commands.py

53 lines
1.5 KiB
Python

#!/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()