Skip to content
Merged
1 change: 1 addition & 0 deletions libdd-telemetry/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,4 @@ winver = "1.0.0"
[dev-dependencies]
tracing-subscriber = "0.3.22"
tokio = { version = "1.23", features = ["sync", "io-util", "rt-multi-thread"] }
libdd-common = { path = "../libdd-common", features = ["test-utils"] }
41 changes: 41 additions & 0 deletions libdd-telemetry/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ pub struct Config {
/// Enables debug logging
pub telemetry_debug_logging_enabled: bool,
pub telemetry_heartbeat_interval: Duration,
pub telemetry_extended_heartbeat_interval: Duration,
pub direct_submission_enabled: bool,
/// Prevents LifecycleAction::Stop from terminating the worker (except if the WorkerHandle is
/// dropped)
Expand Down Expand Up @@ -163,6 +164,7 @@ impl Default for Config {
endpoint: None,
telemetry_debug_logging_enabled: false,
telemetry_heartbeat_interval: Duration::from_secs(60),
telemetry_extended_heartbeat_interval: Duration::from_secs(60 * 60 * 24),
direct_submission_enabled: false,
restartable: false,
debug_enabled: false,
Expand Down Expand Up @@ -246,6 +248,7 @@ impl Config {
endpoint: None,
telemetry_debug_logging_enabled: settings.shared_lib_debug,
telemetry_heartbeat_interval: settings.telemetry_heartbeat_interval,
telemetry_extended_heartbeat_interval: settings.telemetry_extended_heartbeat_interval,
direct_submission_enabled: settings.direct_submission_enabled,
restartable: false,
debug_enabled: false,
Expand Down Expand Up @@ -473,4 +476,42 @@ mod tests {
.to_string_lossy()
);
}

#[test]
fn test_from_settings_propagates_extended_heartbeat_interval() {
use std::time::Duration;

let custom_interval = Duration::from_secs(120);
let settings = Settings {
telemetry_extended_heartbeat_interval: custom_interval,
..Default::default()
};
let cfg = Config::from_settings(&settings);
assert_eq!(cfg.telemetry_extended_heartbeat_interval, custom_interval);
}

#[test]
fn test_from_settings_default_extended_heartbeat_interval() {
use std::time::Duration;

let settings = Settings::default();
let cfg = Config::from_settings(&settings);
assert_eq!(
cfg.telemetry_extended_heartbeat_interval,
Duration::from_secs(60 * 60 * 24)
);
}

#[test]
fn test_extended_heartbeat_interval_from_env() {
use libdd_common::test_utils::EnvGuard;
use std::time::Duration;

let _guard = EnvGuard::set("DD_TELEMETRY_EXTENDED_HEARTBEAT_INTERVAL", "5");
let settings = Settings::from_env();
assert_eq!(
settings.telemetry_extended_heartbeat_interval,
Duration::from_secs(5)
);
}
}
3 changes: 2 additions & 1 deletion libdd-telemetry/src/worker/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1108,6 +1108,7 @@ impl TelemetryWorkerBuilder {
let token = CancellationToken::new();
let config = self.config;
let telemetry_heartbeat_interval = config.telemetry_heartbeat_interval;
let telemetry_extended_heartbeat_interval = config.telemetry_extended_heartbeat_interval;
let client = http_client::from_config(&config);

let metrics_flush_interval =
Expand Down Expand Up @@ -1140,7 +1141,7 @@ impl TelemetryWorkerBuilder {
(metrics_flush_interval, LifecycleAction::FlushMetricAggr),
(telemetry_heartbeat_interval, LifecycleAction::FlushData),
(
time::Duration::from_secs(60 * 60 * 24),
telemetry_extended_heartbeat_interval,
LifecycleAction::ExtendedHeartbeat,
),
]),
Expand Down
Loading