v0.3.11-pre.003
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
// 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;
|
||||
}
|
||||
Reference in New Issue
Block a user