56 lines
2.2 KiB
Rust
56 lines
2.2 KiB
Rust
use std::fs;
|
|
use std::path::PathBuf;
|
|
use tempfile::TempDir;
|
|
|
|
pub struct FakeSysBuilder {
|
|
temp_dir: TempDir,
|
|
}
|
|
|
|
impl FakeSysBuilder {
|
|
pub fn new() -> Self {
|
|
Self {
|
|
temp_dir: TempDir::new().expect("Failed to create temporary directory"),
|
|
}
|
|
}
|
|
|
|
pub fn base_path(&self) -> PathBuf {
|
|
self.temp_dir.path().to_path_buf()
|
|
}
|
|
|
|
pub fn add_dmi(&self, vendor: &str, product: &str) -> &Self {
|
|
let dmi_path = self.base_path().join("sys/class/dmi/id");
|
|
fs::create_dir_all(&dmi_path).expect("Failed to create DMI directory");
|
|
|
|
fs::write(dmi_path.join("sys_vendor"), vendor).expect("Failed to write sys_vendor");
|
|
fs::write(dmi_path.join("product_name"), product).expect("Failed to write product_name");
|
|
self
|
|
}
|
|
|
|
pub fn add_hwmon(&self, name: &str, temp_label: &str, temp_input: &str) -> &Self {
|
|
let hwmon_path = self.base_path().join("sys/class/hwmon/hwmon0");
|
|
fs::create_dir_all(&hwmon_path).expect("Failed to create hwmon directory");
|
|
|
|
fs::write(hwmon_path.join("name"), name).expect("Failed to write hwmon name");
|
|
fs::write(hwmon_path.join("temp1_label"), temp_label).expect("Failed to write temp label");
|
|
fs::write(hwmon_path.join("temp1_input"), temp_input).expect("Failed to write temp input");
|
|
self
|
|
}
|
|
|
|
pub fn add_rapl(&self, name: &str, energy_uj: &str, pl1_uw: &str) -> &Self {
|
|
let rapl_path = self.base_path().join("sys/class/powercap/intel-rapl:0");
|
|
fs::create_dir_all(&rapl_path).expect("Failed to create RAPL directory");
|
|
|
|
fs::write(rapl_path.join("name"), name).expect("Failed to write RAPL name");
|
|
fs::write(rapl_path.join("energy_uj"), energy_uj).expect("Failed to write energy_uj");
|
|
fs::write(rapl_path.join("constraint_0_power_limit_uw"), pl1_uw).expect("Failed to write pl1_uw");
|
|
self
|
|
}
|
|
|
|
pub fn add_proc_cmdline(&self, cmdline: &str) -> &Self {
|
|
let proc_path = self.base_path().join("proc");
|
|
fs::create_dir_all(&proc_path).expect("Failed to create proc directory");
|
|
fs::write(proc_path.join("cmdline"), cmdline).expect("Failed to write cmdline");
|
|
self
|
|
}
|
|
}
|