Spaces:
Running on CPU Upgrade
Running on CPU Upgrade
| from types import SimpleNamespace | |
| import pytest | |
| from agent.core import telemetry | |
| class FakeSession: | |
| def __init__(self): | |
| self.events = [] | |
| async def send_event(self, event): | |
| self.events.append(event) | |
| def test_extract_usage_reads_hf_router_cache_write_tokens(): | |
| response = SimpleNamespace( | |
| usage=SimpleNamespace( | |
| prompt_tokens=100, | |
| completion_tokens=10, | |
| total_tokens=110, | |
| prompt_tokens_details=SimpleNamespace( | |
| cached_tokens=80, | |
| cache_write_tokens=20, | |
| ), | |
| ) | |
| ) | |
| usage = telemetry.extract_usage(response) | |
| assert usage["cache_read_tokens"] == 80 | |
| assert usage["cache_creation_tokens"] == 20 | |
| async def test_record_hf_job_complete_emits_runtime_cost(monkeypatch): | |
| async def fake_catalog(): | |
| return {"a100-large": 4.0} | |
| monkeypatch.setattr(telemetry, "hf_jobs_price_catalog", fake_catalog) | |
| monkeypatch.setattr(telemetry.time, "monotonic", lambda: 130.0) | |
| session = FakeSession() | |
| await telemetry.record_hf_job_complete( | |
| session, | |
| SimpleNamespace(id="job-1"), | |
| flavor="a100-large", | |
| final_status="COMPLETED", | |
| submit_ts=100.0, | |
| ) | |
| event = session.events[0] | |
| assert event.event_type == "hf_job_complete" | |
| assert event.data["wall_time_s"] == 30 | |
| assert event.data["billable_seconds_estimate"] == 30 | |
| assert event.data["price_usd_per_hour"] == 4.0 | |
| assert event.data["estimated_cost_usd"] == round(4.0 * 30 / 3600, 4) | |
| assert event.data["cost_estimate_source"] == "runtime_price_catalog" | |
| async def test_record_hf_job_complete_keeps_unknown_hardware_countable(monkeypatch): | |
| async def fake_catalog(): | |
| return {} | |
| monkeypatch.setattr(telemetry, "hf_jobs_price_catalog", fake_catalog) | |
| monkeypatch.setattr(telemetry.time, "monotonic", lambda: 160.0) | |
| session = FakeSession() | |
| await telemetry.record_hf_job_complete( | |
| session, | |
| SimpleNamespace(id="job-2"), | |
| flavor="future-gpu", | |
| final_status="FAILED", | |
| submit_ts=100.0, | |
| ) | |
| data = session.events[0].data | |
| assert data["wall_time_s"] == 60 | |
| assert data["billable_seconds_estimate"] == 60 | |
| assert data["price_usd_per_hour"] is None | |
| assert data["estimated_cost_usd"] is None | |
| assert data["cost_estimate_source"] == "unknown_price" | |