v0.3.15-pre.006-fix.001
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-config-lib/unit_tests/composite.rs
|
||||
// version: 5
|
||||
// version: 6
|
||||
|
||||
const TEST_COMPOSITE_FILENAME: &str = "examples/composite.example.json";
|
||||
const TEST_COMPOSITE_FILE_ID: &str = "cfg.composite.test";
|
||||
@@ -129,7 +129,7 @@ fn duplicate_component_ids_are_rejected_inside_one_composite_profile() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn v0_3_15_pre_003_raw_ingest_composite_keeps_transport_and_store_networks_coherent() {
|
||||
fn v0_3_15_pre_006_fix_001_raw_ingest_composite_is_network_centric_and_keeps_all_transport_sources_coherent() {
|
||||
let workspace = workspace_root();
|
||||
let bootstrap = crate::ConfigBootstrapOptions::from_paths(workspace.join("config"), workspace.join("config/schemas"));
|
||||
assert!(bootstrap.is_ok(), "committed Config roots should be valid: {bootstrap:?}");
|
||||
@@ -148,47 +148,58 @@ fn v0_3_15_pre_003_raw_ingest_composite_keeps_transport_and_store_networks_coher
|
||||
process.insert("KSP_SECRET_PUBLICNODE_MAINNET_GRPC_X_TOKEN".to_owned(), "publicnode-mainnet-composite-canary".to_owned());
|
||||
process.insert("KSP_SECRET_PUBLICNODE_TESTNET_GRPC_X_TOKEN".to_owned(), "publicnode-testnet-composite-canary".to_owned());
|
||||
let environment = crate::ConfigEnvironment::from_maps(process, std::collections::BTreeMap::new());
|
||||
for (profile_id, expected_network) in [
|
||||
("devnet_public", "devnet"),
|
||||
("helius_devnet", "devnet"),
|
||||
("orbitflare_devnet", "devnet"),
|
||||
("mainnet_public", "mainnet"),
|
||||
("helius_mainnet", "mainnet"),
|
||||
("publicnode_mainnet", "mainnet"),
|
||||
("publicnode_testnet", "testnet"),
|
||||
for (profile_id, expected_network, expected_transport_profiles) in [
|
||||
("devnet", "devnet", vec!["devnet_public", "helius_devnet", "orbitflare_devnet"]),
|
||||
("mainnet", "mainnet", vec!["mainnet_public", "helius_mainnet", "publicnode_mainnet"]),
|
||||
("testnet", "testnet", vec!["testnet_public", "publicnode_testnet"]),
|
||||
] {
|
||||
let composite = engine.load_resolved_composite(&file_id, std::option::Option::Some(profile_id));
|
||||
assert!(composite.is_ok(), "Raw Ingest composite profile {profile_id} should resolve: {composite:?}");
|
||||
assert!(composite.is_ok(), "Raw Ingest network profile {profile_id} should resolve: {composite:?}");
|
||||
let composite = match composite {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(_) => continue,
|
||||
};
|
||||
assert_eq!(composite.profile_id(), profile_id);
|
||||
let transport_component = composite.component("transport");
|
||||
let store_component = composite.component("store");
|
||||
assert!(transport_component.is_some(), "profile {profile_id} should contain Transport");
|
||||
assert!(store_component.is_some(), "profile {profile_id} should contain Store");
|
||||
let (transport_component, store_component) = match (transport_component, store_component) {
|
||||
(std::option::Option::Some(transport), std::option::Option::Some(store)) => (transport, store),
|
||||
_ => continue,
|
||||
let store_component = match store_component {
|
||||
std::option::Option::Some(value) => value,
|
||||
std::option::Option::None => continue,
|
||||
};
|
||||
assert_eq!(transport_component.resolved().profile_id(), profile_id);
|
||||
assert_eq!(store_component.resolved().profile_id(), expected_network);
|
||||
let transport = engine.resolve_transport_config_profile(transport_component.resolved(), &environment);
|
||||
let store = engine.resolve_store_config_profile(store_component.resolved(), &environment);
|
||||
assert!(transport.is_ok(), "Transport profile {profile_id} should map: {transport:?}");
|
||||
assert!(store.is_ok(), "Store profile {expected_network} should map: {store:?}");
|
||||
let (transport, store) = match (transport, store) {
|
||||
(std::result::Result::Ok(transport), std::result::Result::Ok(store)) => (transport, store),
|
||||
_ => continue,
|
||||
};
|
||||
assert_eq!(store.settings().network().as_str(), expected_network);
|
||||
assert!(transport.http_settings().endpoints().iter().all(|endpoint| return endpoint.cluster().as_str() == expected_network));
|
||||
if let std::option::Option::Some(ws) = transport.ws_settings() {
|
||||
assert!(ws.endpoints().iter().all(|endpoint| return endpoint.cluster().as_str() == expected_network));
|
||||
if let std::result::Result::Ok(store) = store {
|
||||
assert_eq!(store.settings().network().as_str(), expected_network);
|
||||
}
|
||||
if let std::option::Option::Some(grpc) = transport.grpc_settings() {
|
||||
assert!(grpc.endpoints().iter().all(|endpoint| return endpoint.cluster().as_str() == expected_network));
|
||||
let transport_components = composite
|
||||
.components()
|
||||
.iter()
|
||||
.filter(|(component_id, component)| {
|
||||
return component_id.starts_with("transport") && component.resolved().file_id().as_str() == crate::FILE_ID_STD_TRANSPORT;
|
||||
})
|
||||
.map(|(_, component)| return component)
|
||||
.collect::<std::vec::Vec<_>>();
|
||||
assert_eq!(transport_components.len(), expected_transport_profiles.len());
|
||||
let actual_profiles = transport_components.iter().map(|component| return component.resolved().profile_id()).collect::<std::vec::Vec<_>>();
|
||||
for expected_transport_profile in expected_transport_profiles {
|
||||
assert!(
|
||||
actual_profiles.contains(&expected_transport_profile),
|
||||
"network profile {profile_id} should include Transport source {expected_transport_profile}"
|
||||
);
|
||||
}
|
||||
for component in transport_components {
|
||||
let transport = engine.resolve_transport_config_profile(component.resolved(), &environment);
|
||||
assert!(transport.is_ok(), "Transport source {} should map: {transport:?}", component.resolved().profile_id());
|
||||
if let std::result::Result::Ok(transport) = transport {
|
||||
assert!(transport.http_settings().endpoints().iter().all(|endpoint| return endpoint.cluster().as_str() == expected_network));
|
||||
if let std::option::Option::Some(ws) = transport.ws_settings() {
|
||||
assert!(ws.endpoints().iter().all(|endpoint| return endpoint.cluster().as_str() == expected_network));
|
||||
}
|
||||
if let std::option::Option::Some(grpc) = transport.grpc_settings() {
|
||||
assert!(grpc.endpoints().iter().all(|endpoint| return endpoint.cluster().as_str() == expected_network));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user