Files
2026-09-04 14:21:05 +02:00

53 lines
2.3 KiB
Rust

// file: crates/ksp-worker-api/tests/public_api.rs
// version: 1
//! External-consumer canaries for the Worker API crate-root facade.
#[test]
fn pre_002_identity_lifecycle_stop_and_snapshot_are_consumable_from_crate_root() {
let id = ksp_worker_api::WorkerId::new("worker-public-001");
let kind = ksp_worker_api::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 mut lifecycle = ksp_worker_api::WorkerLifecycle::new(id.clone(), kind.clone());
assert_eq!(lifecycle.state(), ksp_worker_api::WorkerState::Created);
assert!(lifecycle.start().is_ok());
assert!(lifecycle.mark_running().is_ok());
let stop = ksp_worker_api::WorkerStopToken::new();
assert!(stop.request_stop());
assert!(lifecycle.mark_stopping().is_ok());
let snapshot = ksp_worker_api::WorkerSnapshot::new(
id,
kind,
ksp_worker_api::WorkerSnapshotSequence::initial(),
lifecycle.state(),
ksp_worker_api::WorkerHealth::Healthy,
ksp_worker_api::WorkerActivity::Idle,
);
assert_eq!(snapshot.state(), ksp_worker_api::WorkerState::Stopping);
assert_eq!(snapshot.health(), ksp_worker_api::WorkerHealth::Healthy);
assert_eq!(snapshot.activity(), ksp_worker_api::WorkerActivity::Idle);
return;
}
#[test]
fn pre_002_public_bounds_and_error_codes_are_exact() {
assert_eq!(ksp_worker_api::MAX_WORKER_ID_BYTES, 128);
assert_eq!(ksp_worker_api::MAX_WORKER_KIND_CODE_BYTES, 128);
assert_eq!(ksp_worker_api::ERROR_CODE_WORKER_ID_INVALID.domain(), "worker_api");
assert_eq!(ksp_worker_api::ERROR_CODE_WORKER_ID_INVALID.code(), "worker_id_invalid");
assert_eq!(ksp_worker_api::ERROR_CODE_WORKER_KIND_INVALID.domain(), "worker_api");
assert_eq!(ksp_worker_api::ERROR_CODE_WORKER_KIND_INVALID.code(), "worker_kind_invalid");
assert_eq!(ksp_worker_api::ERROR_CODE_WORKER_TRANSITION_INVALID.code(), "worker_transition_invalid");
assert_eq!(ksp_worker_api::ERROR_CODE_WORKER_SNAPSHOT_SEQUENCE_EXHAUSTED.code(), "worker_snapshot_sequence_exhausted");
return;
}