| Joy Onyerikwu | d806cc0 | 2019-10-01 07:46:18 -0500 | [diff] [blame] | 1 | *** Settings *** | 
 | 2 | Documentation       BMC server health, collect sensors. | 
 | 3 |  | 
 | 4 | # Test Parameters: | 
 | 5 | # OPENBMC_HOST      The BMC host name or IP address. | 
 | 6 |  | 
 | 7 | Resource            ../../lib/bmc_redfish_resource.robot | 
 | 8 | Resource            ../../lib/openbmc_ffdc.robot | 
 | 9 | Library             Collections | 
 | 10 | Library             ../syslib/utils_keywords.py | 
 | 11 |  | 
 | 12 | Suite Setup         Suite Setup Execution | 
 | 13 | Suite Teardown      Suite Teardown Execution | 
 | 14 | Test Setup          Printn | 
 | 15 |  | 
 | 16 | *** Variables *** | 
 | 17 | ${QUIET}                     ${1} | 
 | 18 | ${sensors_values_rest}       Rest sensors collection excluded | 
 | 19 | ${sensors_values_redfish}    Redfish sensors collection excluded | 
 | 20 | ${sensors_flagged_rest}      Rest sensors collection excluded | 
 | 21 | ${sensors_flagged_redfish}   Redfish sensors collection excluded | 
 | 22 |  | 
 | 23 |  | 
 | 24 | *** Test Cases *** | 
 | 25 |  | 
 | 26 | Rest Collect Sensors | 
 | 27 |     [Documentation]  Collect the sensors values using the OpenBMC Rest API. | 
 | 28 |     [Tags]  Rest_Collect_Sensors  rest | 
 | 29 |     [Teardown]  FFDC On Test Case Fail  clean_up=${FALSE} | 
 | 30 |  | 
 | 31 |     ${sensors}=  OpenBMC Get Request  ${SENSORS_URI}enumerate | 
 | 32 |     ${sensors}=  Evaluate  $sensors.json()['data'] | 
 | 33 |     ${sensors_collected_via_rest}=  gen_robot_print.Sprint Vars  sensors | 
 | 34 |     Log To Console  ${sensors_collected_via_rest} | 
 | 35 |     ${fans}=  Filter Struct  ${sensors}  [('Unit', '\.RPMS$')]  regex=1 | 
 | 36 |     ${no_fans}=  Filter Struct  ${sensors}  [('WarningAlarmHigh', None),('WarningAlarmLow', None)] | 
 | 37 |     ...  invert=${True} | 
 | 38 |     Log  sensor values raw:${\n}${sensors}${\n}sensors no fans:${\n}${no_fans}${\n}fans:${\n}${fans} | 
 | 39 |     ...  level=DEBUG | 
 | 40 |  | 
 | 41 |     ${fans_flagged}=  Filter Struct  ${fans} | 
 | 42 |     ...  [('CriticalAlarmHigh', False),('CriticalAlarmLow', False)]  invert=${True} | 
 | 43 |     ${filter_str}=  Catenate  [('CriticalAlarmHigh', False),('CriticalAlarmLow', False), | 
 | 44 |     ...  ('WarningAlarmHigh', False),('WarningAlarmLow', False)] | 
 | 45 |     ${other_sensors_flagged}=  Filter Struct  ${no_fans}  ${filter_str}  invert=${True} | 
 | 46 |     ${sensors_flagged_rest}=  gen_robot_print.Sprint Vars  fans_flagged  other_sensors_flagged | 
 | 47 |     Set Suite Variable  ${sensors_flagged_rest} | 
 | 48 |  | 
 | 49 |  | 
 | 50 | Redfish Collect Sensors | 
 | 51 |     [Documentation]  Collect the sensor values using Redfish. | 
 | 52 |     [Tags]  Redfish_Collect_Sensors  redfish | 
 | 53 |     [Setup]  Redfish.Login | 
 | 54 |     [Teardown]  Redfish Test Teardown Execution | 
 | 55 |  | 
 | 56 |     ${redfish_chassis_power}=  Redfish_Utils.Enumerate Request  ${REDFISH_CHASSIS_POWER_URI}  ${0} | 
 | 57 |     ${redfish_chassis_thermal}=  Redfish_Utils.Enumerate Request  ${REDFISH_CHASSIS_THERMAL_URI}  ${0} | 
 | 58 |     ${redfish_chassis_sensors}=  Redfish_Utils.Enumerate Request  ${REDFISH_CHASSIS_SENSORS_URI}  ${0} | 
 | 59 |     ${sensors_values_redfish}=  gen_robot_print.Sprint Vars | 
 | 60 |     ...  redfish_chassis_power  redfish_chassis_thermal  redfish_chassis_sensors | 
 | 61 |     Set Suite Variable  ${sensors_values_redfish} | 
 | 62 |     Log To Console  ${sensors_values_redfish} | 
 | 63 |  | 
 | 64 |     ${health_check_filter_dict}=  Create Dictionary  Health=OK | 
 | 65 |     ${merged_dicts}=  Evaluate  {**$redfish_chassis_power, **$redfish_chassis_thermal} | 
 | 66 |     Log  ${merged_dicts}  level=DEBUG | 
 | 67 |     ${sensors_flagged_redfish}=  Filter Struct  ${merged_dicts}  ${health_check_filter_dict}  invert=${TRUE} | 
 | 68 |     ${sensors_flagged_redfish}=  gen_robot_print.Sprint Vars  sensors_flagged_redfish | 
 | 69 |     Set Suite Variable  ${sensors_flagged_redfish} | 
 | 70 |  | 
 | 71 |  | 
 | 72 | *** Keywords *** | 
 | 73 |  | 
 | 74 | Suite Setup Execution | 
 | 75 |     [Documentation]  Do suite setup tasks. | 
 | 76 |  | 
 | 77 |     Set Log Level  DEBUG | 
 | 78 |     REST Power On  stack_mode=skip | 
 | 79 |  | 
 | 80 |  | 
 | 81 | Suite Teardown Execution | 
 | 82 |     [Documentation]  Do suite teardown tasks. Log sensor values collected. | 
 | 83 |  | 
 | 84 |     Log Many  ${sensors_values_rest}  ${sensors_values_redfish} | 
 | 85 |     Log  Sensors detected out of bounds via Rest:${\n}${sensors_flagged_rest}  console=true | 
 | 86 |     Log  Sensors detected out of bounds via Redfish:${\n}${sensors_flagged_redfish}  console=true | 
 | 87 |  | 
 | 88 |  | 
 | 89 | Redfish Test Teardown Execution | 
 | 90 |     [Documentation]  Do the post test teardown for redfish. | 
 | 91 |  | 
 | 92 |     Redfish.Logout | 
 | 93 |     FFDC On Test Case Fail  clean_up=${FALSE} |