summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorziyiw <ziyiw@google.com>2024-04-18 21:23:07 +0000
committerziyiw <ziyiw@google.com>2024-04-18 21:23:07 +0000
commit36a4cafa7b315a90000bce79cfc060a28824e8e6 (patch)
tree65a5fc4a9a63f3feb33453f425312f34252b4688
parent5835b6498cad3cd40a3f2809bd347440209244c3 (diff)
downloaduwb-36a4cafa7b315a90000bce79cfc060a28824e8e6.tar.gz
[unit_test] Use NopLogger in unit tests to improve coverage.
Test: libuwb_core_tests Bug: 330169927 Change-Id: I14bab732e551ea61f8eec99e0b89ef5f75a18041
-rw-r--r--src/rust/uwb_core/src/uci/uci_manager.rs126
1 files changed, 106 insertions, 20 deletions
diff --git a/src/rust/uwb_core/src/uci/uci_manager.rs b/src/rust/uwb_core/src/uci/uci_manager.rs
index fcbb921..065da83 100644
--- a/src/rust/uwb_core/src/uci/uci_manager.rs
+++ b/src/rust/uwb_core/src/uci/uci_manager.rs
@@ -1779,6 +1779,32 @@ mod tests {
(uci_manager, hal)
}
+ async fn setup_uci_manager_with_open_hal_nop_logger<F, Fut>(
+ setup_hal_fn: F,
+ uci_logger_mode: UciLoggerMode,
+ ) -> (UciManagerImpl, MockUciHal)
+ where
+ F: FnOnce(MockUciHal) -> Fut,
+ Fut: Future<Output = ()>,
+ {
+ init_test_logging();
+
+ let mut hal = MockUciHal::new();
+ // Open the hal.
+ setup_hal_for_open(&mut hal);
+
+ // Verify open_hal() is working.
+ let uci_manager =
+ UciManagerImpl::new(hal.clone(), NopUciLogger::default(), uci_logger_mode);
+ let result = uci_manager.open_hal().await;
+ assert!(result.is_ok());
+ assert!(hal.wait_expected_calls_done().await);
+
+ setup_hal_fn(hal.clone()).await;
+
+ (uci_manager, hal)
+ }
+
#[tokio::test]
async fn test_open_hal_without_notification() {
init_test_logging();
@@ -2112,6 +2138,39 @@ mod tests {
(uci_manager, hal)
}
+ async fn setup_uci_manager_with_session_initialized_nop_logger<F, Fut>(
+ setup_hal_fn: F,
+ uci_logger_mode: UciLoggerMode,
+ session_id: u32,
+ session_token: u32,
+ ) -> (UciManagerImpl, MockUciHal)
+ where
+ F: FnOnce(MockUciHal) -> Fut,
+ Fut: Future<Output = ()>,
+ {
+ let session_type = SessionType::FiraRangingSession;
+
+ init_test_logging();
+
+ let mut hal = MockUciHal::new();
+ setup_hal_for_session_initialize(&mut hal, session_type, session_id, session_token);
+
+ // Verify open_hal() is working.
+ let uci_manager =
+ UciManagerImpl::new(hal.clone(), NopUciLogger::default(), uci_logger_mode);
+ let result = uci_manager.open_hal().await;
+ assert!(result.is_ok());
+
+ // Verify session is initialized.
+ let result = uci_manager.session_init(session_id, session_type).await;
+ assert!(result.is_ok());
+ assert!(hal.wait_expected_calls_done().await);
+
+ setup_hal_fn(hal.clone()).await;
+
+ (uci_manager, hal)
+ }
+
#[tokio::test]
async fn test_session_init_ok() {
let session_id = 0x123;
@@ -2131,10 +2190,9 @@ mod tests {
async fn test_session_init_v2_ok() {
let session_id = 0x123;
let session_token = 0x321; // different session handle
- let (_, mut mock_hal) = setup_uci_manager_with_session_initialized(
+ let (_, mut mock_hal) = setup_uci_manager_with_session_initialized_nop_logger(
|_hal| async move {},
UciLoggerMode::Disabled,
- mpsc::unbounded_channel::<UciLogEvent>().0,
session_id,
session_token,
)
@@ -2173,7 +2231,7 @@ mod tests {
let session_id = 0x123;
let session_token = 0x321; // different session handle
- let (uci_manager, mut mock_hal) = setup_uci_manager_with_session_initialized(
+ let (uci_manager, mut mock_hal) = setup_uci_manager_with_session_initialized_nop_logger(
|mut hal| async move {
let cmd = UciCommand::SessionDeinit { session_token };
let resp = into_uci_hal_packets(uwb_uci_packets::SessionDeinitRspBuilder {
@@ -2183,7 +2241,6 @@ mod tests {
hal.expected_send_command(cmd, resp, Ok(()));
},
UciLoggerMode::Disabled,
- mpsc::unbounded_channel::<UciLogEvent>().0,
session_id,
session_token,
)
@@ -2236,7 +2293,7 @@ mod tests {
let config_tlv = AppConfigTlv::new(AppConfigTlvType::DeviceType, vec![0x12, 0x34, 0x56]);
let config_tlv_clone = config_tlv.clone();
- let (uci_manager, mut mock_hal) = setup_uci_manager_with_session_initialized(
+ let (uci_manager, mut mock_hal) = setup_uci_manager_with_session_initialized_nop_logger(
|mut hal| async move {
let cmd = UciCommand::SessionSetAppConfig {
session_token,
@@ -2250,7 +2307,6 @@ mod tests {
hal.expected_send_command(cmd, resp, Ok(()));
},
UciLoggerMode::Disabled,
- mpsc::unbounded_channel::<UciLogEvent>().0,
session_id,
session_token,
)
@@ -2614,7 +2670,7 @@ mod tests {
};
let controlee_clone = controlee.clone();
- let (uci_manager, mut mock_hal) = setup_uci_manager_with_session_initialized(
+ let (uci_manager, mut mock_hal) = setup_uci_manager_with_session_initialized_nop_logger(
|mut hal| async move {
let cmd = UciCommand::SessionUpdateControllerMulticastList {
session_token,
@@ -2631,7 +2687,6 @@ mod tests {
hal.expected_send_command(cmd, resp, Ok(()));
},
UciLoggerMode::Disabled,
- mpsc::unbounded_channel::<UciLogEvent>().0,
session_id,
session_token,
)
@@ -3047,7 +3102,7 @@ mod tests {
let app_config = AppConfigStatus { cfg_id, status };
let cfg_status = vec![app_config];
- let (uci_manager, mut mock_hal) = setup_uci_manager_with_open_hal(
+ let (uci_manager, mut mock_hal) = setup_uci_manager_with_open_hal_nop_logger(
|mut hal| async move {
let cmd = UciCommand::RawUciCmd { mt, gid, oid, payload: cmd_payload_clone };
let resp = into_uci_hal_packets(uwb_uci_packets::SessionSetAppConfigRspBuilder {
@@ -3058,7 +3113,6 @@ mod tests {
hal.expected_send_command(cmd, resp, Ok(()));
},
UciLoggerMode::Disabled,
- mpsc::unbounded_channel::<UciLogEvent>().0,
)
.await;
@@ -3238,10 +3292,9 @@ mod tests {
let oid = 0x1;
let cmd_payload = vec![0x11, 0x22, 0x33, 0x44];
- let (uci_manager, mut mock_hal) = setup_uci_manager_with_open_hal(
+ let (uci_manager, mut mock_hal) = setup_uci_manager_with_open_hal_nop_logger(
move |_hal| async {},
UciLoggerMode::Disabled,
- mpsc::unbounded_channel::<UciLogEvent>().0,
)
.await;
@@ -3333,7 +3386,7 @@ mod tests {
let resp_mt: u8 = 0x7; // Undefined MessageType
let resp_payload = vec![0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08];
- let (uci_manager, mut mock_hal) = setup_uci_manager_with_open_hal(
+ let (uci_manager, mut mock_hal) = setup_uci_manager_with_open_hal_nop_logger(
|mut hal| async move {
let cmd = UciCommand::RawUciCmd {
mt: cmd_mt.into(),
@@ -3345,7 +3398,6 @@ mod tests {
hal.expected_send_command(cmd, vec![resp], Ok(()));
},
UciLoggerMode::Disabled,
- mpsc::unbounded_channel::<UciLogEvent>().0,
)
.await;
@@ -3416,6 +3468,43 @@ mod tests {
(uci_manager, hal)
}
+ async fn setup_uci_manager_with_session_active_nop_logger<F, Fut>(
+ setup_hal_fn: F,
+ uci_logger_mode: UciLoggerMode,
+ session_id: u32,
+ session_token: u32,
+ ) -> (UciManagerImpl, MockUciHal)
+ where
+ F: FnOnce(MockUciHal) -> Fut,
+ Fut: Future<Output = ()>,
+ {
+ let session_type = SessionType::FiraRangingSession;
+
+ init_test_logging();
+
+ let mut hal = MockUciHal::new();
+ setup_hal_for_session_active(&mut hal, session_type, session_id, session_token);
+
+ // Verify open_hal() is working.
+ let uci_manager =
+ UciManagerImpl::new(hal.clone(), NopUciLogger::default(), uci_logger_mode);
+ let result = uci_manager.open_hal().await;
+ assert!(result.is_ok());
+
+ // Verify session is initialized.
+ let result = uci_manager.session_init(session_id, session_type).await;
+ assert!(result.is_ok());
+
+ // Verify session is started.
+ let result = uci_manager.range_start(session_id).await;
+ assert!(result.is_ok());
+ assert!(hal.wait_expected_calls_done().await);
+
+ setup_hal_fn(hal.clone()).await;
+
+ (uci_manager, hal)
+ }
+
// Test Data packet receive for a single packet (on an active UWB session).
#[tokio::test]
async fn test_data_packet_recv_ok() {
@@ -3519,10 +3608,9 @@ mod tests {
};
// Setup an active UWBS session over which the DataPacket will be received by the Host.
- let (mut uci_manager, mut mock_hal) = setup_uci_manager_with_session_active(
+ let (mut uci_manager, mut mock_hal) = setup_uci_manager_with_session_active_nop_logger(
|_| async move {},
UciLoggerMode::Disabled,
- mpsc::unbounded_channel::<UciLogEvent>().0,
session_id,
session_token,
)
@@ -3675,7 +3763,7 @@ mod tests {
let status = DataTransferNtfStatusCode::UciDataTransferStatusRepetitionOk;
let tx_count = 0x00;
- let (uci_manager, mut mock_hal) = setup_uci_manager_with_session_active(
+ let (uci_manager, mut mock_hal) = setup_uci_manager_with_session_active_nop_logger(
|mut hal| async move {
// Now setup the notifications that should be received after a Data packet send.
let data_packet_snd =
@@ -3695,7 +3783,6 @@ mod tests {
hal.expected_send_packet(data_packet_snd, ntfs, Ok(()));
},
UciLoggerMode::Disabled,
- mpsc::unbounded_channel::<UciLogEvent>().0,
session_id,
session_token,
)
@@ -3858,7 +3945,7 @@ mod tests {
}
}
- let (uci_manager, mut mock_hal) = setup_uci_manager_with_session_active(
+ let (uci_manager, mut mock_hal) = setup_uci_manager_with_session_active_nop_logger(
|mut hal| async move {
// Expected UCI CMD CORE_GET_DEVICE_INFO
let cmd = UciCommand::CoreGetDeviceInfo;
@@ -3917,7 +4004,6 @@ mod tests {
hal.expected_send_packet(data_packet_snd_fragment_2, ntfs, Ok(()));
},
UciLoggerMode::Disabled,
- mpsc::unbounded_channel::<UciLogEvent>().0,
session_id,
session_token,
)