53 lines
2.3 KiB
Rust
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;
|
|
}
|