wlan_telemetry/processors/
recovery.rs1use crate::util::cobalt_logger::log_cobalt_batch;
5use fidl_fuchsia_metrics::{MetricEvent, MetricEventLoggerProxy, MetricEventPayload};
6
7use wlan_legacy_metrics_registry as metrics;
8
9pub struct RecoveryLogger {
10 cobalt_proxy: MetricEventLoggerProxy,
11}
12
13impl RecoveryLogger {
14 pub fn new(cobalt_proxy: MetricEventLoggerProxy) -> Self {
15 Self { cobalt_proxy }
16 }
17
18 pub async fn handle_recovery_event(&self) {
19 let metric_events = vec![MetricEvent {
20 metric_id: metrics::RECOVERY_OCCURRENCE_2_METRIC_ID,
21 event_codes: vec![],
22 payload: MetricEventPayload::Count(1),
23 }];
24 log_cobalt_batch!(self.cobalt_proxy, &metric_events, "handle_recovery_event");
25 }
26}
27
28#[cfg(test)]
29mod tests {
30 use super::*;
31 use crate::testing::{setup_test, TestHelper};
32 use futures::task::Poll;
33 use std::pin::pin;
34
35 fn run_handle_recovery_event(test_helper: &mut TestHelper, recovery_logger: &RecoveryLogger) {
36 let mut test_fut = pin!(recovery_logger.handle_recovery_event());
37 assert_eq!(
38 test_helper.run_until_stalled_drain_cobalt_events(&mut test_fut),
39 Poll::Ready(())
40 );
41 }
42
43 #[fuchsia::test]
44 fn test_handle_recovery_event() {
45 let mut test_helper = setup_test();
46 let recovery_logger = RecoveryLogger::new(test_helper.cobalt_proxy.clone());
47
48 run_handle_recovery_event(&mut test_helper, &recovery_logger);
49
50 let metrics = test_helper.get_logged_metrics(metrics::RECOVERY_OCCURRENCE_2_METRIC_ID);
51 assert_eq!(metrics.len(), 1);
52 assert_eq!(metrics[0].payload, MetricEventPayload::Count(1));
53 }
54}