67 lines
2.2 KiB
Rust
67 lines
2.2 KiB
Rust
// file: crates/ksp-worker-api/unit_tests/snapshot.rs
|
|
// version: 1
|
|
|
|
#[test]
|
|
fn pre_002_snapshot_sequence_advances_strictly_and_orders_positions() {
|
|
let first = crate::WorkerSnapshotSequence::initial();
|
|
assert_eq!(first.value(), 0);
|
|
let second = first.next();
|
|
assert!(second.is_ok());
|
|
let second = match second {
|
|
std::result::Result::Ok(value) => value,
|
|
std::result::Result::Err(_) => return,
|
|
};
|
|
assert_eq!(second.value(), 1);
|
|
assert!(second.is_after(first));
|
|
assert!(!first.is_after(second));
|
|
assert!(!first.is_after(first));
|
|
return;
|
|
}
|
|
|
|
#[test]
|
|
fn pre_002_snapshot_sequence_exhaustion_is_explicit_and_non_wrapping() {
|
|
let exhausted = super::exhausted_snapshot_sequence();
|
|
let result = exhausted.next();
|
|
assert!(result.is_err());
|
|
let error = match result {
|
|
std::result::Result::Err(value) => value,
|
|
std::result::Result::Ok(_) => return,
|
|
};
|
|
assert_eq!(error.code(), crate::ERROR_CODE_WORKER_SNAPSHOT_SEQUENCE_EXHAUSTED);
|
|
assert_eq!(error.context().len(), 1);
|
|
assert_eq!(error.context()[0].key(), "sequence");
|
|
assert_eq!(error.context()[0].value(), u64::MAX.to_string());
|
|
return;
|
|
}
|
|
|
|
#[test]
|
|
fn pre_002_snapshot_preserves_exact_common_dimensions() {
|
|
let id = crate::WorkerId::new("worker-001");
|
|
let kind = crate::WorkerKindCode::new("example_worker");
|
|
assert!(id.is_ok());
|
|
assert!(kind.is_ok());
|
|
let id = match id {
|
|
std::result::Result::Ok(value) => value,
|
|
std::result::Result::Err(_) => return,
|
|
};
|
|
let kind = match kind {
|
|
std::result::Result::Ok(value) => value,
|
|
std::result::Result::Err(_) => return,
|
|
};
|
|
let snapshot = crate::WorkerSnapshot::new(
|
|
id,
|
|
kind,
|
|
crate::WorkerSnapshotSequence::initial(),
|
|
crate::WorkerState::Running,
|
|
crate::WorkerHealth::Healthy,
|
|
crate::WorkerActivity::Active,
|
|
);
|
|
assert_eq!(snapshot.id().as_str(), "worker-001");
|
|
assert_eq!(snapshot.kind().as_str(), "example_worker");
|
|
assert_eq!(snapshot.sequence().value(), 0);
|
|
assert_eq!(snapshot.state(), crate::WorkerState::Running);
|
|
assert_eq!(snapshot.health(), crate::WorkerHealth::Healthy);
|
|
assert_eq!(snapshot.activity(), crate::WorkerActivity::Active);
|
|
return;
|
|
}
|