Skip to main content

hopr_transport_protocol/heartbeat/
config.rs

1use std::time::Duration;
2
3use validator::Validate;
4
5/// Configuration for the `heartbeat` protocol.
6#[derive(Debug, Copy, Clone, smart_default::SmartDefault, Validate, Eq, PartialEq)]
7#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
8pub struct HeartbeatProtocolConfig {
9    /// Maximum duration before the request times out
10    #[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}