use super::debug_health_assessment_contracts::LoggingSchemaDebugHealthAssessment;
use super::debug_health_assessment_from_stage_output_assembly::build_logging_schema_debug_health_assessment_from_stage_output_assembly;
use super::debug_health_assessment_stage_input_assembly::build_debug_health_assessment_stage_input_assembly;
use super::debug_health_assessment_stage_output_assembly::build_debug_health_assessment_stage_output_assembly;
use super::debug_summary_metrics::LoggingSchemaDebugSummaryMetrics;
pub(super) fn build_logging_schema_debug_health_assessment(
metrics: &LoggingSchemaDebugSummaryMetrics,
) -> LoggingSchemaDebugHealthAssessment {
let stage_input = build_debug_health_assessment_stage_input_assembly(metrics);
let stage = build_debug_health_assessment_stage_output_assembly(stage_input);
build_logging_schema_debug_health_assessment_from_stage_output_assembly(stage)
}
#[cfg(test)]
mod tests {
use super::*;
use crate::api::schema::debug_health_stage_test_fixtures::build_health_summary_metrics_for_tests;
#[test]
fn health_assessment_is_healthy_with_info_reason_when_no_issues_exist() {
let assessment = build_logging_schema_debug_health_assessment(
&build_health_summary_metrics_for_tests(0, 0, 0, 0, 0),
);
assert_eq!(assessment.health, "healthy");
assert_eq!(assessment.health_reasons.len(), 1);
assert_eq!(
assessment.health_reasons[0].code,
"all_expected_resources_present"
);
}
#[test]
fn health_assessment_is_degraded_when_required_resources_are_missing() {
let assessment = build_logging_schema_debug_health_assessment(
&build_health_summary_metrics_for_tests(1, 1, 0, 0, 0),
);
assert_eq!(assessment.health, "degraded");
assert_eq!(assessment.health_reasons[0].severity, "error");
}
}