use crate::helpers::client::E2eClient;
use crate::helpers::constants::{category_enabled, Suite};
use crate::helpers::report::TestReport;
use crate::run_test;
pub fn run(client: &E2eClient, suite: Suite, report: &mut TestReport) {
if !category_enabled("query") {
return;
}
if suite.has_multiple_upstreams() {
run_test!(report, "query", "Federated search", {
let (status, _) = client.federated("search test");
assert!(
[200, 502, 503].contains(&status),
"Expected 200/502/503, got {status}"
);
});
}
run_test!(report, "query", "Circuit breaker status", {
let (status, _) = client.circuit();
assert_eq!(status, 200);
});
run_test!(report, "query", "Queue status", {
let (status, _) = client.queue();
assert_eq!(status, 200);
});
}
pub fn run_suite_specific(client: &E2eClient, suite: Suite, report: &mut TestReport) {
if !category_enabled("query") {
return;
}
run_test!(report, "query", "Health JSON valid", {
let (status, body) = client.health();
assert_eq!(status, 200);
assert!(body["status"].is_string(), "Missing status field");
});
if suite.is_all() {
run_test!(report, "query", "Pool multi-upstream", {
let (_, pool) = client.pool();
let total = pool["stats"]["total_upstreams"].as_u64().unwrap_or(0);
assert!(total >= 1, "Expected >= 1 upstreams, got {total}");
});
run_test!(report, "query", "Context list", {
let status = client.get_status("/contexts");
assert!(
status == 200 || status == 404,
"Expected 200 or 404, got {status}"
);
});
run_test!(report, "query", "Admin reload", {
let (status, _) = client.admin_reload();
assert!(
status == 200 || status == 404,
"Expected 200 or 404, got {status}"
);
});
}
}