46 lines
2.1 KiB
Rust
46 lines
2.1 KiB
Rust
// file: crates/ksp-store-lib/unit_tests/health.rs
|
|
// version: 1
|
|
|
|
fn network() -> ksp_store_api::RawNetworkId {
|
|
return match ksp_store_api::RawNetworkId::new("devnet") {
|
|
std::result::Result::Ok(value) => value,
|
|
std::result::Result::Err(error) => panic!("valid Store health test network rejected: {error:?}"),
|
|
};
|
|
}
|
|
|
|
#[test]
|
|
fn runtime_snapshot_is_backend_neutral_and_contains_only_safe_counts() {
|
|
let runtime = crate::StoreRuntimeSnapshot::new(crate::StoreBackendKind::Postgres, network(), 8, 3, 2, 1);
|
|
assert_eq!(runtime.backend_kind(), crate::StoreBackendKind::Postgres);
|
|
assert_eq!(runtime.network().as_str(), "devnet");
|
|
assert_eq!(runtime.pool_capacity(), 8);
|
|
assert_eq!(runtime.pool_size(), 3);
|
|
assert_eq!(runtime.pool_available(), 2);
|
|
assert_eq!(runtime.pool_waiting(), 1);
|
|
let rendered = format!("{runtime:?}");
|
|
for forbidden in ["postgresql://", "password", "username", "database", "SELECT ", "ksp_store_schema_migrations"] {
|
|
assert!(!rendered.contains(forbidden), "unsafe runtime snapshot material detected: {forbidden}");
|
|
}
|
|
return;
|
|
}
|
|
|
|
#[test]
|
|
fn health_snapshot_carries_only_safe_state_migration_and_error_code() {
|
|
let runtime = crate::StoreRuntimeSnapshot::new(crate::StoreBackendKind::Postgres, network(), 8, 1, 1, 0);
|
|
let ready = crate::StoreHealthSnapshot::new(crate::StoreHealthState::Ready, runtime.clone(), std::option::Option::Some(0), 0, std::option::Option::None);
|
|
assert_eq!(ready.state(), crate::StoreHealthState::Ready);
|
|
assert_eq!(ready.migration_version(), std::option::Option::Some(0));
|
|
assert_eq!(ready.pending_migration_count(), 0);
|
|
assert_eq!(ready.last_error_code(), std::option::Option::None);
|
|
let not_ready = crate::StoreHealthSnapshot::new(
|
|
crate::StoreHealthState::NotReady,
|
|
runtime,
|
|
std::option::Option::None,
|
|
0,
|
|
std::option::Option::Some(crate::ERROR_CODE_POSTGRES_HEALTH_FAILED),
|
|
);
|
|
assert_eq!(not_ready.state(), crate::StoreHealthState::NotReady);
|
|
assert_eq!(not_ready.last_error_code(), std::option::Option::Some(crate::ERROR_CODE_POSTGRES_HEALTH_FAILED));
|
|
return;
|
|
}
|