use super::*;
use crate::resilience::{_clear_resilience_state_for_tests, _reset_resilience_for_tests};
use crate::testing::acquire_test_state_lock;
#[test]
fn health_test_increment_and_latency_roundtrip() {
let _guard = acquire_test_state_lock();
_reset_health_for_tests();
crate::health::increment_dropped(Signal::Logs, 3);
crate::health::increment_emitted(Signal::Traces, 5);
crate::health::increment_retries(Signal::Metrics, 7);
crate::health::record_export_failure(Signal::Logs);
crate::health::record_export_latency(Signal::Traces, 12.5);
let snapshot = get_health_snapshot();
assert_eq!(snapshot.dropped_logs, 3);
assert_eq!(snapshot.emitted_traces, 5);
assert_eq!(snapshot.retries_metrics, 7);
assert_eq!(snapshot.export_failures_logs, 1);
assert!((snapshot.export_latency_ms_traces - 12.5).abs() < 1e-9);
}
#[test]
fn health_test_receipt_failures_are_counted() {
let _guard = acquire_test_state_lock();
_reset_health_for_tests();
assert_eq!(get_health_snapshot().receipt_failures, 0);
crate::health::increment_receipt_failures();
crate::health::increment_receipt_failures();
assert_eq!(get_health_snapshot().receipt_failures, 2);
}
#[test]
fn health_test_snapshot_reads_all_three_circuit_states() {
let _guard = acquire_test_state_lock();
_reset_health_for_tests();
_reset_resilience_for_tests();
let snapshot = get_health_snapshot();
assert_eq!(snapshot.circuit_state_logs, "closed");
assert_eq!(snapshot.circuit_state_traces, "closed");
assert_eq!(snapshot.circuit_state_metrics, "closed");
assert_eq!(snapshot.circuit_open_count_logs, 0);
assert_eq!(snapshot.circuit_open_count_traces, 0);
assert_eq!(snapshot.circuit_open_count_metrics, 0);
}
#[test]
fn health_test_snapshot_ignores_missing_circuit_states() {
let _guard = acquire_test_state_lock();
_reset_health_for_tests();
_reset_resilience_for_tests();
_clear_resilience_state_for_tests();
let snapshot = get_health_snapshot();
assert_eq!(snapshot.circuit_state_logs, "");
assert_eq!(snapshot.circuit_state_traces, "");
assert_eq!(snapshot.circuit_state_metrics, "");
}
#[test]
fn health_test_async_blocking_risk_increments_per_signal() {
let _guard = acquire_test_state_lock();
_reset_health_for_tests();
crate::health::increment_async_blocking_risk(Signal::Logs);
crate::health::increment_async_blocking_risk(Signal::Traces);
crate::health::increment_async_blocking_risk(Signal::Traces);
crate::health::increment_async_blocking_risk(Signal::Metrics);
crate::health::increment_async_blocking_risk(Signal::Metrics);
crate::health::increment_async_blocking_risk(Signal::Metrics);
let snapshot = get_health_snapshot();
assert_eq!(snapshot.async_blocking_risk_logs, 1);
assert_eq!(snapshot.async_blocking_risk_traces, 2);
assert_eq!(snapshot.async_blocking_risk_metrics, 3);
}