v0.3.15-pre.004

This commit is contained in:
2026-09-13 08:47:31 +02:00
parent bd376dc479
commit dc8863a46d
6 changed files with 229 additions and 24 deletions

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-worker-raw-transaction-ingest-lib/unit_tests/runtime_resources.rs
// version: 34
// version: 35
fn grpc_endpoint(cluster: &str) -> std::option::Option<ksp_onchain_transport_lib::YellowstoneGrpcEndpointSettings> {
return grpc_endpoint_with_identity(cluster, "yellowstone-fixture", "fixture-provider");
@@ -115,12 +115,48 @@ fn ws_endpoint(
endpoint_name: &str,
provider: &str,
protocol: ksp_onchain_transport_lib::WsProtocolKind,
) -> std::option::Option<ksp_onchain_transport_lib::WsEndpointSettings> {
let capabilities = if protocol == ksp_onchain_transport_lib::WsProtocolKind::SolanaStandard {
std::vec![
ksp_onchain_transport_lib::WsSubscriptionKind::Account,
ksp_onchain_transport_lib::WsSubscriptionKind::Block,
ksp_onchain_transport_lib::WsSubscriptionKind::Logs,
ksp_onchain_transport_lib::WsSubscriptionKind::Program,
ksp_onchain_transport_lib::WsSubscriptionKind::Root,
ksp_onchain_transport_lib::WsSubscriptionKind::Signature,
ksp_onchain_transport_lib::WsSubscriptionKind::Slot,
ksp_onchain_transport_lib::WsSubscriptionKind::SlotsUpdates,
ksp_onchain_transport_lib::WsSubscriptionKind::Vote,
]
} else if protocol == ksp_onchain_transport_lib::WsProtocolKind::HeliusLaserStream {
std::vec![
ksp_onchain_transport_lib::WsSubscriptionKind::Account,
ksp_onchain_transport_lib::WsSubscriptionKind::Logs,
ksp_onchain_transport_lib::WsSubscriptionKind::Program,
ksp_onchain_transport_lib::WsSubscriptionKind::Root,
ksp_onchain_transport_lib::WsSubscriptionKind::Signature,
ksp_onchain_transport_lib::WsSubscriptionKind::Slot,
ksp_onchain_transport_lib::WsSubscriptionKind::SlotsUpdates,
ksp_onchain_transport_lib::WsSubscriptionKind::HeliusTransaction,
]
} else {
return std::option::Option::None;
};
return ws_endpoint_with_capabilities(cluster, endpoint_name, provider, protocol, std::option::Option::Some(capabilities));
}
fn ws_endpoint_with_capabilities(
cluster: &str,
endpoint_name: &str,
provider: &str,
protocol: ksp_onchain_transport_lib::WsProtocolKind,
capabilities: std::option::Option<std::vec::Vec<ksp_onchain_transport_lib::WsSubscriptionKind>>,
) -> std::option::Option<ksp_onchain_transport_lib::WsEndpointSettings> {
let url = match ksp_onchain_transport_lib::WsEndpointUrl::parse("ws://127.0.0.1:10001/WS-SECRET-CANARY") {
std::result::Result::Ok(value) => value,
std::result::Result::Err(_) => return std::option::Option::None,
};
return std::option::Option::Some(ksp_onchain_transport_lib::WsEndpointSettings::new(
let endpoint = ksp_onchain_transport_lib::WsEndpointSettings::new(
endpoint_name,
true,
ksp_onchain_transport_lib::WsProviderName::new(provider),
@@ -128,7 +164,11 @@ fn ws_endpoint(
protocol,
url,
ksp_onchain_transport_lib::WsSessionSettings::default(),
));
);
return std::option::Option::Some(match capabilities {
std::option::Option::Some(value) => endpoint.with_subscription_capabilities(value),
std::option::Option::None => endpoint,
});
}
fn supervisor_contracts(
@@ -1971,6 +2011,159 @@ fn pre_006_coalescence_key_separates_network_signature_and_commitment() {
return;
}
#[test]
fn v0_3_15_pre_004_websocket_route_constructors_require_explicit_capability_before_io() {
let hydration_pool = match http_pool("devnet", "hydration", "get_transaction") {
std::option::Option::Some(value) => value,
std::option::Option::None => return,
};
let undeclared_logs = match ws_endpoint_with_capabilities(
"devnet",
"standard-logs-undeclared",
"fixture-ws-provider",
ksp_onchain_transport_lib::WsProtocolKind::SolanaStandard,
std::option::Option::None,
) {
std::option::Option::Some(value) => value,
std::option::Option::None => return,
};
let undeclared_logs = crate::RawTransactionIngestStandardLogsSource::new(
undeclared_logs,
ksp_onchain_transport_lib::SolanaLogsSubscribeFilter::All,
ksp_onchain_transport_lib::SolanaCommitment::Confirmed,
hydration_pool.clone(),
ksp_onchain_transport_lib::HttpRoleName::new("hydration"),
);
let undeclared_logs = match undeclared_logs {
std::result::Result::Ok(_) => return,
std::result::Result::Err(value) => value,
};
assert!(undeclared_logs.context().iter().any(|context| return context.value() == "runtime_resources.standard_logs_capability_missing"));
let wrong_logs = match ws_endpoint_with_capabilities(
"devnet",
"standard-logs-wrong",
"fixture-ws-provider",
ksp_onchain_transport_lib::WsProtocolKind::SolanaStandard,
std::option::Option::Some(std::vec![ksp_onchain_transport_lib::WsSubscriptionKind::Slot]),
) {
std::option::Option::Some(value) => value,
std::option::Option::None => return,
};
let wrong_logs = crate::RawTransactionIngestStandardLogsSource::new(
wrong_logs,
ksp_onchain_transport_lib::SolanaLogsSubscribeFilter::All,
ksp_onchain_transport_lib::SolanaCommitment::Confirmed,
hydration_pool.clone(),
ksp_onchain_transport_lib::HttpRoleName::new("hydration"),
);
let wrong_logs = match wrong_logs {
std::result::Result::Ok(_) => return,
std::result::Result::Err(value) => value,
};
assert!(wrong_logs.context().iter().any(|context| return context.value() == "runtime_resources.standard_logs_capability_missing"));
let logs = match ws_endpoint_with_capabilities(
"devnet",
"standard-logs-exact",
"fixture-ws-provider",
ksp_onchain_transport_lib::WsProtocolKind::SolanaStandard,
std::option::Option::Some(std::vec![ksp_onchain_transport_lib::WsSubscriptionKind::Logs]),
) {
std::option::Option::Some(value) => value,
std::option::Option::None => return,
};
assert!(
crate::RawTransactionIngestStandardLogsSource::new(
logs,
ksp_onchain_transport_lib::SolanaLogsSubscribeFilter::All,
ksp_onchain_transport_lib::SolanaCommitment::Confirmed,
hydration_pool.clone(),
ksp_onchain_transport_lib::HttpRoleName::new("hydration"),
)
.is_ok()
);
let undeclared_block = match ws_endpoint_with_capabilities(
"devnet",
"standard-block-undeclared",
"fixture-ws-provider",
ksp_onchain_transport_lib::WsProtocolKind::SolanaStandard,
std::option::Option::None,
) {
std::option::Option::Some(value) => value,
std::option::Option::None => return,
};
let undeclared_block = crate::RawTransactionIngestStandardBlockSource::new(
undeclared_block,
ksp_onchain_transport_lib::SolanaBlockSubscribeFilter::All,
ksp_onchain_transport_lib::SolanaCommitment::Confirmed,
);
let undeclared_block = match undeclared_block {
std::result::Result::Ok(_) => return,
std::result::Result::Err(value) => value,
};
assert!(undeclared_block.context().iter().any(|context| return context.value() == "runtime_resources.standard_block_capability_missing"));
let block = match ws_endpoint_with_capabilities(
"devnet",
"standard-block-exact",
"fixture-ws-provider",
ksp_onchain_transport_lib::WsProtocolKind::SolanaStandard,
std::option::Option::Some(std::vec![ksp_onchain_transport_lib::WsSubscriptionKind::Block]),
) {
std::option::Option::Some(value) => value,
std::option::Option::None => return,
};
assert!(
crate::RawTransactionIngestStandardBlockSource::new(
block,
ksp_onchain_transport_lib::SolanaBlockSubscribeFilter::All,
ksp_onchain_transport_lib::SolanaCommitment::Confirmed,
)
.is_ok()
);
let missing_helius = match ws_endpoint_with_capabilities(
"devnet",
"helius-transaction-missing",
"fixture-helius-provider",
ksp_onchain_transport_lib::WsProtocolKind::HeliusLaserStream,
std::option::Option::Some(std::vec![ksp_onchain_transport_lib::WsSubscriptionKind::Logs]),
) {
std::option::Option::Some(value) => value,
std::option::Option::None => return,
};
let missing_helius = crate::RawTransactionIngestHeliusTransactionSource::new(
missing_helius,
helius_transaction_filter(false),
ksp_onchain_transport_lib::SolanaCommitment::Confirmed,
hydration_pool.clone(),
ksp_onchain_transport_lib::HttpRoleName::new("hydration"),
);
let missing_helius = match missing_helius {
std::result::Result::Ok(_) => return,
std::result::Result::Err(value) => value,
};
assert!(missing_helius.context().iter().any(|context| return context.value() == "runtime_resources.helius_transaction_capability_missing"));
let helius = match ws_endpoint_with_capabilities(
"devnet",
"helius-transaction-exact",
"fixture-helius-provider",
ksp_onchain_transport_lib::WsProtocolKind::HeliusLaserStream,
std::option::Option::Some(std::vec![ksp_onchain_transport_lib::WsSubscriptionKind::HeliusTransaction]),
) {
std::option::Option::Some(value) => value,
std::option::Option::None => return,
};
assert!(
crate::RawTransactionIngestHeliusTransactionSource::new(
helius,
helius_transaction_filter(false),
ksp_onchain_transport_lib::SolanaCommitment::Confirmed,
hydration_pool,
ksp_onchain_transport_lib::HttpRoleName::new("hydration"),
)
.is_ok()
);
return;
}
#[test]
fn v0_3_13_pre_003_standard_logs_source_validates_protocol_commitment_and_hydration_route() {
let accepted = standard_logs_source(