Files
khadhroony-solana-project/crates/ksp-app-backfill-desk/unit_tests/backfill_status.rs
2026-09-02 17:40:03 +02:00

77 lines
3.3 KiB
Rust

// file: crates/ksp-app-backfill-desk/unit_tests/backfill_status.rs
// version: 1
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-beta") {
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(&notification);
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));
}
}
}