v0.3.7-pre.005-fix.001
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-app-backfill-desk/tests/config_composition.rs
|
||||
// version: 3
|
||||
// version: 4
|
||||
|
||||
//! Config composite, Transport readiness and Store-network composition contracts for Backfill Desk through pre.005.
|
||||
|
||||
@@ -157,20 +157,35 @@ fn pre_004_default_composite_builds_http_pool_for_both_backfill_rpc_methods() {
|
||||
}
|
||||
}
|
||||
|
||||
fn declared_http_networks(profile: &ksp_config_lib::ResolvedConfigProfile) -> std::vec::Vec<String> {
|
||||
let endpoints = profile.profile().get("endpoints").and_then(serde_json::Value::as_array);
|
||||
let endpoints = match endpoints {
|
||||
std::option::Option::Some(value) => value,
|
||||
std::option::Option::None => return std::vec::Vec::new(),
|
||||
};
|
||||
let mut networks = endpoints
|
||||
.iter()
|
||||
.filter_map(|endpoint| {
|
||||
let enabled = endpoint.get("enabled").and_then(serde_json::Value::as_bool);
|
||||
if enabled != std::option::Option::Some(true) {
|
||||
return std::option::Option::None;
|
||||
}
|
||||
return endpoint.get("cluster").and_then(serde_json::Value::as_str).map(str::to_owned);
|
||||
})
|
||||
.collect::<std::vec::Vec<_>>();
|
||||
networks.sort();
|
||||
networks.dedup();
|
||||
return networks;
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pre_005_all_composite_profiles_keep_resolved_transport_and_store_networks_identical() {
|
||||
fn pre_005_all_composite_profiles_keep_declared_http_and_store_networks_identical_without_external_secrets() {
|
||||
let engine = workspace_engine();
|
||||
assert!(engine.is_ok(), "workspace Config engine should be constructible: {engine:?}");
|
||||
let engine = match engine {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(_) => return,
|
||||
};
|
||||
let environment = ksp_config_lib::ConfigEnvironment::load();
|
||||
assert!(environment.is_ok(), "Config environment should load for committed Backfill Desk profiles");
|
||||
let environment = match environment {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(_) => return,
|
||||
};
|
||||
let file_id = ksp_config_lib::ConfigFileId::new(ksp_config_lib::FILE_ID_COMPOSITE_KSP_APP_BACKFILL_DESK);
|
||||
let file_id = match file_id {
|
||||
std::result::Result::Ok(value) => value,
|
||||
@@ -191,30 +206,12 @@ fn pre_005_all_composite_profiles_keep_resolved_transport_and_store_networks_ide
|
||||
(std::option::Option::Some(transport), std::option::Option::Some(store)) => (transport, store),
|
||||
_ => continue,
|
||||
};
|
||||
let transport = engine.resolve_transport_config_profile(transport.resolved(), &environment);
|
||||
let store = engine.resolve_store_config_profile(store.resolved(), &environment);
|
||||
assert!(transport.is_ok(), "profile {profile_id} Transport should map: {transport:?}");
|
||||
assert!(store.is_ok(), "profile {profile_id} Store should map: {store:?}");
|
||||
let (transport, store) = match (transport, store) {
|
||||
(std::result::Result::Ok(transport), std::result::Result::Ok(store)) => (transport, store),
|
||||
_ => continue,
|
||||
};
|
||||
let mut networks = transport
|
||||
.settings()
|
||||
.endpoints()
|
||||
.iter()
|
||||
.filter_map(|endpoint| {
|
||||
if endpoint.enabled() {
|
||||
return std::option::Option::Some(endpoint.cluster().as_str().to_owned());
|
||||
}
|
||||
return std::option::Option::None;
|
||||
})
|
||||
.collect::<std::vec::Vec<_>>();
|
||||
networks.sort();
|
||||
networks.dedup();
|
||||
assert_eq!(networks.len(), 1, "profile {profile_id} must resolve exactly one enabled HTTP network");
|
||||
if let std::option::Option::Some(transport_network) = networks.first() {
|
||||
assert_eq!(transport_network.as_str(), store.settings().network().as_str(), "profile {profile_id} Store/Transport network mismatch");
|
||||
let networks = declared_http_networks(transport.resolved());
|
||||
assert_eq!(networks.len(), 1, "profile {profile_id} must declare exactly one enabled HTTP network");
|
||||
let store_network = store.resolved().profile().get("network").and_then(serde_json::Value::as_str);
|
||||
assert!(store_network.is_some(), "profile {profile_id} Store should declare one logical network");
|
||||
if let (std::option::Option::Some(transport_network), std::option::Option::Some(store_network)) = (networks.first(), store_network) {
|
||||
assert_eq!(transport_network.as_str(), store_network, "profile {profile_id} Store/Transport network mismatch");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user