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