From 86fb8ce1f0f2821d1dba3d4f27079cff38fae57f Mon Sep 17 00:00:00 2001 From: ivmarkov Date: Thu, 4 May 2023 05:26:13 +0000 Subject: [PATCH] Fix no_std errors --- matter/tests/common/im_engine.rs | 30 ++++++++++------------ matter/tests/common/mod.rs | 7 +++++ matter/tests/data_model/acl_and_dataver.rs | 19 +++++++------- matter/tests/data_model/attribute_lists.rs | 3 ++- matter/tests/data_model/attributes.rs | 17 ++++++------ matter/tests/data_model/commands.rs | 9 ++++--- matter/tests/data_model/long_reads.rs | 7 ++--- matter/tests/data_model/timed_requests.rs | 9 ++++--- matter/tests/interaction_model.rs | 7 ++--- 9 files changed, 60 insertions(+), 48 deletions(-) diff --git a/matter/tests/common/im_engine.rs b/matter/tests/common/im_engine.rs index e140282..6d398a4 100644 --- a/matter/tests/common/im_engine.rs +++ b/matter/tests/common/im_engine.rs @@ -44,19 +44,14 @@ use matter::{ transport::packet::Packet, transport::{ exchange::{self, Exchange, ExchangeCtx}, - network::Address, + network::{Address, IpAddr, Ipv4Addr, SocketAddr}, packet::MAX_RX_BUF_SIZE, proto_ctx::ProtoCtx, session::{CaseDetails, CloneData, NocCatIds, SessionMgr, SessionMode}, }, - utils::{ - epoch::{sys_epoch, sys_utc_calendar}, - rand::dummy_rand, - writebuf::WriteBuf, - }, + utils::{rand::dummy_rand, writebuf::WriteBuf}, Matter, }; -use std::net::{Ipv4Addr, SocketAddr}; use super::echo_cluster::EchoCluster; @@ -109,14 +104,17 @@ impl<'a> ImInput<'a> { pub type DmHandler<'a> = handler_chain_type!(OnOffCluster, EchoCluster, DescriptorCluster, EchoCluster | RootEndpointHandler<'a>); pub fn matter(mdns: &mut dyn Mdns) -> Matter<'_> { - Matter::new( - &BASIC_INFO, - mdns, - sys_epoch, - dummy_rand, - sys_utc_calendar, - 5540, - ) + #[cfg(feature = "std")] + use matter::utils::epoch::sys_epoch as epoch; + #[cfg(feature = "std")] + use matter::utils::epoch::sys_utc_calendar as utc_calendar; + + #[cfg(not(feature = "std"))] + use matter::utils::epoch::dummy_epoch as epoch; + #[cfg(not(feature = "std"))] + use matter::utils::epoch::dummy_utc_calendar as utc_calendar; + + Matter::new(&BASIC_INFO, mdns, epoch, dummy_rand, utc_calendar, 5540) } /// An Interaction Model Engine to facilitate easy testing @@ -203,7 +201,7 @@ impl<'a> ImEngine<'a> { 10, 30, Address::Udp(SocketAddr::new( - std::net::IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), + IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 5542, )), SessionMode::Case(CaseDetails::new(1, &input.cat_ids)), diff --git a/matter/tests/common/mod.rs b/matter/tests/common/mod.rs index 0d2cc9c..96682b9 100644 --- a/matter/tests/common/mod.rs +++ b/matter/tests/common/mod.rs @@ -20,3 +20,10 @@ pub mod commands; pub mod echo_cluster; pub mod handlers; pub mod im_engine; + +pub fn init_env_logger() { + #[cfg(feature = "std")] + { + let _ = env_logger::try_init(); + } +} diff --git a/matter/tests/data_model/acl_and_dataver.rs b/matter/tests/data_model/acl_and_dataver.rs index 535555b..81f220a 100644 --- a/matter/tests/data_model/acl_and_dataver.rs +++ b/matter/tests/data_model/acl_and_dataver.rs @@ -36,6 +36,7 @@ use crate::{ attributes::*, echo_cluster::{self, ATTR_WRITE_DEFAULT_VALUE}, im_engine::{matter, ImEngine}, + init_env_logger, }, }; @@ -43,7 +44,7 @@ use crate::{ /// Ensure that wildcard read attributes don't include error response /// and silently drop the data when access is not granted fn wc_read_attribute() { - let _ = env_logger::try_init(); + init_env_logger(); let wc_att1 = GenericPath::new( None, @@ -101,7 +102,7 @@ fn wc_read_attribute() { /// Ensure that exact read attribute includes error response /// when access is not granted fn exact_read_attribute() { - let _ = env_logger::try_init(); + init_env_logger(); let wc_att1 = GenericPath::new( Some(0), @@ -139,7 +140,7 @@ fn exact_read_attribute() { /// Ensure that an write attribute with a wildcard either performs the operation, /// if allowed, or silently drops the request fn wc_write_attribute() { - let _ = env_logger::try_init(); + init_env_logger(); let val0 = 10; let val1 = 20; let attr_data0 = |tag, t: &mut TLVWriter| { @@ -228,7 +229,7 @@ fn wc_write_attribute() { /// Ensure that an write attribute without a wildcard returns an error when the /// ACL disallows the access, and returns success once access is granted fn exact_write_attribute() { - let _ = env_logger::try_init(); + init_env_logger(); let val0 = 10; let attr_data0 = |tag, t: &mut TLVWriter| { let _ = t.u16(tag, val0); @@ -278,7 +279,7 @@ fn exact_write_attribute() { /// ACL disallows the access, and returns success once access is granted to the CAT ID /// The Accessor CAT version is one more than that in the ACL fn exact_write_attribute_noc_cat() { - let _ = env_logger::try_init(); + init_env_logger(); let val0 = 10; let attr_data0 = |tag, t: &mut TLVWriter| { let _ = t.u16(tag, val0); @@ -330,7 +331,7 @@ fn exact_write_attribute_noc_cat() { #[test] /// Ensure that a write attribute with insufficient permissions is rejected fn insufficient_perms_write() { - let _ = env_logger::try_init(); + init_env_logger(); let val0 = 10; let attr_data0 = |tag, t: &mut TLVWriter| { let _ = t.u16(tag, val0); @@ -379,7 +380,7 @@ fn insufficient_perms_write() { /// - Write Attr to ACL Cluster (allowed, this ACL also grants universal access) /// - Write Attr to Echo Cluster again (successful this time) fn write_with_runtime_acl_add() { - let _ = env_logger::try_init(); + init_env_logger(); let peer = 98765; let mut mdns = DummyMdns {}; let matter = matter(&mut mdns); @@ -446,7 +447,7 @@ fn test_read_data_ver() { // 1 Attr Read Requests // - wildcard endpoint, att1 // - 2 responses are expected - let _ = env_logger::try_init(); + init_env_logger(); let peer = 98765; let mut mdns = DummyMdns {}; let matter = matter(&mut mdns); @@ -549,7 +550,7 @@ fn test_write_data_ver() { // 1 Attr Read Requests // - wildcard endpoint, att1 // - 2 responses are expected - let _ = env_logger::try_init(); + init_env_logger(); let peer = 98765; let mut mdns = DummyMdns {}; let matter = matter(&mut mdns); diff --git a/matter/tests/data_model/attribute_lists.rs b/matter/tests/data_model/attribute_lists.rs index ace1f3d..aaa2b63 100644 --- a/matter/tests/data_model/attribute_lists.rs +++ b/matter/tests/data_model/attribute_lists.rs @@ -29,6 +29,7 @@ use matter::{ use crate::common::{ echo_cluster::{self, TestChecker}, im_engine::{matter, ImEngine}, + init_env_logger, }; // Helper for handling Write Attribute sequences @@ -40,7 +41,7 @@ fn attr_list_ops() { let val1: u16 = 15; let tc_handle = TestChecker::get().unwrap(); - let _ = env_logger::try_init(); + init_env_logger(); let delete_item = EncodeValue::Closure(&|tag, t| { let _ = t.null(tag); diff --git a/matter/tests/data_model/attributes.rs b/matter/tests/data_model/attributes.rs index 17e4112..6d1072c 100644 --- a/matter/tests/data_model/attributes.rs +++ b/matter/tests/data_model/attributes.rs @@ -35,6 +35,7 @@ use crate::{ attributes::*, echo_cluster, im_engine::{matter, ImEngine}, + init_env_logger, }, }; @@ -44,7 +45,7 @@ fn test_read_success() { // - first on endpoint 0, att1 // - second on endpoint 1, att2 // - third on endpoint 1, attcustom a custom attribute - let _ = env_logger::try_init(); + init_env_logger(); let ep0_att1 = GenericPath::new( Some(0), @@ -86,7 +87,7 @@ fn test_read_unsupported_fields() { // - attribute doesn't exist - UnsupportedAttribute // - attribute doesn't exist and endpoint is wildcard - Silently ignore // - attribute doesn't exist and cluster is wildcard - Silently ignore - let _ = env_logger::try_init(); + init_env_logger(); let invalid_endpoint = GenericPath::new( Some(2), @@ -129,7 +130,7 @@ fn test_read_wc_endpoint_all_have_clusters() { // 1 Attr Read Requests // - wildcard endpoint, att1 // - 2 responses are expected - let _ = env_logger::try_init(); + init_env_logger(); let wc_ep_att1 = GenericPath::new( None, @@ -160,7 +161,7 @@ fn test_read_wc_endpoint_only_1_has_cluster() { // 1 Attr Read Requests // - wildcard endpoint, on/off Cluster OnOff Attribute // - 1 response are expected - let _ = env_logger::try_init(); + init_env_logger(); let wc_ep_onoff = GenericPath::new( None, @@ -185,7 +186,7 @@ fn test_read_wc_endpoint_wc_attribute() { // 1 Attr Read Request // - wildcard endpoint, wildcard attribute // - 8 responses are expected, 1+3 attributes on endpoint 0, 1+3 on endpoint 1 - let _ = env_logger::try_init(); + init_env_logger(); let wc_ep_wc_attr = GenericPath::new(None, Some(echo_cluster::ID), None); let input = &[AttrPath::new(&wc_ep_wc_attr)]; @@ -294,7 +295,7 @@ fn test_write_success() { // - second on endpoint 1, AttWrite let val0 = 10; let val1 = 15; - let _ = env_logger::try_init(); + init_env_logger(); let attr_data0 = |tag, t: &mut TLVWriter| { let _ = t.u16(tag, val0); }; @@ -342,7 +343,7 @@ fn test_write_wc_endpoint() { // 1 Attr Write Request // - wildcard endpoint, AttWrite let val0 = 10; - let _ = env_logger::try_init(); + init_env_logger(); let attr_data0 = |tag, t: &mut TLVWriter| { let _ = t.u16(tag, val0); }; @@ -390,7 +391,7 @@ fn test_write_unsupported_fields() { // - attribute doesn't exist and endpoint is wildcard - Silently ignore // - cluster is wildcard - Cluster cannot be wildcard - UnsupportedCluster // - attribute is wildcard - Attribute cannot be wildcard - UnsupportedAttribute - let _ = env_logger::try_init(); + init_env_logger(); let val0 = 50; let attr_data0 = |tag, t: &mut TLVWriter| { diff --git a/matter/tests/data_model/commands.rs b/matter/tests/data_model/commands.rs index 50c1a8a..a232f26 100644 --- a/matter/tests/data_model/commands.rs +++ b/matter/tests/data_model/commands.rs @@ -21,6 +21,7 @@ use crate::{ commands::*, echo_cluster, im_engine::{matter, ImEngine}, + init_env_logger, }, echo_req, echo_resp, }; @@ -39,7 +40,7 @@ fn test_invoke_cmds_success() { // 2 echo Requests // - one on endpoint 0 with data 5, // - another on endpoint 1 with data 10 - let _ = env_logger::try_init(); + init_env_logger(); let input = &[echo_req!(0, 5), echo_req!(1, 10)]; let expected = &[echo_resp!(0, 10), echo_resp!(1, 30)]; @@ -54,7 +55,7 @@ fn test_invoke_cmds_unsupported_fields() { // - cluster doesn't exist and endpoint is wildcard - UnsupportedCluster // - command doesn't exist - UnsupportedCommand // - command doesn't exist and endpoint is wildcard - UnsupportedCommand - let _ = env_logger::try_init(); + init_env_logger(); let invalid_endpoint = CmdPath::new( Some(2), @@ -105,7 +106,7 @@ fn test_invoke_cmds_unsupported_fields() { fn test_invoke_cmd_wc_endpoint_all_have_clusters() { // 1 echo Request with wildcard endpoint // should generate 2 responses from the echo clusters on both - let _ = env_logger::try_init(); + init_env_logger(); let path = CmdPath::new( None, Some(echo_cluster::ID), @@ -120,7 +121,7 @@ fn test_invoke_cmd_wc_endpoint_all_have_clusters() { fn test_invoke_cmd_wc_endpoint_only_1_has_cluster() { // 1 on command for on/off cluster with wildcard endpoint // should generate 1 response from the on-off cluster - let _ = env_logger::try_init(); + init_env_logger(); let target = CmdPath::new( None, diff --git a/matter/tests/data_model/long_reads.rs b/matter/tests/data_model/long_reads.rs index 693f1df..a396cc0 100644 --- a/matter/tests/data_model/long_reads.rs +++ b/matter/tests/data_model/long_reads.rs @@ -34,7 +34,7 @@ use matter::{ tlv::{self, ElementType, FromTLV, TLVElement, TagType, ToTLV}, transport::{ exchange::{self, Exchange}, - udp::MAX_RX_BUF_SIZE, + packet::MAX_RX_BUF_SIZE, }, Matter, }; @@ -45,6 +45,7 @@ use crate::{ attributes::*, echo_cluster as echo, im_engine::{matter, ImEngine, ImInput}, + init_env_logger, }, }; @@ -251,7 +252,7 @@ fn wildcard_read_resp(part: u8) -> Vec> { #[test] fn test_long_read_success() { // Read the entire attribute database, which requires 2 reads to complete - let _ = env_logger::try_init(); + init_env_logger(); let mut mdns = DummyMdns; let matter = matter(&mut mdns); let mut lr = LongRead::new(&matter); @@ -285,7 +286,7 @@ fn test_long_read_success() { #[test] fn test_long_read_subscription_success() { // Subscribe to the entire attribute database, which requires 2 reads to complete - let _ = env_logger::try_init(); + init_env_logger(); let mut mdns = DummyMdns; let matter = matter(&mut mdns); let mut lr = LongRead::new(&matter); diff --git a/matter/tests/data_model/timed_requests.rs b/matter/tests/data_model/timed_requests.rs index cf5ddbd..3f44190 100644 --- a/matter/tests/data_model/timed_requests.rs +++ b/matter/tests/data_model/timed_requests.rs @@ -32,6 +32,7 @@ use crate::{ echo_cluster, handlers::{TimedInvResponse, WriteResponse}, im_engine::{matter, ImEngine}, + init_env_logger, }, echo_req, echo_resp, }; @@ -41,7 +42,7 @@ fn test_timed_write_fail_and_success() { // - 1 Timed Attr Write Transaction should fail due to timeout // - 1 Timed Attr Write Transaction should succeed let val0 = 10; - let _ = env_logger::try_init(); + init_env_logger(); let attr_data0 = |tag, t: &mut TLVWriter| { let _ = t.u16(tag, val0); }; @@ -98,7 +99,7 @@ fn test_timed_write_fail_and_success() { #[test] fn test_timed_cmd_success() { // A timed request that works - let _ = env_logger::try_init(); + init_env_logger(); let input = &[echo_req!(0, 5), echo_req!(1, 10)]; let expected = &[echo_resp!(0, 10), echo_resp!(1, 30)]; @@ -115,7 +116,7 @@ fn test_timed_cmd_success() { #[test] fn test_timed_cmd_timeout() { // A timed request that is executed after t imeout - let _ = env_logger::try_init(); + init_env_logger(); let input = &[echo_req!(0, 5), echo_req!(1, 10)]; ImEngine::new_with_timed_commands( @@ -131,7 +132,7 @@ fn test_timed_cmd_timeout() { #[test] fn test_timed_cmd_timedout_mismatch() { // A timed request with timeout mismatch - let _ = env_logger::try_init(); + init_env_logger(); let input = &[echo_req!(0, 5), echo_req!(1, 10)]; ImEngine::new_with_timed_commands( diff --git a/matter/tests/interaction_model.rs b/matter/tests/interaction_model.rs index b73ab46..5d2c21a 100644 --- a/matter/tests/interaction_model.rs +++ b/matter/tests/interaction_model.rs @@ -24,6 +24,9 @@ use matter::interaction_model::core::Transaction; use matter::transport::exchange::Exchange; use matter::transport::exchange::ExchangeCtx; use matter::transport::network::Address; +use matter::transport::network::IpAddr; +use matter::transport::network::Ipv4Addr; +use matter::transport::network::SocketAddr; use matter::transport::packet::Packet; use matter::transport::packet::MAX_RX_BUF_SIZE; use matter::transport::packet::MAX_TX_BUF_SIZE; @@ -31,8 +34,6 @@ use matter::transport::proto_ctx::ProtoCtx; use matter::transport::session::SessionMgr; use matter::utils::epoch::dummy_epoch; use matter::utils::rand::dummy_rand; -use std::net::Ipv4Addr; -use std::net::SocketAddr; struct Node { pub endpoint: u16, @@ -95,7 +96,7 @@ fn handle_data(action: OpCode, data_in: &[u8], data_out: &mut [u8]) -> (DataMode .get_or_add( 0, Address::Udp(SocketAddr::new( - std::net::IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), + IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 5542, )), None,