Files
ember-tune-rs/tests/config_merge_test.rs

76 lines
2.3 KiB
Rust

use ember_tune_rs::engine::formatters::throttled::{ThrottledConfig, ThrottledTranslator};
use ember_tune_rs::agent_analyst::{OptimizationMatrix, SystemProfile, FanCurvePoint};
use ember_tune_rs::agent_integrator::ServiceIntegrator;
use std::fs;
use tempfile::tempdir;
#[test]
fn test_throttled_merge_preserves_undervolt() {
let existing = r#"[GENERAL]
Update_Interval_ms: 1000
[UNDERVOLT]
# CPU core undervolt
CORE: -100
# GPU undervolt
GPU: -50
[AC]
PL1_Tdp_W: 15
PL2_Tdp_W: 25
"#;
let config = ThrottledConfig {
pl1_limit: 22.0,
pl2_limit: 28.0,
trip_temp: 95.0,
};
let merged = ThrottledTranslator::merge_conf(existing, &config);
assert!(merged.contains("CORE: -100"));
assert!(merged.contains("GPU: -50"));
assert!(merged.contains("PL1_Tdp_W: 22"));
assert!(merged.contains("PL2_Tdp_W: 28"));
assert!(merged.contains("Trip_Temp_C: 95"));
assert!(merged.contains("[UNDERVOLT]"));
}
#[test]
fn test_i8kmon_merge_preserves_settings() {
let dir = tempdir().unwrap();
let config_path = dir.path().join("i8kmon.conf");
let existing = r#"set config(gen_shadow) 1
set config(i8k_ignore_dmi) 1
set config(daemon) 1
set config(0) {0 0 60 50}
"#;
fs::write(&config_path, existing).unwrap();
let matrix = OptimizationMatrix {
silent: SystemProfile { name: "Silent".to_string(), pl1_watts: 10.0, pl2_watts: 12.0, fan_curve: vec![] },
balanced: SystemProfile {
name: "Balanced".to_string(),
pl1_watts: 20.0,
pl2_watts: 25.0,
fan_curve: vec![
FanCurvePoint { temp_on: 70.0, temp_off: 60.0, pwm_percent: 50 }
]
},
performance: SystemProfile { name: "Perf".to_string(), pl1_watts: 30.0, pl2_watts: 35.0, fan_curve: vec![] },
thermal_resistance_kw: 1.5,
ambient_temp: 25.0,
};
ServiceIntegrator::generate_i8kmon_config(&matrix, &config_path, Some(&config_path)).unwrap();
let result = fs::read_to_string(&config_path).unwrap();
assert!(result.contains("set config(gen_shadow) 1"));
assert!(result.contains("set config(daemon) 1"));
assert!(result.contains("set config(0) {1 1 70 -}")); // New config
assert!(!result.contains("set config(0) {0 0 60 50}")); // Old config should be gone
}