migrated daemon to tokio with seperate hardware threads + thiserror
This commit is contained in:
+22
-20
@@ -1,24 +1,26 @@
|
||||
use crate::config::Config;
|
||||
use crate::error::Result;
|
||||
use crate::modules::WaybarModule;
|
||||
use crate::output::WaybarOutput;
|
||||
use crate::state::SharedState;
|
||||
use crate::utils::{TokenValue, format_template};
|
||||
use anyhow::Result;
|
||||
|
||||
pub struct CpuModule;
|
||||
|
||||
impl WaybarModule for CpuModule {
|
||||
fn run(&self, config: &Config, state: &SharedState, _args: &[&str]) -> Result<WaybarOutput> {
|
||||
async fn run(
|
||||
&self,
|
||||
config: &Config,
|
||||
state: &SharedState,
|
||||
_args: &[&str],
|
||||
) -> Result<WaybarOutput> {
|
||||
let (usage, temp, model) = {
|
||||
if let Ok(state_lock) = state.read() {
|
||||
(
|
||||
state_lock.cpu.usage,
|
||||
state_lock.cpu.temp,
|
||||
state_lock.cpu.model.clone(),
|
||||
)
|
||||
} else {
|
||||
(0.0, 0.0, String::from("Unknown"))
|
||||
}
|
||||
let state_lock = state.read().await;
|
||||
(
|
||||
state_lock.cpu.usage,
|
||||
state_lock.cpu.temp,
|
||||
state_lock.cpu.model.clone(),
|
||||
)
|
||||
};
|
||||
|
||||
let text = format_template(
|
||||
@@ -51,8 +53,8 @@ mod tests {
|
||||
use super::*;
|
||||
use crate::state::{AppState, CpuState, mock_state};
|
||||
|
||||
#[test]
|
||||
fn test_cpu_normal() {
|
||||
#[tokio::test]
|
||||
async fn test_cpu_normal() {
|
||||
let state = mock_state(AppState {
|
||||
cpu: CpuState {
|
||||
usage: 25.0,
|
||||
@@ -62,7 +64,7 @@ mod tests {
|
||||
..Default::default()
|
||||
});
|
||||
let config = Config::default();
|
||||
let output = CpuModule.run(&config, &state, &[]).unwrap();
|
||||
let output = CpuModule.run(&config, &state, &[]).await.unwrap();
|
||||
assert!(output.text.contains("25.0"));
|
||||
assert!(output.text.contains("45.0"));
|
||||
assert_eq!(output.class.as_deref(), Some("normal"));
|
||||
@@ -70,8 +72,8 @@ mod tests {
|
||||
assert_eq!(output.tooltip.as_deref(), Some("Test CPU"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_cpu_high() {
|
||||
#[tokio::test]
|
||||
async fn test_cpu_high() {
|
||||
let state = mock_state(AppState {
|
||||
cpu: CpuState {
|
||||
usage: 80.0,
|
||||
@@ -81,12 +83,12 @@ mod tests {
|
||||
..Default::default()
|
||||
});
|
||||
let config = Config::default();
|
||||
let output = CpuModule.run(&config, &state, &[]).unwrap();
|
||||
let output = CpuModule.run(&config, &state, &[]).await.unwrap();
|
||||
assert_eq!(output.class.as_deref(), Some("high"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_cpu_max() {
|
||||
#[tokio::test]
|
||||
async fn test_cpu_max() {
|
||||
let state = mock_state(AppState {
|
||||
cpu: CpuState {
|
||||
usage: 99.0,
|
||||
@@ -96,7 +98,7 @@ mod tests {
|
||||
..Default::default()
|
||||
});
|
||||
let config = Config::default();
|
||||
let output = CpuModule.run(&config, &state, &[]).unwrap();
|
||||
let output = CpuModule.run(&config, &state, &[]).await.unwrap();
|
||||
assert_eq!(output.class.as_deref(), Some("max"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user