mirror of
https://gitlab.steamos.cloud/holo/steamos-manager.git
synced 2025-07-06 06:30:27 -04:00
wifi: Add power management tests
This commit is contained in:
parent
b8f3f79e0b
commit
fc9747a114
1 changed files with 91 additions and 0 deletions
91
src/wifi.rs
91
src/wifi.rs
|
@ -281,6 +281,7 @@ pub(crate) async fn set_wifi_power_management_state(state: WifiPowerManagement)
|
||||||
mod test {
|
mod test {
|
||||||
use super::*;
|
use super::*;
|
||||||
use crate::{enum_on_off, enum_roundtrip, testing};
|
use crate::{enum_on_off, enum_roundtrip, testing};
|
||||||
|
use std::ffi::OsStr;
|
||||||
use tokio::fs::{create_dir_all, read_to_string, remove_dir, try_exists, write};
|
use tokio::fs::{create_dir_all, read_to_string, remove_dir, try_exists, write};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -374,6 +375,96 @@ mod test {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[tokio::test]
|
||||||
|
async fn test_power_management() {
|
||||||
|
let h = testing::start();
|
||||||
|
|
||||||
|
fn process_output(executable: &OsStr, args: &[&OsStr]) -> Result<(i32, String)> {
|
||||||
|
ensure!(executable.to_string_lossy() == "/usr/bin/iw", "Not iw");
|
||||||
|
ensure!(args[0] == "dev", "Not dev");
|
||||||
|
if args.len() < 2 {
|
||||||
|
return Ok((0, String::from("Interface eth0")));
|
||||||
|
}
|
||||||
|
ensure!(args[1] == "eth0", "Not eth0");
|
||||||
|
ensure!(args[3] == "power_save", "Not power_save");
|
||||||
|
match args[2].to_str() {
|
||||||
|
Some("get") => Ok((0, String::from("Power save: on"))),
|
||||||
|
Some("set") => {
|
||||||
|
ensure!(args[4] == "on");
|
||||||
|
Ok((0, String::new()))
|
||||||
|
}
|
||||||
|
_ => bail!("Unknown query"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
h.test.process_cb.set(process_output);
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
get_wifi_power_management_state().await.expect("get"),
|
||||||
|
WifiPowerManagement::Enabled
|
||||||
|
);
|
||||||
|
|
||||||
|
assert!(
|
||||||
|
set_wifi_power_management_state(WifiPowerManagement::Enabled)
|
||||||
|
.await
|
||||||
|
.is_ok()
|
||||||
|
);
|
||||||
|
assert!(
|
||||||
|
set_wifi_power_management_state(WifiPowerManagement::Disabled)
|
||||||
|
.await
|
||||||
|
.is_err()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[tokio::test]
|
||||||
|
async fn test_power_management_disabled() {
|
||||||
|
let h = testing::start();
|
||||||
|
|
||||||
|
fn process_output(executable: &OsStr, args: &[&OsStr]) -> Result<(i32, String)> {
|
||||||
|
ensure!(executable.to_string_lossy() == "/usr/bin/iw", "Not iw");
|
||||||
|
ensure!(args[0] == "dev", "Not dev");
|
||||||
|
if args.len() < 2 {
|
||||||
|
return Ok((0, String::from("Interface eth0")));
|
||||||
|
}
|
||||||
|
ensure!(args[1] == "eth0", "Not eth0");
|
||||||
|
ensure!(args[3] == "power_save", "Not power_save");
|
||||||
|
match args[2].to_str() {
|
||||||
|
Some("get") => Ok((0, String::from("Power save: off"))),
|
||||||
|
_ => bail!("Unknown query"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
h.test.process_cb.set(process_output);
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
get_wifi_power_management_state().await.expect("get"),
|
||||||
|
WifiPowerManagement::Disabled
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[tokio::test]
|
||||||
|
async fn test_power_management_multi_iface() {
|
||||||
|
let h = testing::start();
|
||||||
|
|
||||||
|
fn process_output(executable: &OsStr, args: &[&OsStr]) -> Result<(i32, String)> {
|
||||||
|
ensure!(executable.to_string_lossy() == "/usr/bin/iw", "Not iw");
|
||||||
|
ensure!(args[0] == "dev", "Not dev");
|
||||||
|
if args.len() < 2 {
|
||||||
|
return Ok((0, String::from("Interface eth0\nInterface eth1")));
|
||||||
|
}
|
||||||
|
ensure!(args[3] == "power_save", "Not power_save");
|
||||||
|
match args[1].to_str() {
|
||||||
|
Some("eth0") => Ok((0, String::from("Power save: off"))),
|
||||||
|
Some("eth1") => Ok((0, String::from("Power save: on"))),
|
||||||
|
_ => bail!("Unknown query"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
h.test.process_cb.set(process_output);
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
get_wifi_power_management_state().await.expect("get"),
|
||||||
|
WifiPowerManagement::Enabled
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn wifi_debug_mode_roundtrip() {
|
fn wifi_debug_mode_roundtrip() {
|
||||||
enum_roundtrip!(WifiDebugMode {
|
enum_roundtrip!(WifiDebugMode {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue