diff --git a/Cargo.lock b/Cargo.lock index d327dd2a187..e1c47ea7762 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3296,6 +3296,18 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" +[[package]] +name = "downstream-calls-test" +version = "0.1.0" +dependencies = [ + "candid", + "dfn_core", + "ic-base-types", + "ic-cdk", + "ic-cdk-macros", + "serde", +] + [[package]] name = "drawille" version = "0.3.0" @@ -8697,6 +8709,7 @@ dependencies = [ "assert_matches", "candid", "canister-test", + "downstream-calls-test", "ic-base-types", "ic-certification-version", "ic-config", @@ -8743,6 +8756,7 @@ dependencies = [ "prometheus", "rand 0.8.5", "rand_chacha 0.3.1", + "serde", "slog", "tempfile", "xnet-test", diff --git a/Cargo.toml b/Cargo.toml index 2988743efc3..51594162177 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -300,6 +300,7 @@ members = [ "rs/rust_canisters/dfn_json", "rs/rust_canisters/dfn_macro", "rs/rust_canisters/dfn_protobuf", + "rs/rust_canisters/downstream_calls_test", "rs/rust_canisters/ecdsa", "rs/rust_canisters/http_types", "rs/rust_canisters/memory_test", diff --git a/rs/canister_sandbox/backend_lib/src/sandbox_server.rs b/rs/canister_sandbox/backend_lib/src/sandbox_server.rs index 1d9a13d7a7d..d82c99cd25b 100644 --- a/rs/canister_sandbox/backend_lib/src/sandbox_server.rs +++ b/rs/canister_sandbox/backend_lib/src/sandbox_server.rs @@ -161,7 +161,7 @@ mod tests { use ic_test_utilities::types::ids::{canister_test_id, subnet_test_id, user_test_id}; use ic_types::{ ingress::WasmResult, - messages::CallContextId, + messages::{CallContextId, RequestMetadata}, methods::{FuncRef, WasmMethod}, time::Time, CanisterTimer, ComputeAllocation, Cycles, MemoryAllocation, NumBytes, NumInstructions, @@ -218,6 +218,7 @@ mod tests { CanisterTimer::Inactive, 0, BTreeSet::from([controller]), + RequestMetadata::new(0, Time::from_nanos_since_unix_epoch(0)), ) } diff --git a/rs/canonical_state/src/encoding/tests/compatibility.rs b/rs/canonical_state/src/encoding/tests/compatibility.rs index c10d2c00ea2..0e2d0ad8a09 100644 --- a/rs/canonical_state/src/encoding/tests/compatibility.rs +++ b/rs/canonical_state/src/encoding/tests/compatibility.rs @@ -322,10 +322,10 @@ fn canonical_encoding_request_v14_plus() { .payment(Cycles::new(4)) .method_name("test".to_string()) .method_payload(vec![6]) - .metadata(Some(RequestMetadata { - call_tree_depth: 13, - call_tree_start_time: Time::from_nanos_since_unix_epoch(101), - })) + .metadata(Some(RequestMetadata::new( + 13, + Time::from_nanos_since_unix_epoch(101), + ))) .build() .into(); diff --git a/rs/canonical_state/src/encoding/tests/test_fixtures.rs b/rs/canonical_state/src/encoding/tests/test_fixtures.rs index 7f330099652..6a92938d7b4 100644 --- a/rs/canonical_state/src/encoding/tests/test_fixtures.rs +++ b/rs/canonical_state/src/encoding/tests/test_fixtures.rs @@ -33,10 +33,10 @@ pub fn request(certification_version: CertificationVersion) -> RequestOrResponse .method_name("test".to_string()) .method_payload(vec![6]) .metadata( - (certification_version >= CertificationVersion::V14).then_some(RequestMetadata { - call_tree_depth: 1, - call_tree_start_time: Time::from_nanos_since_unix_epoch(100_000), - }), + (certification_version >= CertificationVersion::V14).then_some(RequestMetadata::new( + 1, + Time::from_nanos_since_unix_epoch(100_000), + )), ) .build() .into() diff --git a/rs/canonical_state/src/encoding/types.rs b/rs/canonical_state/src/encoding/types.rs index 618fb667c95..57ca9e7e585 100644 --- a/rs/canonical_state/src/encoding/types.rs +++ b/rs/canonical_state/src/encoding/types.rs @@ -55,9 +55,9 @@ pub struct RequestMetadata { #[serde(skip_serializing_if = "Option::is_none")] pub call_tree_depth: Option, #[serde(skip_serializing_if = "Option::is_none")] - pub call_tree_start_time: Option