53 lines
1.5 KiB
Python
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()
|