From 24a0dc8f7d8b900d1e68dfb7d40e8666c4b900a3 Mon Sep 17 00:00:00 2001 From: Adam Spofford Date: Thu, 26 Feb 2026 13:20:34 -0800 Subject: [PATCH 1/2] Disable telemetry for local tests --- crates/icp-cli/src/telemetry.rs | 3 +++ crates/icp-cli/tests/common/context.rs | 2 ++ crates/icp-cli/tests/telemetry_tests.rs | 24 ++++++++++++++++++++---- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/crates/icp-cli/src/telemetry.rs b/crates/icp-cli/src/telemetry.rs index 47170120..4ae2dd86 100644 --- a/crates/icp-cli/src/telemetry.rs +++ b/crates/icp-cli/src/telemetry.rs @@ -296,6 +296,9 @@ fn random_send_interval(is_prerelease: bool) -> u64 { } fn should_send(telemetry_dir: &Path) -> bool { + if std::env::var_os("ICP_CLI_TEST_NO_TELEMETRY_UPLOAD").is_some() { + return false; + } let is_prerelease = env!("CARGO_PKG_VERSION").contains('-'); // Size-based trigger diff --git a/crates/icp-cli/tests/common/context.rs b/crates/icp-cli/tests/common/context.rs index 7fe22e03..65b68ec9 100644 --- a/crates/icp-cli/tests/common/context.rs +++ b/crates/icp-cli/tests/common/context.rs @@ -104,6 +104,8 @@ impl TestContext { cmd.env("ICP_HOME", self.home_path().join("icp")); cmd.env("PATH", self.os_path.clone()); cmd.env("ICP_CLI_KEYRING_MOCK_DIR", self.mock_cred_dir.clone()); + cmd.env("ICP_TELEMETRY_DISABLED", "1"); + cmd.env("ICP_CLI_TEST_NO_TELEMETRY_UPLOAD", "1"); // If SoftHSM has been initialized, include its config if let Some(hsm) = self.softhsm.get() { diff --git a/crates/icp-cli/tests/telemetry_tests.rs b/crates/icp-cli/tests/telemetry_tests.rs index a53252a9..a4590247 100644 --- a/crates/icp-cli/tests/telemetry_tests.rs +++ b/crates/icp-cli/tests/telemetry_tests.rs @@ -87,6 +87,20 @@ macro_rules! icp_with_telemetry { .env_remove("ICP_TELEMETRY_DISABLED"); (icp_home, cmd) }}; + ($ctx:expr, allow_upload) => {{ + let icp_home = $ctx.home_path().join("icp-home"); + let mut cmd = $ctx.icp(); + cmd.env("ICP_HOME", icp_home.as_str()) + .env_remove("CI") + .env_remove("DO_NOT_TRACK") + .env_remove("ICP_TELEMETRY_DISABLED") + .env_remove("ICP_CLI_TEST_NO_TELEMETRY_UPLOAD") + .env( + "ICP_TELEMETRY_ENDPOINT", + "https://telemetry.invalid/v1/events", + ); + (icp_home, cmd) + }}; } /// Each of the three opt-out env vars must prevent any telemetry state from @@ -273,7 +287,7 @@ fn telemetry_notice_suppressed_when_marker_exists() { #[test] fn telemetry_time_trigger_rotates_events() { let ctx = TestContext::new(); - let (icp_home, mut cmd) = icp_with_telemetry!(ctx); + let (icp_home, mut cmd) = icp_with_telemetry!(ctx, allow_upload); let telemetry_dir = icp_home.join("telemetry"); // Set next-send-time to Unix epoch (far in the past). @@ -297,7 +311,7 @@ fn telemetry_time_trigger_rotates_events() { #[test] fn telemetry_size_trigger_rotates_events() { let ctx = TestContext::new(); - let (icp_home, mut cmd) = icp_with_telemetry!(ctx); + let (icp_home, mut cmd) = icp_with_telemetry!(ctx, allow_upload); let telemetry_dir = icp_home.join("telemetry"); // next-send-time far in the future → only the size trigger can fire. @@ -352,6 +366,7 @@ fn telemetry_failed_send_is_silent() { ctx.icp() .args(["__telemetry-send-batch", batch_path.as_str()]) + .env_remove("ICP_CLI_TEST_NO_TELEMETRY_UPLOAD") .timeout(Duration::from_secs(15)) .assert() .success() @@ -397,6 +412,7 @@ fn telemetry_send_batch_delivers_data() { ctx.icp() .args(["__telemetry-send-batch", batch_path.as_str()]) .env("ICP_TELEMETRY_ENDPOINT", &endpoint) + .env_remove("ICP_CLI_TEST_NO_TELEMETRY_UPLOAD") .assert() .success() .stdout(predstr::is_empty()) @@ -415,7 +431,7 @@ fn telemetry_send_batch_delivers_data() { #[test] fn telemetry_stale_batches_deleted_on_trigger() { let ctx = TestContext::new(); - let (icp_home, mut cmd) = icp_with_telemetry!(ctx); + let (icp_home, mut cmd) = icp_with_telemetry!(ctx, allow_upload); let telemetry_dir = icp_home.join("telemetry"); // Time trigger will fire. @@ -449,7 +465,7 @@ fn telemetry_stale_batches_deleted_on_trigger() { #[test] fn telemetry_excess_batches_pruned_on_trigger() { let ctx = TestContext::new(); - let (icp_home, mut cmd) = icp_with_telemetry!(ctx); + let (icp_home, mut cmd) = icp_with_telemetry!(ctx, allow_upload); let telemetry_dir = icp_home.join("telemetry"); // Time trigger will fire. From 6927f5630056885d60739fd3511d16a740e412d0 Mon Sep 17 00:00:00 2001 From: Adam Spofford Date: Thu, 26 Feb 2026 13:28:26 -0800 Subject: [PATCH 2/2] unneeded --- crates/icp-cli/tests/telemetry_tests.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/crates/icp-cli/tests/telemetry_tests.rs b/crates/icp-cli/tests/telemetry_tests.rs index a4590247..aa0897d5 100644 --- a/crates/icp-cli/tests/telemetry_tests.rs +++ b/crates/icp-cli/tests/telemetry_tests.rs @@ -366,7 +366,6 @@ fn telemetry_failed_send_is_silent() { ctx.icp() .args(["__telemetry-send-batch", batch_path.as_str()]) - .env_remove("ICP_CLI_TEST_NO_TELEMETRY_UPLOAD") .timeout(Duration::from_secs(15)) .assert() .success() @@ -412,7 +411,6 @@ fn telemetry_send_batch_delivers_data() { ctx.icp() .args(["__telemetry-send-batch", batch_path.as_str()]) .env("ICP_TELEMETRY_ENDPOINT", &endpoint) - .env_remove("ICP_CLI_TEST_NO_TELEMETRY_UPLOAD") .assert() .success() .stdout(predstr::is_empty())