v0.3.7-pre.011

This commit is contained in:
2026-09-02 19:50:01 +02:00
parent 313d2a1ea6
commit 618f940310
20 changed files with 682 additions and 43 deletions

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-job-backfill-lib/unit_tests/request.rs
// version: 1
// version: 2
fn signature(character: char) -> std::option::Option<crate::BackfillSignature> {
return match crate::BackfillSignature::new(character.to_string().repeat(crate::MIN_BACKFILL_SIGNATURE_TEXT_BYTES)) {
@@ -232,3 +232,71 @@ fn pre_005_scope_kind_and_anchor_are_distinct_semantics() {
assert_ne!(before, after);
return;
}
#[test]
fn pre_011_resume_reissues_checkpoint_for_new_job_without_changing_scope_semantics() {
let network = match network("mainnet-beta") {
std::option::Option::Some(value) => value,
std::option::Option::None => return,
};
let original_job = match job_id("backfill:resume-original") {
std::option::Option::Some(value) => value,
std::option::Option::None => return,
};
let resumed_job = match job_id("backfill:resume-next") {
std::option::Option::Some(value) => value,
std::option::Option::None => return,
};
let request = crate::BackfillRequest::new(
original_job.clone(),
network,
ksp_onchain_transport_lib::HttpRoleName::new("backfill_pool"),
crate::BackfillCommitment::Finalized,
crate::BackfillScope::before_address(
ksp_core_lib::Pubkey::new_from_array([11_u8; 32]),
match signature('8') {
std::option::Option::Some(value) => value,
std::option::Option::None => return,
},
),
100,
10,
1000,
4,
std::option::Option::Some(42),
);
let request = match request {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return,
};
let resume_before = match signature('9') {
std::option::Option::Some(value) => value,
std::option::Option::None => return,
};
let checkpoint = crate::BackfillCheckpoint::new(original_job, request.scope_fingerprint(), 7, std::option::Option::Some(resume_before.clone()));
let resumed = request.resume_for_job(resumed_job.clone(), checkpoint);
assert!(resumed.is_ok());
let resumed = match resumed {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return,
};
assert_eq!(resumed.job_id(), &resumed_job);
assert_eq!(resumed.scope_fingerprint(), request.scope_fingerprint());
assert_eq!(resumed.network(), request.network());
assert_eq!(resumed.role(), request.role());
assert_eq!(resumed.commitment(), request.commitment());
assert_eq!(resumed.scope(), request.scope());
assert_eq!(resumed.page_size(), request.page_size());
assert_eq!(resumed.max_pages(), request.max_pages());
assert_eq!(resumed.max_candidates(), request.max_candidates());
assert_eq!(resumed.hydration_concurrency(), request.hydration_concurrency());
assert_eq!(resumed.min_context_slot(), request.min_context_slot());
let checkpoint = resumed.checkpoint();
assert!(checkpoint.is_some());
if let std::option::Option::Some(checkpoint) = checkpoint {
assert_eq!(checkpoint.job_id(), &resumed_job);
assert_eq!(checkpoint.scope_fingerprint(), request.scope_fingerprint());
assert_eq!(checkpoint.completed_prefix(), 7);
assert_eq!(checkpoint.resume_before(), std::option::Option::Some(&resume_before));
}
}