77 lines
3.3 KiB
Rust
77 lines
3.3 KiB
Rust
// file: crates/ksp-app-backfill-desk/unit_tests/backfill_status.rs
|
|
// version: 2
|
|
|
|
fn initial_notification() -> std::option::Option<ksp_job_api::JobNotification<ksp_job_backfill_lib::BackfillJobSnapshot>> {
|
|
let signature = match ksp_job_backfill_lib::BackfillSignature::new("1".repeat(ksp_job_backfill_lib::MIN_BACKFILL_SIGNATURE_TEXT_BYTES)) {
|
|
std::result::Result::Ok(value) => value,
|
|
std::result::Result::Err(_) => return std::option::Option::None,
|
|
};
|
|
let scope = match ksp_job_backfill_lib::BackfillScope::explicit_signatures(vec![signature]) {
|
|
std::result::Result::Ok(value) => value,
|
|
std::result::Result::Err(_) => return std::option::Option::None,
|
|
};
|
|
let job_id = match ksp_job_api::JobId::new("backfill-desk-monitor-test") {
|
|
std::result::Result::Ok(value) => value,
|
|
std::result::Result::Err(_) => return std::option::Option::None,
|
|
};
|
|
let network = match ksp_store_lib::RawNetworkId::new("mainnet") {
|
|
std::result::Result::Ok(value) => value,
|
|
std::result::Result::Err(_) => return std::option::Option::None,
|
|
};
|
|
let request = ksp_job_backfill_lib::BackfillRequest::new(
|
|
job_id,
|
|
network,
|
|
ksp_onchain_transport_lib::HttpRoleName::new("backfill_pool"),
|
|
ksp_job_backfill_lib::BackfillCommitment::Confirmed,
|
|
scope,
|
|
100,
|
|
10,
|
|
1,
|
|
1,
|
|
std::option::Option::None,
|
|
);
|
|
let request = match request {
|
|
std::result::Result::Ok(value) => value,
|
|
std::result::Result::Err(_) => return std::option::Option::None,
|
|
};
|
|
let runtime = match ksp_job_backfill_lib::BackfillJobRuntime::new(request) {
|
|
std::result::Result::Ok(value) => value,
|
|
std::result::Result::Err(_) => return std::option::Option::None,
|
|
};
|
|
let source = runtime.handle().snapshots();
|
|
return std::option::Option::Some(<ksp_job_backfill_lib::BackfillSnapshotSource as ksp_job_api::JobSnapshotSource>::current(&source));
|
|
}
|
|
|
|
#[test]
|
|
fn latest_value_projection_is_safe_complete_and_uses_decimal_sequence_text() {
|
|
let notification = match initial_notification() {
|
|
std::option::Option::Some(value) => value,
|
|
std::option::Option::None => return,
|
|
};
|
|
let status = crate::project_backfill_status(¬ification);
|
|
assert!(status.is_ok());
|
|
let status = match status {
|
|
std::result::Result::Ok(value) => value,
|
|
std::result::Result::Err(_) => return,
|
|
};
|
|
assert!(status.active);
|
|
assert!(!status.terminal);
|
|
assert_eq!(status.job_id, "backfill-desk-monitor-test");
|
|
assert_eq!(status.job_kind, ksp_job_backfill_lib::BACKFILL_JOB_KIND_CODE);
|
|
assert_eq!(status.sequence, "0");
|
|
assert_eq!(status.state, "created");
|
|
assert_eq!(status.phase, "created");
|
|
assert_eq!(status.scope_kind, "explicit_signatures");
|
|
assert!(!status.checkpoint_present);
|
|
assert_eq!(status.candidates_selected, 0);
|
|
assert_eq!(status.failure_code, std::option::Option::None);
|
|
assert_eq!(status.failure_domain, std::option::Option::None);
|
|
let serialized = serde_json::to_string(&status);
|
|
assert!(serialized.is_ok());
|
|
if let std::result::Result::Ok(serialized) = serialized {
|
|
for forbidden in ["address", "signature\"", "endpoint", "credential", "token", "postgres"] {
|
|
assert!(!serialized.contains(forbidden));
|
|
}
|
|
}
|
|
}
|