use std::time::Duration;
use crate::effect::RetryPolicy;
#[derive(Debug, Clone)]
pub struct RuntimeConfig {
pub effect_poll_interval: Duration,
pub timer_poll_interval: Duration,
pub effect_lock_duration: Duration,
pub timer_lock_duration: Duration,
pub shutdown_timeout: Duration,
pub retry_policy: RetryPolicy,
pub worker_id: Option<String>,
pub effect_workers: usize,
pub timer_workers: usize,
}
impl Default for RuntimeConfig {
fn default() -> Self {
Self {
effect_poll_interval: Duration::from_millis(100),
timer_poll_interval: Duration::from_secs(1),
effect_lock_duration: Duration::from_secs(300), timer_lock_duration: Duration::from_secs(300), shutdown_timeout: Duration::from_secs(30),
retry_policy: RetryPolicy::default(),
worker_id: None,
effect_workers: 1,
timer_workers: 1,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn default_config() {
let config = RuntimeConfig::default();
assert_eq!(config.effect_poll_interval, Duration::from_millis(100));
assert_eq!(config.timer_poll_interval, Duration::from_secs(1));
assert_eq!(config.effect_lock_duration, Duration::from_secs(300));
assert_eq!(config.timer_lock_duration, Duration::from_secs(300));
assert_eq!(config.shutdown_timeout, Duration::from_secs(30));
assert!(config.worker_id.is_none());
assert_eq!(config.effect_workers, 1);
assert_eq!(config.timer_workers, 1);
}
}