v0.3.9-pre.002
This commit is contained in:
66
crates/ksp-worker-api/unit_tests/snapshot.rs
Normal file
66
crates/ksp-worker-api/unit_tests/snapshot.rs
Normal file
@@ -0,0 +1,66 @@
|
||||
// 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;
|
||||
}
|
||||
Reference in New Issue
Block a user