Fix/provider query non kiro tests (#311)

* fix(admin): enable local provider-query tests for non-kiro providers

* test(admin): cover non-kiro provider-query model execution

* fix(admin): preserve provider-query test errors and failover retries

* fix(admin): handle provider-query test alias and HTTP retry edges

* fix(admin): extend provider-query failover coverage and fallback behavior

* fix(admin): prefer supported endpoints for provider-query tests

* fix(admin): prefer provider-query endpoints with compatible keys

* fix(admin): fall back to compatible provider-query endpoints

* fix(admin): align provider-query local tests with transport policy

---------

Co-authored-by: fawney19 <[email protected]>
This commit is contained in:
RWDai
2026-04-17 19:45:20 +08:00
committed by GitHub
co-authored by fawney19
parent 0ce61bc91c
commit dd4641d618
3 changed files with 1775 additions and 147 deletions
@@ -2,9 +2,7 @@ use crate::handlers::admin::provider::query::{
models::{
build_admin_provider_query_models_response,
build_admin_provider_query_test_model_failover_local_response,
build_admin_provider_query_test_model_failover_response,
build_admin_provider_query_test_model_local_response,
build_admin_provider_query_test_model_response,
},
payload::{
parse_admin_provider_query_body, provider_query_extract_failover_models,
@@ -58,7 +56,7 @@ impl<'a> AdminAppState<'a> {
build_admin_provider_query_models_response(self, &payload).await?,
)),
"test_model" => {
let Some(provider_id) = provider_query_extract_provider_id(&payload) else {
let Some(_provider_id) = provider_query_extract_provider_id(&payload) else {
log_admin_provider_query_validation_failure(
request_context,
route_kind,
@@ -69,7 +67,7 @@ impl<'a> AdminAppState<'a> {
ADMIN_PROVIDER_QUERY_PROVIDER_ID_REQUIRED_DETAIL,
)));
};
let Some(model) = provider_query_extract_model(&payload) else {
let Some(_model) = provider_query_extract_model(&payload) else {
log_admin_provider_query_validation_failure(
request_context,
route_kind,
@@ -80,28 +78,12 @@ impl<'a> AdminAppState<'a> {
ADMIN_PROVIDER_QUERY_MODEL_REQUIRED_DETAIL,
)));
};
let provider_type = self
.app()
.read_provider_catalog_providers_by_ids(std::slice::from_ref(&provider_id))
.await?
.into_iter()
.find(|provider| provider.id == provider_id)
.map(|provider| provider.provider_type)
.unwrap_or_default();
if provider_type.trim().eq_ignore_ascii_case("kiro") {
Ok(Some(
build_admin_provider_query_test_model_local_response(self, &payload)
.await?,
))
} else {
Ok(Some(build_admin_provider_query_test_model_response(
provider_id,
model,
)))
}
Ok(Some(
build_admin_provider_query_test_model_local_response(self, &payload).await?,
))
}
"test_model_failover" => {
let Some(provider_id) = provider_query_extract_provider_id(&payload) else {
let Some(_provider_id) = provider_query_extract_provider_id(&payload) else {
log_admin_provider_query_validation_failure(
request_context,
route_kind,
@@ -124,29 +106,10 @@ impl<'a> AdminAppState<'a> {
ADMIN_PROVIDER_QUERY_FAILOVER_MODELS_REQUIRED_DETAIL,
)));
}
let provider_type = self
.app()
.read_provider_catalog_providers_by_ids(std::slice::from_ref(&provider_id))
.await?
.into_iter()
.find(|provider| provider.id == provider_id)
.map(|provider| provider.provider_type)
.unwrap_or_default();
if provider_type.trim().eq_ignore_ascii_case("kiro") {
Ok(Some(
build_admin_provider_query_test_model_failover_local_response(
self, &payload,
)
Ok(Some(
build_admin_provider_query_test_model_failover_local_response(self, &payload)
.await?,
))
} else {
Ok(Some(
build_admin_provider_query_test_model_failover_response(
provider_id,
failover_models,
),
))
}
))
}
_ => Ok(Some(
build_admin_provider_query_models_response(self, &payload).await?,