Files
khadhroony-solana-project/crates/ksp-worker-raw-transaction-ingest-lib/unit_tests/settings.rs
2026-09-08 09:31:23 +02:00

106 lines
4.6 KiB
Rust

// file: crates/ksp-worker-raw-transaction-ingest-lib/unit_tests/settings.rs
// version: 2
fn identities() -> std::option::Option<(ksp_store_lib::RawNetworkId, ksp_worker_api::WorkerId)> {
let network_result = ksp_store_lib::RawNetworkId::new("mainnet");
assert!(network_result.is_ok());
let network = match network_result {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return std::option::Option::None,
};
let worker_id_result = ksp_worker_api::WorkerId::new("raw-ingest-mainnet-001");
assert!(worker_id_result.is_ok());
let worker_id = match worker_id_result {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return std::option::Option::None,
};
return std::option::Option::Some((network, worker_id));
}
#[test]
fn pre_003_defaults_are_exact_and_preserve_typed_identity() {
let (network, worker_id) = match identities() {
std::option::Option::Some(value) => value,
std::option::Option::None => return,
};
let settings = crate::RawTransactionIngestSettings::with_defaults(network.clone(), worker_id.clone());
assert_eq!(settings.network(), &network);
assert_eq!(settings.worker_id(), &worker_id);
assert_eq!(settings.admission_queue_capacity(), 256);
assert_eq!(settings.persistence_concurrency(), 8);
assert_eq!(settings.shutdown_drain_timeout(), std::time::Duration::from_secs(5));
assert_eq!(crate::DEFAULT_RAW_TRANSACTION_INGEST_ADMISSION_QUEUE_CAPACITY, 256);
assert_eq!(crate::DEFAULT_RAW_TRANSACTION_INGEST_PERSISTENCE_CONCURRENCY, 8);
assert_eq!(crate::DEFAULT_RAW_TRANSACTION_INGEST_SHUTDOWN_DRAIN_TIMEOUT, std::time::Duration::from_secs(5));
return;
}
#[test]
fn pre_003_inclusive_bounds_accept_exact_minimum_and_maximum() {
for (queue, concurrency, drain) in [
(
crate::MIN_RAW_TRANSACTION_INGEST_ADMISSION_QUEUE_CAPACITY,
crate::MIN_RAW_TRANSACTION_INGEST_PERSISTENCE_CONCURRENCY,
crate::MIN_RAW_TRANSACTION_INGEST_SHUTDOWN_DRAIN_TIMEOUT,
),
(
crate::MAX_RAW_TRANSACTION_INGEST_ADMISSION_QUEUE_CAPACITY,
crate::MAX_RAW_TRANSACTION_INGEST_PERSISTENCE_CONCURRENCY,
crate::MAX_RAW_TRANSACTION_INGEST_SHUTDOWN_DRAIN_TIMEOUT,
),
] {
let (network, worker_id) = match identities() {
std::option::Option::Some(value) => value,
std::option::Option::None => return,
};
let settings = crate::RawTransactionIngestSettings::new(network, worker_id, queue, concurrency, drain);
assert!(settings.is_ok());
}
return;
}
#[test]
fn pre_003_invalid_runtime_bounds_return_stable_field_scoped_error() {
let invalid = [
(0, 8, std::time::Duration::from_secs(5), "admission_queue_capacity"),
(65_537, 8, std::time::Duration::from_secs(5), "admission_queue_capacity"),
(256, 0, std::time::Duration::from_secs(5), "persistence_concurrency"),
(256, 65, std::time::Duration::from_secs(5), "persistence_concurrency"),
(256, 8, std::time::Duration::from_millis(99), "shutdown_drain_timeout"),
(256, 8, std::time::Duration::from_millis(30_001), "shutdown_drain_timeout"),
];
for (queue, concurrency, drain, field) in invalid {
let (network, worker_id) = match identities() {
std::option::Option::Some(value) => value,
std::option::Option::None => return,
};
let result = crate::RawTransactionIngestSettings::new(network, worker_id, queue, concurrency, drain);
assert!(result.is_err());
let error = match result {
std::result::Result::Ok(_) => continue,
std::result::Result::Err(value) => value,
};
assert_eq!(error.code(), crate::ERROR_CODE_RAW_TRANSACTION_INGEST_SETTINGS_INVALID);
assert_eq!(error.code().domain(), "worker_raw_transaction_ingest");
assert_eq!(error.code().code(), "settings_invalid");
assert_eq!(error.context().len(), 1);
assert_eq!(error.context()[0].key(), "field");
assert_eq!(error.context()[0].value(), field);
}
return;
}
#[test]
fn pre_003_debug_keeps_worker_identity_redacted() {
let (network, worker_id) = match identities() {
std::option::Option::Some(value) => value,
std::option::Option::None => return,
};
let settings = crate::RawTransactionIngestSettings::with_defaults(network, worker_id);
let rendered = std::format!("{settings:?}");
assert!(rendered.contains("mainnet"));
assert!(rendered.contains("WorkerId(..)"));
assert!(!rendered.contains("raw-ingest-mainnet-001"));
return;
}