33 lines
2.1 KiB
Rust
33 lines
2.1 KiB
Rust
// file: crates/ksp-config-lib/tests/transport_devnet_smoke.rs
|
|
// version: 1
|
|
|
|
//! Opt-in live Devnet smoke for the Config -> Transport foundation path.
|
|
|
|
#[tokio::test(flavor = "current_thread")]
|
|
#[ignore = "opt-in live Solana Devnet smoke; performs external network requests"]
|
|
async fn committed_devnet_transport_profile_reaches_all_foundation_canaries() {
|
|
let workspace = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("../..");
|
|
let bootstrap = ksp_config_lib::ConfigBootstrapOptions::from_paths(workspace.join("config"), workspace.join("config/schemas"))
|
|
.expect("committed Config roots must be valid");
|
|
let registry = ksp_config_lib::ConfigFileRegistry::defaults().expect("default Config registry must be valid");
|
|
let engine = ksp_config_lib::ConfigDocumentEngine::new(bootstrap, registry);
|
|
let environment = ksp_config_lib::ConfigEnvironment::load().expect("Config must capture the opt-in smoke environment");
|
|
let resolved = engine
|
|
.load_resolved_transport_config(std::option::Option::Some("devnet_public"), &environment)
|
|
.expect("committed devnet_public Transport profile must resolve");
|
|
assert_eq!(resolved.profile_id(), "devnet_public");
|
|
let pool = ksp_onchain_transport_lib::HttpTransportPool::new(resolved.into_settings()).expect("resolved Transport settings must construct the HTTP pool");
|
|
let role = ksp_onchain_transport_lib::HttpRoleName::new("default");
|
|
let health = pool.get_health(&role).await.expect("Devnet getHealth smoke must succeed");
|
|
assert_eq!(health, ksp_onchain_transport_lib::SolanaNodeHealth::Healthy);
|
|
let genesis_hash = pool.get_genesis_hash(&role).await.expect("Devnet getGenesisHash smoke must succeed");
|
|
assert!(!genesis_hash.as_str().is_empty());
|
|
let version = pool.get_version(&role).await.expect("Devnet getVersion smoke must succeed");
|
|
assert!(!version.solana_core().is_empty());
|
|
let balance = pool
|
|
.get_balance(&role, &ksp_core_lib::PRGIDPK_SOLANA_SYSTEM, std::option::Option::None)
|
|
.await
|
|
.expect("Devnet getBalance smoke must succeed");
|
|
assert!(balance.context().slot() > 0);
|
|
}
|