Skip to content
This repository was archived by the owner on Jan 27, 2026. It is now read-only.

Commit d77ef04

Browse files
committed
fix unit tests
1 parent f87d5d3 commit d77ef04

File tree

3 files changed

+36
-24
lines changed

3 files changed

+36
-24
lines changed

crates/worker/src/cli/command.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -220,11 +220,19 @@ pub async fn execute_command(
220220
);
221221
std::process::exit(1);
222222
}
223-
let state = Arc::new(SystemState::new(
223+
let state = match SystemState::new(
224224
state_dir_overwrite.clone(),
225225
*disable_state_storing,
226226
*compute_pool_id,
227-
));
227+
) {
228+
Ok(state) => state,
229+
Err(e) => {
230+
error!("❌ Failed to initialize system state: {e}");
231+
std::process::exit(1);
232+
}
233+
};
234+
235+
let state = Arc::new(state);
228236

229237
let private_key_provider = if let Some(key) = private_key_provider {
230238
Console::warning("Using private key from command line is not recommended. Consider using PRIVATE_KEY_PROVIDER environment variable instead.");

crates/worker/src/docker/taskbridge/bridge.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -473,7 +473,7 @@ mod tests {
473473
let temp_dir = tempdir()?;
474474
let socket_path = temp_dir.path().join("test.sock");
475475
let metrics_store = Arc::new(MetricsStore::new());
476-
let state = Arc::new(SystemState::new(None, false, 0));
476+
let state = Arc::new(SystemState::new(None, false, 0).unwrap());
477477
let bridge = TaskBridge::new(
478478
Some(socket_path.to_str().unwrap()),
479479
metrics_store.clone(),
@@ -506,7 +506,7 @@ mod tests {
506506
let temp_dir = tempdir()?;
507507
let socket_path = temp_dir.path().join("test.sock");
508508
let metrics_store = Arc::new(MetricsStore::new());
509-
let state = Arc::new(SystemState::new(None, false, 0));
509+
let state = Arc::new(SystemState::new(None, false, 0).unwrap());
510510
let bridge = TaskBridge::new(
511511
Some(socket_path.to_str().unwrap()),
512512
metrics_store.clone(),
@@ -541,7 +541,7 @@ mod tests {
541541
let temp_dir = tempdir()?;
542542
let socket_path = temp_dir.path().join("test.sock");
543543
let metrics_store = Arc::new(MetricsStore::new());
544-
let state = Arc::new(SystemState::new(None, false, 0));
544+
let state = Arc::new(SystemState::new(None, false, 0).unwrap());
545545
let bridge = TaskBridge::new(
546546
Some(socket_path.to_str().unwrap()),
547547
metrics_store.clone(),
@@ -590,7 +590,7 @@ mod tests {
590590
let temp_dir = tempdir()?;
591591
let socket_path = temp_dir.path().join("test.sock");
592592
let metrics_store = Arc::new(MetricsStore::new());
593-
let state = Arc::new(SystemState::new(None, false, 0));
593+
let state = Arc::new(SystemState::new(None, false, 0).unwrap());
594594
let bridge = TaskBridge::new(
595595
Some(socket_path.to_str().unwrap()),
596596
metrics_store.clone(),
@@ -639,7 +639,7 @@ mod tests {
639639
let temp_dir = tempdir()?;
640640
let socket_path = temp_dir.path().join("test.sock");
641641
let metrics_store = Arc::new(MetricsStore::new());
642-
let state = Arc::new(SystemState::new(None, false, 0));
642+
let state = Arc::new(SystemState::new(None, false, 0).unwrap());
643643
let bridge = TaskBridge::new(
644644
Some(socket_path.to_str().unwrap()),
645645
metrics_store.clone(),

crates/worker/src/state/system_state.rs

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use anyhow::bail;
12
use anyhow::Result;
23
use directories::ProjectDirs;
34
use log::debug;
@@ -60,7 +61,7 @@ impl SystemState {
6061
state_dir: Option<String>,
6162
disable_state_storing: bool,
6263
compute_pool_id: u32,
63-
) -> Self {
64+
) -> Result<Self> {
6465
let default_state_dir = get_default_state_dir();
6566
debug!("Default state dir: {default_state_dir:?}");
6667
let state_path = state_dir
@@ -84,7 +85,7 @@ impl SystemState {
8485
endpoint = loaded_state.endpoint;
8586
p2p_keypair = Some(loaded_state.p2p_keypair);
8687
} else {
87-
debug!("Failed to load state from {state_file:?}");
88+
bail!("failed to load state from {state_file:?}");
8889
}
8990
}
9091
}
@@ -93,15 +94,15 @@ impl SystemState {
9394
p2p_keypair = Some(p2p::Keypair::generate_ed25519());
9495
}
9596

96-
Self {
97+
Ok(Self {
9798
last_heartbeat: Arc::new(RwLock::new(None)),
9899
is_running: Arc::new(RwLock::new(false)),
99100
endpoint: Arc::new(RwLock::new(endpoint)),
100101
state_dir_overwrite: state_path.clone(),
101102
disable_state_storing,
102103
compute_pool_id,
103104
p2p_keypair: p2p_keypair.expect("p2p keypair must be Some at this point"),
104-
}
105+
})
105106
}
106107

107108
fn save_state(&self, heartbeat_endpoint: Option<String>) -> Result<()> {
@@ -141,8 +142,7 @@ impl SystemState {
141142
match serde_json::from_str(&contents) {
142143
Ok(state) => return Ok(Some(state)),
143144
Err(e) => {
144-
debug!("Error parsing state file: {e}");
145-
return Ok(None);
145+
bail!("failed to parse state file: {e}");
146146
}
147147
}
148148
}
@@ -232,7 +232,8 @@ mod tests {
232232
Some(temp_dir.path().to_string_lossy().to_string()),
233233
false,
234234
0,
235-
);
235+
)
236+
.unwrap();
236237
let _ = state
237238
.set_running(true, Some("http://localhost:8080/heartbeat".to_string()))
238239
.await;
@@ -255,30 +256,33 @@ mod tests {
255256
let state_file = temp_dir.path().join(STATE_FILENAME);
256257
fs::write(&state_file, "invalid_toml_content").expect("Failed to write to state file");
257258

258-
let state = SystemState::new(
259+
assert!(SystemState::new(
259260
Some(temp_dir.path().to_string_lossy().to_string()),
260261
false,
261262
0,
262-
);
263-
assert!(!(state.is_running().await));
264-
assert_eq!(state.get_heartbeat_endpoint().await, None);
263+
)
264+
.is_err());
265265
}
266266

267267
#[tokio::test]
268268
async fn test_load_state() {
269+
let keypair = p2p::Keypair::generate_ed25519();
270+
let state = PersistedSystemState {
271+
endpoint: Some("http://localhost:8080/heartbeat".to_string()),
272+
p2p_keypair: keypair,
273+
};
274+
let serialized = serde_json::to_string_pretty(&state).unwrap();
275+
269276
let temp_dir = setup_test_dir();
270277
let state_file = temp_dir.path().join(STATE_FILENAME);
271-
fs::write(
272-
&state_file,
273-
r#"{"endpoint": "http://localhost:8080/heartbeat"}"#,
274-
)
275-
.expect("Failed to write to state file");
278+
fs::write(&state_file, serialized).unwrap();
276279

277280
let state = SystemState::new(
278281
Some(temp_dir.path().to_string_lossy().to_string()),
279282
false,
280283
0,
281-
);
284+
)
285+
.unwrap();
282286
assert_eq!(
283287
state.get_heartbeat_endpoint().await,
284288
Some("http://localhost:8080/heartbeat".to_string())

0 commit comments

Comments
 (0)