| from __future__ import annotations |
|
|
| import tempfile |
| import unittest |
| from pathlib import Path |
|
|
| from core.app_state import AppState |
| from core.events import Event, EventType |
| from tracking.trackio_client import ( |
| TrackingClient, |
| TrackingConfig, |
| export_traces, |
| load_tracking_config, |
| read_trace_rows, |
| tracking_status_dict, |
| ) |
| from training.evaluation import default_prompt_cases, evaluate_responses, log_eval_metrics |
|
|
|
|
| class TrackingTest(unittest.TestCase): |
| def test_loads_tracking_config(self) -> None: |
| with tempfile.TemporaryDirectory() as tmp: |
| path = Path(tmp) / "training.yaml" |
| path.write_text( |
| "trackio:\n" |
| " enabled: true\n" |
| " project: demo\n" |
| " local_path: data/demo.jsonl\n", |
| encoding="utf-8", |
| ) |
|
|
| config = load_tracking_config(path) |
|
|
| self.assertTrue(config.enabled) |
| self.assertEqual(config.project, "demo") |
| self.assertEqual(config.local_path, "data/demo.jsonl") |
|
|
| def test_logs_events_to_local_jsonl(self) -> None: |
| with tempfile.TemporaryDirectory() as tmp: |
| path = Path(tmp) / "traces.jsonl" |
| client = TrackingClient(TrackingConfig(local_path=str(path))) |
|
|
| saved = client.log("dataset_loaded", {"rows": 2}) |
|
|
| self.assertEqual(saved, path) |
| self.assertEqual(read_trace_rows(path)[0]["payload"]["rows"], 2) |
|
|
| def test_app_state_logs_events_to_tracking_client(self) -> None: |
| with tempfile.TemporaryDirectory() as tmp: |
| path = Path(tmp) / "traces.jsonl" |
| client = TrackingClient(TrackingConfig(local_path=str(path))) |
| state = AppState(tracking_client=client) |
|
|
| state.emit(Event(EventType.INFERENCE_REQUEST, {"model_id": "demo"})) |
|
|
| self.assertEqual(read_trace_rows(path)[0]["event"], "inference_request") |
|
|
| def test_exports_traces_even_when_source_missing(self) -> None: |
| with tempfile.TemporaryDirectory() as tmp: |
| output = Path(tmp) / "exports" / "traces.jsonl" |
|
|
| exported = export_traces(Path(tmp) / "missing.jsonl", output) |
|
|
| self.assertEqual(exported, output) |
| self.assertEqual(output.read_text(encoding="utf-8"), "") |
|
|
| def test_logs_eval_metrics(self) -> None: |
| with tempfile.TemporaryDirectory() as tmp: |
| path = Path(tmp) / "traces.jsonl" |
| report = evaluate_responses(default_prompt_cases(), ["field note"]) |
| client = TrackingClient(TrackingConfig(local_path=str(path))) |
|
|
| saved = log_eval_metrics(report, client) |
|
|
| self.assertEqual(saved, path) |
| self.assertEqual(read_trace_rows(path)[0]["event"], "training_metrics") |
|
|
| def test_tracking_status_dict(self) -> None: |
| status = tracking_status_dict(TrackingClient(TrackingConfig(project="demo"))) |
|
|
| self.assertEqual(status["project"], "demo") |
| self.assertIn(status["mode"], {"local_jsonl", "trackio"}) |
|
|
|
|
| if __name__ == "__main__": |
| unittest.main() |
|
|