v0.3.15-pre.004
This commit is contained in:
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user