mirror of
https://gitlab.com/asus-linux/asusctl.git
synced 2026-02-06 00:15:04 +01:00
145 lines
4.2 KiB
Rust
145 lines
4.2 KiB
Rust
use std::fs::{create_dir_all, File};
|
|
use std::io::Write;
|
|
use std::path::PathBuf;
|
|
|
|
use tempfile::tempdir;
|
|
|
|
use asusd::asus_armoury::set_config_or_default;
|
|
use asusd::config::Config;
|
|
use rog_platform::asus_armoury::FirmwareAttributes;
|
|
use rog_platform::platform::PlatformProfile;
|
|
|
|
fn write_attr_dir(base: &PathBuf, name: &str, default: &str, display: &str) {
|
|
let attr_dir = base.join(name);
|
|
create_dir_all(&attr_dir).unwrap();
|
|
|
|
let mut f = File::create(attr_dir.join("default_value")).unwrap();
|
|
write!(f, "{}", default).unwrap();
|
|
let mut f = File::create(attr_dir.join("display_name")).unwrap();
|
|
write!(f, "{}", display).unwrap();
|
|
// create current_value file so set_current_value can open for write
|
|
let mut f = File::create(attr_dir.join("current_value")).unwrap();
|
|
write!(f, "{}", default).unwrap();
|
|
}
|
|
|
|
#[test]
|
|
fn nv_dynamic_boost_and_ppt_acdc() {
|
|
let td = tempdir().unwrap();
|
|
let base = td.path().join("attributes");
|
|
create_dir_all(&base).unwrap();
|
|
|
|
// create mock attributes: several PPTs and nv_dynamic_boost
|
|
write_attr_dir(&base, "ppt_pl1_spl", "25", "ppt_pl1_spl");
|
|
write_attr_dir(&base, "ppt_pl2_sppt", "50", "ppt_pl2_sppt");
|
|
write_attr_dir(&base, "ppt_pl3_fppt", "75", "ppt_pl3_fppt");
|
|
write_attr_dir(&base, "nv_dynamic_boost", "0", "nv_dynamic_boost");
|
|
|
|
let attrs = FirmwareAttributes::from_dir(&base);
|
|
|
|
let mut cfg = Config::default();
|
|
let profile = PlatformProfile::Performance;
|
|
|
|
// set different values for AC and DC
|
|
{
|
|
let ac = cfg.select_tunings(true, profile);
|
|
ac.enabled = true;
|
|
ac.group.insert(
|
|
rog_platform::asus_armoury::FirmwareAttribute::PptPl1Spl,
|
|
100,
|
|
);
|
|
ac.group.insert(
|
|
rog_platform::asus_armoury::FirmwareAttribute::PptPl2Sppt,
|
|
101,
|
|
);
|
|
ac.group.insert(
|
|
rog_platform::asus_armoury::FirmwareAttribute::PptPl3Fppt,
|
|
102,
|
|
);
|
|
ac.group.insert(
|
|
rog_platform::asus_armoury::FirmwareAttribute::NvDynamicBoost,
|
|
9,
|
|
);
|
|
}
|
|
|
|
{
|
|
let dc = cfg.select_tunings(false, profile);
|
|
dc.enabled = true;
|
|
dc.group
|
|
.insert(rog_platform::asus_armoury::FirmwareAttribute::PptPl1Spl, 10);
|
|
dc.group.insert(
|
|
rog_platform::asus_armoury::FirmwareAttribute::PptPl2Sppt,
|
|
11,
|
|
);
|
|
dc.group.insert(
|
|
rog_platform::asus_armoury::FirmwareAttribute::PptPl3Fppt,
|
|
12,
|
|
);
|
|
dc.group.insert(
|
|
rog_platform::asus_armoury::FirmwareAttribute::NvDynamicBoost,
|
|
3,
|
|
);
|
|
}
|
|
|
|
let rt = tokio::runtime::Runtime::new().unwrap();
|
|
|
|
// apply AC
|
|
rt.block_on(async {
|
|
set_config_or_default(&attrs, &mut cfg, true, profile).await;
|
|
});
|
|
|
|
assert_eq!(
|
|
std::fs::read_to_string(base.join("ppt_pl1_spl").join("current_value"))
|
|
.unwrap()
|
|
.trim(),
|
|
"100"
|
|
);
|
|
assert_eq!(
|
|
std::fs::read_to_string(base.join("ppt_pl2_sppt").join("current_value"))
|
|
.unwrap()
|
|
.trim(),
|
|
"101"
|
|
);
|
|
assert_eq!(
|
|
std::fs::read_to_string(base.join("ppt_pl3_fppt").join("current_value"))
|
|
.unwrap()
|
|
.trim(),
|
|
"102"
|
|
);
|
|
assert_eq!(
|
|
std::fs::read_to_string(base.join("nv_dynamic_boost").join("current_value"))
|
|
.unwrap()
|
|
.trim(),
|
|
"9"
|
|
);
|
|
|
|
// apply DC
|
|
rt.block_on(async {
|
|
set_config_or_default(&attrs, &mut cfg, false, profile).await;
|
|
});
|
|
|
|
assert_eq!(
|
|
std::fs::read_to_string(base.join("ppt_pl1_spl").join("current_value"))
|
|
.unwrap()
|
|
.trim(),
|
|
"10"
|
|
);
|
|
assert_eq!(
|
|
std::fs::read_to_string(base.join("ppt_pl2_sppt").join("current_value"))
|
|
.unwrap()
|
|
.trim(),
|
|
"11"
|
|
);
|
|
assert_eq!(
|
|
std::fs::read_to_string(base.join("ppt_pl3_fppt").join("current_value"))
|
|
.unwrap()
|
|
.trim(),
|
|
"12"
|
|
);
|
|
assert_eq!(
|
|
std::fs::read_to_string(base.join("nv_dynamic_boost").join("current_value"))
|
|
.unwrap()
|
|
.trim(),
|
|
"3"
|
|
);
|
|
}
|