v0.3.6-pre.008
This commit is contained in:
@@ -1,12 +1,13 @@
|
||||
// file: crates/ksp-job-backfill-lib/tests/dependency_boundary.rs
|
||||
// version: 3
|
||||
// version: 4
|
||||
|
||||
//! Dependency firewall canaries through Backfill Store persistence.
|
||||
//! Dependency firewall canaries through bounded Backfill execution/checkpointing.
|
||||
|
||||
#[test]
|
||||
fn pre_007_manifest_uses_only_planned_ksp_edges_and_backend_neutral_store() {
|
||||
fn pre_008_manifest_uses_only_planned_ksp_edges_and_private_futures_runtime() {
|
||||
let manifest = include_str!("../Cargo.toml");
|
||||
for required in [
|
||||
"futures-util = { workspace = true, features = [\"std\"] }",
|
||||
"ksp-core-lib = { path = \"../ksp-core-lib\" }",
|
||||
"ksp-job-api = { path = \"../ksp-job-api\" }",
|
||||
"ksp-logging-lib = { path = \"../ksp-logging-lib\" }",
|
||||
@@ -32,22 +33,26 @@ fn pre_007_manifest_uses_only_planned_ksp_edges_and_backend_neutral_store() {
|
||||
] {
|
||||
assert!(!manifest.contains(forbidden), "forbidden Backfill dependency present: {forbidden}");
|
||||
}
|
||||
let normal_dependencies = match manifest.split("[dev-dependencies]").next() {
|
||||
std::option::Option::Some(value) => value,
|
||||
std::option::Option::None => manifest,
|
||||
};
|
||||
assert!(!normal_dependencies.contains("tokio ="), "Tokio must not become a public/normal Backfill dependency in pre.008");
|
||||
return;
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pre_007_production_sources_keep_transport_and_store_in_their_owned_layers() {
|
||||
let non_conversion_sources = [
|
||||
fn pre_008_production_sources_keep_transport_store_and_scheduler_ownership_separate() {
|
||||
let neutral_sources = [
|
||||
include_str!("../src/checkpoint.rs"),
|
||||
include_str!("../src/constants.rs"),
|
||||
include_str!("../src/discovery.rs"),
|
||||
include_str!("../src/error.rs"),
|
||||
include_str!("../src/lib.rs"),
|
||||
include_str!("../src/request.rs"),
|
||||
];
|
||||
for source in non_conversion_sources {
|
||||
for forbidden in
|
||||
["ksp_config_lib::", "ksp_interface_lib::", "ksp_store_api::", "ksp_store_postgres_lib::", "reqwest::", "serde_json::", "std::env", "tonic::"]
|
||||
{
|
||||
for source in neutral_sources {
|
||||
for forbidden in ["ksp_config_lib::", "ksp_interface_lib::", "ksp_store_api::", "ksp_store_postgres_lib::", "reqwest::", "std::env", "tonic::"] {
|
||||
assert!(!source.contains(forbidden), "forbidden concrete Backfill path detected: {forbidden}");
|
||||
}
|
||||
}
|
||||
@@ -59,23 +64,24 @@ fn pre_007_production_sources_keep_transport_and_store_in_their_owned_layers() {
|
||||
assert!(conversion.contains("BackfillHydrationOutcome::Missing(reference)"));
|
||||
assert!(!conversion.contains("execute_standard_rpc"));
|
||||
assert!(!conversion.contains("persist_raw_transaction_acquisition"));
|
||||
for forbidden in ["ksp_config_lib::", "ksp_interface_lib::", "ksp_store_api::", "ksp_store_postgres_lib::", "reqwest::", "std::env", "tonic::"] {
|
||||
assert!(!conversion.contains(forbidden), "forbidden RAW conversion path detected: {forbidden}");
|
||||
}
|
||||
let persistence = include_str!("../src/persistence.rs");
|
||||
assert!(persistence.contains("persist_raw_transaction_acquisition"));
|
||||
assert!(persistence.contains("RawTransactionAcquisitionMode::Normal"));
|
||||
assert!(persistence.contains("ERROR_CODE_RAW_CONFLICT"));
|
||||
assert!(!persistence.contains("record_raw_transaction_observation"));
|
||||
assert!(!persistence.contains("RawTransactionAcquisitionMode::ForceRehydrate"));
|
||||
for forbidden in ["ksp_config_lib::", "ksp_interface_lib::", "ksp_store_api::", "ksp_store_postgres_lib::", "reqwest::", "std::env", "tonic::"] {
|
||||
assert!(!persistence.contains(forbidden), "forbidden Store persistence path detected: {forbidden}");
|
||||
}
|
||||
let discovery = include_str!("../src/discovery.rs");
|
||||
assert!(discovery.contains("get_signatures_for_address"));
|
||||
assert!(!discovery.contains("execute_standard_rpc"));
|
||||
assert!(!discovery.contains("retry"));
|
||||
assert!(!discovery.contains("endpoint_name"));
|
||||
assert!(!discovery.contains("HttpEndpoint"));
|
||||
let execution = include_str!("../src/execution.rs");
|
||||
assert!(execution.contains("FuturesUnordered"));
|
||||
assert!(execution.contains("hydrate_backfill_candidate"));
|
||||
assert!(execution.contains("persist_backfill_hydration"));
|
||||
assert!(execution.contains("request.hydration_concurrency()"));
|
||||
for forbidden in ["tokio::spawn", "tokio::time", "retry", "endpoint_name", "provider()", "ForceRehydrate", "get_raw_transaction"] {
|
||||
assert!(!execution.contains(forbidden), "forbidden scheduler/policy ownership detected: {forbidden}");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// file: crates/ksp-job-backfill-lib/tests/public_api.rs
|
||||
// version: 3
|
||||
// version: 4
|
||||
|
||||
//! Public API canaries for bounded Backfill discovery, RAW v1 conversion and Store persistence.
|
||||
//! Public API canaries through bounded Backfill execution and caller-owned checkpoints.
|
||||
|
||||
#[test]
|
||||
fn pre_005_request_scope_and_discovery_contracts_are_available_from_crate_root() {
|
||||
@@ -96,3 +96,13 @@ fn pre_007_store_persistence_contract_is_available_from_crate_root() {
|
||||
assert_eq!(ksp_job_backfill_lib::ERROR_CODE_BACKFILL_PERSISTENCE_INVALID, ksp_core_lib::ErrorCode::new("job_backfill", "persistence_invalid"));
|
||||
return;
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pre_008_checkpoint_and_bounded_execution_contracts_are_available_from_crate_root() {
|
||||
let _execute = ksp_job_backfill_lib::execute_backfill_discovery;
|
||||
let _checkpoint: std::option::Option<ksp_job_backfill_lib::BackfillCheckpoint> = std::option::Option::None;
|
||||
let _batch: std::option::Option<ksp_job_backfill_lib::BackfillExecutionBatch> = std::option::Option::None;
|
||||
assert_eq!(ksp_job_backfill_lib::ERROR_CODE_BACKFILL_CHECKPOINT_INVALID, ksp_core_lib::ErrorCode::new("job_backfill", "checkpoint_invalid"));
|
||||
assert_eq!(ksp_job_backfill_lib::ERROR_CODE_BACKFILL_EXECUTION_INVALID, ksp_core_lib::ErrorCode::new("job_backfill", "execution_invalid"));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
// file: crates/ksp-job-backfill-lib/tests/release_completeness.rs
|
||||
// version: 3
|
||||
// version: 4
|
||||
|
||||
//! Completeness canaries through the `pre.007` Backfill Store persistence tranche.
|
||||
//! Completeness canaries through the `pre.008` bounded execution/checkpoint tranche.
|
||||
|
||||
#[test]
|
||||
fn pre_007_production_module_inventory_is_exact() -> std::io::Result<()> {
|
||||
fn pre_008_production_module_inventory_is_exact() -> std::io::Result<()> {
|
||||
let source_root = std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("src");
|
||||
let entries = match std::fs::read_dir(source_root) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
@@ -32,12 +32,15 @@ fn pre_007_production_module_inventory_is_exact() -> std::io::Result<()> {
|
||||
}
|
||||
}
|
||||
names.sort_unstable();
|
||||
assert_eq!(names, std::vec!["constants.rs", "conversion.rs", "discovery.rs", "error.rs", "lib.rs", "persistence.rs", "request.rs"]);
|
||||
assert_eq!(
|
||||
names,
|
||||
std::vec!["checkpoint.rs", "constants.rs", "conversion.rs", "discovery.rs", "error.rs", "execution.rs", "lib.rs", "persistence.rs", "request.rs"]
|
||||
);
|
||||
return std::result::Result::Ok(());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pre_007_surface_adds_store_persistence_without_checkpoint_runtime() {
|
||||
fn pre_008_surface_adds_bounded_execution_and_checkpoint_without_pre_009_runtime() {
|
||||
let root = include_str!("../src/lib.rs");
|
||||
for required in [
|
||||
"BackfillCandidate",
|
||||
@@ -53,19 +56,20 @@ fn pre_007_surface_adds_store_persistence_without_checkpoint_runtime() {
|
||||
"BackfillRawAcquisition",
|
||||
"BackfillHydrationOutcome",
|
||||
"hydrate_backfill_candidate",
|
||||
"RAW_TRANSACTION_FORMAT_ID",
|
||||
"RAW_TRANSACTION_FORMAT_VERSION",
|
||||
"ERROR_CODE_BACKFILL_RAW_CONVERSION_INVALID",
|
||||
"BackfillPersistenceOutcome",
|
||||
"BackfillEntityPersistence",
|
||||
"BackfillObservationPersistence",
|
||||
"persist_backfill_hydration",
|
||||
"ERROR_CODE_BACKFILL_PERSISTENCE_INVALID",
|
||||
"BackfillCheckpoint",
|
||||
"BackfillExecutionBatch",
|
||||
"execute_backfill_discovery",
|
||||
"ERROR_CODE_BACKFILL_CHECKPOINT_INVALID",
|
||||
"ERROR_CODE_BACKFILL_EXECUTION_INVALID",
|
||||
] {
|
||||
assert!(root.contains(required), "required pre.006 public contract missing: {required}");
|
||||
assert!(root.contains(required), "required pre.008 public contract missing: {required}");
|
||||
}
|
||||
for forbidden in ["BackfillCheckpoint", "BackfillJobHandle", "JobSnapshotSource"] {
|
||||
assert!(!root.contains(forbidden), "later Backfill tranche leaked into pre.007: {forbidden}");
|
||||
for forbidden in ["BackfillJobHandle", "BackfillSnapshot", "JobSnapshotSource", "tokio::", "FuturesUnordered"] {
|
||||
assert!(!root.contains(forbidden), "pre.009 or runtime implementation detail leaked into public root: {forbidden}");
|
||||
}
|
||||
assert!(!root.contains("pub mod "));
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user