Coverage for qreward / utils / scheduler / metrics.py: 100.00%

13 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-04-23 19:32 +0000

1"""Execution metrics for schedule decorator.""" 

2 

3from dataclasses import dataclass 

4from typing import Any, Optional 

5 

6 

7@dataclass 

8class ScheduleMetrics: 

9 """Execution metrics collected after a schedule invocation. 

10 

11 Attributes: 

12 total_calls: Total number of task submissions (including retries 

13 and hedged requests). 

14 success_count: Number of successful completions. 

15 failure_count: Number of failed attempts. 

16 retry_count: Number of retries (excludes the first attempt). 

17 total_latency_ms: Wall-clock latency from start to finish 

18 in milliseconds. 

19 avg_latency_ms: Average latency per attempt in milliseconds. 

20 """ 

21 

22 total_calls: int 

23 success_count: int 

24 failure_count: int 

25 retry_count: int 

26 total_latency_ms: float 

27 avg_latency_ms: float 

28 

29 def export_to_otel(self, exporter: Optional[Any] = None) -> None: 

30 """Export metrics to OpenTelemetry via a TelemetryExporter. 

31 

32 Args: 

33 exporter: A TelemetryExporter instance. If None, this is a no-op. 

34 """ 

35 if exporter is not None: 

36 exporter.record(self)