blob: 7cac40f3ab53b91634b16c3b02e774396903d661 [file] [log] [blame]
*** Settings ***
Documentation BMC server health, collect sensors.
# Test Parameters:
# OPENBMC_HOST The BMC host name or IP address.
Resource ../../lib/bmc_redfish_resource.robot
Resource ../../lib/openbmc_ffdc.robot
Library Collections
Library ../lib/os_utils_keywords.py
Suite Setup Suite Setup Execution
Suite Teardown Suite Teardown Execution
Test Setup Printn
*** Variables ***
${QUIET} ${1}
${sensors_values_rest} Rest sensors collection excluded
${sensors_values_redfish} Redfish sensors collection excluded
${sensors_flagged_rest} Rest sensors collection excluded
${sensors_flagged_redfish} Redfish sensors collection excluded
*** Test Cases ***
Rest Collect Sensors
[Documentation] Collect the sensors values using the OpenBMC Rest API.
[Tags] Rest_Collect_Sensors rest
[Teardown] FFDC On Test Case Fail
${sensors}= OpenBMC Get Request ${SENSORS_URI}enumerate
${sensors}= Evaluate $sensors.json()['data']
${sensors_collected_via_rest}= gen_robot_print.Sprint Vars sensors
Log To Console ${sensors_collected_via_rest}
${fans}= Filter Struct ${sensors} [('Unit', '\.RPMS$')] regex=1
${no_fans}= Filter Struct ${sensors} [('WarningAlarmHigh', None),('WarningAlarmLow', None)]
... invert=${True}
Log sensor values raw:${\n}${sensors}${\n}sensors no fans:${\n}${no_fans}${\n}fans:${\n}${fans}
... level=DEBUG
${fans_flagged}= Filter Struct ${fans}
... [('CriticalAlarmHigh', False),('CriticalAlarmLow', False)] invert=${True}
${filter_str}= Catenate [('CriticalAlarmHigh', False),('CriticalAlarmLow', False),
... ('WarningAlarmHigh', False),('WarningAlarmLow', False)]
${other_sensors_flagged}= Filter Struct ${no_fans} ${filter_str} invert=${True}
${sensors_flagged_rest}= gen_robot_print.Sprint Vars fans_flagged other_sensors_flagged
Set Suite Variable ${sensors_flagged_rest}
Redfish Collect Sensors
[Documentation] Collect the sensor values using Redfish.
[Tags] Redfish_Collect_Sensors redfish
[Setup] Redfish.Login
[Teardown] Redfish Test Teardown Execution
${redfish_chassis_power}= Redfish_Utils.Enumerate Request ${REDFISH_CHASSIS_POWER_URI} ${0}
${redfish_chassis_thermal}= Redfish_Utils.Enumerate Request ${REDFISH_CHASSIS_THERMAL_URI} ${0}
${redfish_chassis_sensors}= Redfish_Utils.Enumerate Request ${REDFISH_CHASSIS_SENSORS_URI} ${0}
${sensors_values_redfish}= gen_robot_print.Sprint Vars
... redfish_chassis_power redfish_chassis_thermal redfish_chassis_sensors
Set Suite Variable ${sensors_values_redfish}
Log To Console ${sensors_values_redfish}
${health_check_filter_dict}= Create Dictionary Health=OK
${merged_dicts}= Evaluate {**$redfish_chassis_power, **$redfish_chassis_thermal}
Log ${merged_dicts} level=DEBUG
${sensors_flagged_redfish}= Filter Struct ${merged_dicts} ${health_check_filter_dict} invert=${TRUE}
${sensors_flagged_redfish}= gen_robot_print.Sprint Vars sensors_flagged_redfish
Set Suite Variable ${sensors_flagged_redfish}
*** Keywords ***
Suite Setup Execution
[Documentation] Do suite setup tasks.
Set Log Level DEBUG
REST Power On stack_mode=skip
Suite Teardown Execution
[Documentation] Do suite teardown tasks. Log sensor values collected.
Log Many ${sensors_values_rest} ${sensors_values_redfish}
Log Sensors detected out of bounds via Rest:${\n}${sensors_flagged_rest} console=true
Log Sensors detected out of bounds via Redfish:${\n}${sensors_flagged_redfish} console=true
Redfish Test Teardown Execution
[Documentation] Do the post test teardown for redfish.
Redfish.Logout
FFDC On Test Case Fail