import time from omniff.observability import RequestTrace, get_logger, setup_logging def test_request_trace_creates_id(): trace = RequestTrace() assert len(trace.request_id) == 12 def test_span_measures_time(): trace = RequestTrace() with trace.span("test_op"): time.sleep(0.01) assert len(trace.spans) == 1 assert trace.spans[0].name == "test_op" assert trace.spans[0].duration_ms >= 5 def test_timing_breakdown(): trace = RequestTrace() with trace.span("a"): pass with trace.span("b"): pass bd = trace.timing_breakdown() assert "a" in bd assert "b" in bd def test_total_ms(): trace = RequestTrace() time.sleep(0.01) assert trace.total_ms >= 5 def test_span_metadata(): trace = RequestTrace() with trace.span("load", model="test-model"): pass assert trace.spans[0].metadata["model"] == "test-model" def test_get_logger(): log = get_logger("test") assert log.name == "omniff.test" def test_get_logger_root(): log = get_logger() assert log.name == "omniff" def test_setup_logging(): setup_logging(level="DEBUG") log = get_logger("test_setup") assert log.getEffectiveLevel() == 10