32 lines
958 B
Rust
32 lines
958 B
Rust
use std::{fs, path::PathBuf};
|
|
|
|
#[test]
|
|
fn swarm_store_is_deterministic_from_file() {
|
|
let mut path = std::env::temp_dir();
|
|
path.push(format!(
|
|
"cloudlysis-control-swarm-{}-{}.json",
|
|
std::process::id(),
|
|
uuid::Uuid::new_v4()
|
|
));
|
|
|
|
fs::write(
|
|
&path,
|
|
r#"{"services":[{"name":"gateway","image":"x","mode":"replicated","replicas":"1/1","updated_at":null}],"tasks":[{"id":"t1","service":"gateway","node":"n1","desired_state":"running","current_state":"running","error":null}]}"#,
|
|
)
|
|
.unwrap();
|
|
|
|
let store = api::SwarmStore::new(PathBuf::from(&path));
|
|
let services = store.list_services();
|
|
assert_eq!(services.len(), 1);
|
|
assert_eq!(services[0].name, "gateway");
|
|
|
|
let tasks = store.list_tasks("gateway");
|
|
assert_eq!(tasks.len(), 1);
|
|
assert_eq!(tasks[0].id, "t1");
|
|
|
|
let none = store.list_tasks("missing");
|
|
assert_eq!(none.len(), 0);
|
|
|
|
let _ = fs::remove_file(&path);
|
|
}
|