nodedb_types/config/tuning/
scheduler.rs1use serde::{Deserialize, Serialize};
5
6fn default_max_concurrent_jobs() -> usize {
7 32
8}
9
10fn default_job_timeout_secs() -> u64 {
11 300
15}
16
17fn default_webhook_timeout_secs() -> u64 {
18 5
19}
20
21fn default_siem_webhook_timeout_secs() -> u64 {
22 10
23}
24
25fn default_otel_timeout_secs() -> u64 {
26 5
27}
28
29#[derive(Debug, Clone, Serialize, Deserialize)]
31pub struct SchedulerTuning {
32 #[serde(default = "default_max_concurrent_jobs")]
36 pub max_concurrent_jobs: usize,
37
38 #[serde(default = "default_job_timeout_secs")]
42 pub job_timeout_secs: u64,
43
44 #[serde(default = "default_webhook_timeout_secs")]
46 pub webhook_timeout_secs: u64,
47
48 #[serde(default = "default_siem_webhook_timeout_secs")]
50 pub siem_webhook_timeout_secs: u64,
51
52 #[serde(default = "default_otel_timeout_secs")]
54 pub otel_timeout_secs: u64,
55}
56
57impl Default for SchedulerTuning {
58 fn default() -> Self {
59 Self {
60 max_concurrent_jobs: default_max_concurrent_jobs(),
61 job_timeout_secs: default_job_timeout_secs(),
62 webhook_timeout_secs: default_webhook_timeout_secs(),
63 siem_webhook_timeout_secs: default_siem_webhook_timeout_secs(),
64 otel_timeout_secs: default_otel_timeout_secs(),
65 }
66 }
67}
68
69#[cfg(test)]
70mod tests {
71 use super::*;
72
73 #[test]
74 fn defaults() {
75 let t = SchedulerTuning::default();
76 assert_eq!(t.max_concurrent_jobs, 32);
77 assert_eq!(t.job_timeout_secs, 300);
78 assert_eq!(t.webhook_timeout_secs, 5);
79 assert_eq!(t.siem_webhook_timeout_secs, 10);
80 assert_eq!(t.otel_timeout_secs, 5);
81 }
82
83 #[test]
84 fn partial_override() {
85 let toml_str = r#"
86max_concurrent_jobs = 8
87webhook_timeout_secs = 15
88"#;
89 let t: SchedulerTuning = toml::from_str(toml_str).unwrap();
90 assert_eq!(t.max_concurrent_jobs, 8);
91 assert_eq!(t.webhook_timeout_secs, 15);
92 assert_eq!(t.siem_webhook_timeout_secs, 10);
93 assert_eq!(t.job_timeout_secs, 300);
94 }
95}