hopr_transport_protocol/heartbeat/
config.rs1use std::time::Duration;
2
3use validator::Validate;
4
5#[derive(Debug, Copy, Clone, smart_default::SmartDefault, Validate, Eq, PartialEq)]
7#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
8pub struct HeartbeatProtocolConfig {
9 #[cfg_attr(feature = "serde", serde(with = "humantime_serde"))]
11 #[default(Duration::from_secs(6))]
12 pub timeout: Duration,
13}
14
15#[cfg(test)]
16mod tests {
17 use super::*;
18
19 #[test]
20 fn heartbeat_config_should_have_stable_defaults() {
21 let cfg = HeartbeatProtocolConfig::default();
22 insta::assert_debug_snapshot!(cfg);
23 }
24
25 #[test]
26 fn heartbeat_config_default_should_validate() -> anyhow::Result<()> {
27 use anyhow::Context;
28 let cfg = HeartbeatProtocolConfig::default();
29 cfg.validate()
30 .context("default HeartbeatProtocolConfig should be valid")?;
31 Ok(())
32 }
33}