nodedb_types/config/tuning/
promql.rs1use serde::{Deserialize, Serialize};
7
8fn default_max_samples() -> usize {
9 5_000_000
10}
11
12fn default_lookback_delta_ms() -> i64 {
13 300_000
15}
16
17fn default_max_points_per_series() -> usize {
18 11_000
20}
21
22#[derive(Debug, Clone, Serialize, Deserialize)]
24pub struct PromqlTuning {
25 #[serde(default = "default_max_samples")]
28 pub max_samples: usize,
29 #[serde(default = "default_lookback_delta_ms")]
31 pub lookback_delta_ms: i64,
32 #[serde(default = "default_max_points_per_series")]
34 pub max_points_per_series: usize,
35}
36
37impl Default for PromqlTuning {
38 fn default() -> Self {
39 Self {
40 max_samples: default_max_samples(),
41 lookback_delta_ms: default_lookback_delta_ms(),
42 max_points_per_series: default_max_points_per_series(),
43 }
44 }
45}
46
47#[cfg(test)]
48mod tests {
49 use super::*;
50
51 #[test]
52 fn defaults_match_prometheus_where_it_has_one() {
53 let t = PromqlTuning::default();
54 assert_eq!(t.max_samples, 5_000_000);
55 assert_eq!(t.lookback_delta_ms, 300_000);
56 assert_eq!(t.max_points_per_series, 11_000);
57 }
58
59 #[test]
60 fn override_max_samples() {
61 let t: PromqlTuning = toml::from_str("max_samples = 2").unwrap();
62 assert_eq!(t.max_samples, 2);
63 assert_eq!(t.lookback_delta_ms, 300_000);
64 }
65}