| *** Settings *** |
| Documentation This example demonstrates executing commands on a remote machine |
| ... and getting their output and the return code. |
| ... |
| ... Notice how connections are handled as part of the suite setup and |
| ... teardown. This saves some time when executing several test cases. |
| |
| Resource ../lib/rest_client.robot |
| Resource ../lib/ipmi_client.robot |
| Resource ../lib/openbmc_ffdc.robot |
| Resource ../lib/state_manager.robot |
| Library ../data/model.py |
| |
| Suite Setup Setup The Suite |
| Test Setup Open Connection And Log In |
| Test Teardown Post Test Case Execution |
| |
| *** Variables *** |
| ${model}= ${OPENBMC_MODEL} |
| |
| *** Test Cases *** |
| Verify connection |
| Execute new Command echo "hello" |
| Response Should Be Equal "hello" |
| |
| Execute ipmi BT capabilities command |
| [Tags] Execute_ipmi_BT_capabilities_command |
| Run IPMI command 0x06 0x36 |
| response Should Be Equal " 01 40 40 0a 01" |
| |
| Execute Set Sensor Boot Count |
| [Tags] Execute_Set_Sensor_Boot_Count |
| |
| ${uri}= Get System component BootCount |
| ${x}= Get Sensor Number ${uri} |
| |
| Run IPMI command 0x04 0x30 ${x} 0x01 0x00 0x35 0x00 0x00 0x00 0x00 0x00 0x00 |
| Read the Attribute ${uri} value |
| ${val}= convert to integer 53 |
| Response Should Be Equal ${val} |
| |
| Set Sensor Boot Progress |
| [Tags] Set_Sensor_Boot_Progress |
| |
| ${uri}= Get System component BootProgress |
| ${x}= Get Sensor Number ${uri} |
| |
| Run IPMI command 0x04 0x30 ${x} 0xa9 0x00 0x04 0x00 0x00 0x00 0x00 0x14 0x00 |
| Read the Attribute ${uri} value |
| Response Should Be Equal FW Progress, Baseboard Init |
| |
| Set Sensor Boot Progress Longest String |
| [Tags] Set_Sensor_Boot_Progress_Longest_String |
| ${uri}= Get System component BootProgress |
| ${x}= Get Sensor Number ${uri} |
| |
| Run IPMI command 0x04 0x30 ${x} 0xa9 0x00 0x04 0x00 0x00 0x00 0x00 0x0e 0x00 |
| Read The Attribute ${uri} value |
| Response Should Be Equal FW Progress, Docking station attachment |
| |
| Boot Progress Sensor FW Hang Unspecified Error |
| [Tags] Boot_Progress_Sensor_FW_Hang_Unspecified_Error |
| |
| ${uri}= Get System component BootProgress |
| ${x}= Get Sensor Number ${uri} |
| |
| Run IPMI command 0x04 0x30 ${x} 0xa9 0x00 0x02 0x00 0x00 0x00 0x00 0x00 0x00 |
| Read The Attribute ${uri} value |
| Response Should Be Equal FW Hang, Unspecified |
| |
| Boot Progress FW Hang State |
| [Tags] Boot_Progress_FW_Hang_State |
| |
| ${uri}= Get System component BootProgress |
| ${x}= Get Sensor Number ${uri} |
| |
| Run IPMI command 0x04 0x30 ${x} 0xa9 0x00 0x01 0x00 0x00 0x00 0x00 0x20 0x00 |
| Read The Attribute ${uri} value |
| Response Should Be Equal POST Error, unknown |
| |
| OS Status Sensor Boot Completed Progress |
| [Tags] OS_Status_Sensor_Boot_Completed_Progress |
| |
| ${uri}= Get System component OperatingSystemStatus |
| ${x}= Get Sensor Number ${uri} |
| |
| Run IPMI command 0x04 0x30 ${x} 0x00 0x00 0x01 0x00 0x00 0x00 0x00 0x20 0x00 |
| Read The Attribute ${uri} value |
| Response Should Be Equal Boot completed (00) |
| |
| OS Status Sensor Progress |
| [Tags] OS_Status_Sensor_Progress |
| |
| ${uri}= Get System component OperatingSystemStatus |
| ${x}= Get Sensor Number ${uri} |
| |
| Run IPMI command 0x04 0x30 ${x} 0x00 0x00 0x04 0x00 0x00 0x00 0x00 0x20 0x00 |
| Read The Attribute ${uri} value |
| Response Should Be Equal PXE boot completed |
| |
| OCC Active Sensor On Enabled |
| [Tags] OCC_Active_Sensor_On_Enabled |
| |
| ${uri}= Get System component OccStatus |
| ${x}= Get Sensor Number ${uri} |
| |
| Run IPMI command 0x04 0x30 ${x} 0x00 0x00 0x02 0x00 0x00 0x00 0x00 0x20 0x00 |
| Read The Attribute ${uri} value |
| Response Should Be Equal Enabled |
| |
| OCC Active Sensor On Disabled |
| [Tags] OCC_Active_Sensor_On_Disabled |
| |
| ${uri}= Get System component OccStatus |
| ${x}= Get Sensor Number ${uri} |
| |
| Run IPMI command 0x04 0x30 ${x} 0x00 0x00 0x01 0x00 0x00 0x00 0x00 0x20 0x00 |
| Read The Attribute ${uri} value |
| Response Should Be Equal Disabled |
| |
| Verify OCC Power Supply Redundancy |
| [Documentation] Check if OCC's power supply is set to not redundant. |
| [Tags] Verify_OCC_Power_Supply_Redundancy |
| ${uri}= Get System Component PowerSupplyRedundancy |
| |
| Read The Attribute ${uri} value |
| Response Should Be Equal Disabled |
| |
| Verify OCC Power Supply Derating Value |
| [Documentation] Check if OCC's power supply derating value |
| ... is set correctly to a constant value 10. |
| [Tags] Verify_OCC_Power_Supply_Derating_Value |
| |
| ${uri}= Get System Component PowerSupplyDerating |
| |
| Read The Attribute ${uri} value |
| Response Should Be Equal ${10} |
| |
| |
| Verify Enabling OCC Turbo Setting Via IPMI |
| [Documentation] Set and verify OCC's turbo allowed on enable. |
| # The allowed value for turbo allowed: |
| # True - To enable turbo allowed. |
| # False - To disable turbo allowed. |
| [Setup] Turbo Setting Test Case Setup |
| [Tags] Verify_Enabling_OCC_Turbo_Setting_Via_IPMI |
| [Teardown] Restore System Configuration |
| |
| ${uri}= Get System Component TurboAllowed |
| ${sensor_num}= Get Sensor Number ${uri} |
| |
| ${ipmi_cmd}= Catenate SEPARATOR= 0x04 0x30 ${sensor_num} 0x00${SPACE} |
| ... 0x00 0x01 0x00 0x00 0x00 0x00 0x20 0x00 |
| Run IPMI Command ${ipmi_cmd} |
| |
| Read The Attribute ${uri} value |
| Response Should Be Equal True |
| |
| |
| Verify Disabling OCC Turbo Setting Via IPMI |
| [Documentation] Set and verify OCC's turbo allowed on disable. |
| # The allowed value for turbo allowed: |
| # True - To enable turbo allowed. |
| # False - To disable turbo allowed. |
| [Setup] Turbo Setting Test Case Setup |
| [Tags] Verify_Disabling_OCC_Turbo_Setting_Via_IPMI |
| [Teardown] Restore System Configuration |
| |
| ${uri}= Get System Component TurboAllowed |
| ${sensor_num}= Get Sensor Number ${uri} |
| |
| ${ipmi_cmd}= Catenate SEPARATOR= 0x04 0x30 ${sensor_num} 0x00${SPACE} |
| ... 0x00 0x00 0x00 0x01 0x00 0x00 0x20 0x00 |
| Run IPMI Command ${ipmi_cmd} |
| |
| Read The Attribute ${uri} value |
| Response Should Be Equal False |
| |
| |
| Verify Setting OCC Turbo Via REST |
| [Documentation] Verify enabling and disabling OCC's turbo allowed |
| ... via REST. |
| # The allowed value for turbo allowed: |
| # True - To enable turbo allowed. |
| # False - To disable turbo allowed. |
| |
| [Setup] Turbo Setting Test Case Setup |
| [Tags] Verify_Setting_OCC_Turbo_Via_REST |
| [Teardown] Restore System Configuration |
| |
| Set Turbo Setting Via REST False |
| ${setting}= Read Turbo Setting Via REST |
| Should Be Equal ${setting} False |
| |
| Set Turbo Setting Via REST True |
| ${setting}= Read Turbo Setting Via REST |
| Should Be Equal ${setting} True |
| |
| CPU Present |
| [Tags] CPU_Present |
| |
| ${uri}= Get System component cpu |
| ${x}= Get Inventory Sensor Number ${uri} |
| |
| Run IPMI command 0x04 0x30 ${x} 0xa9 0x00 0x80 0x00 0x00 0x00 0x00 0x20 0x00 |
| Read The Attribute ${uri} present |
| Response Should Be Equal True |
| |
| CPU Not Present |
| [Tags] CPU_Not_Present |
| |
| ${uri}= Get System component cpu |
| ${x}= Get Inventory Sensor Number ${uri} |
| |
| Run IPMI command 0x04 0x30 ${x} 0xa9 0x00 0x00 0x00 0x80 0x00 0x00 0x20 0x00 |
| Read The Attribute ${uri} present |
| Response Should Be Equal False |
| |
| CPU No Fault |
| [Tags] CPU_No_Fault |
| |
| ${uri}= Get System component cpu |
| ${x}= Get Inventory Sensor Number ${uri} |
| |
| Run IPMI command 0x04 0x30 ${x} 0x00 0x00 0x00 0x00 0x00 0x01 0x00 0x20 0x00 |
| Read The Attribute ${uri} fault |
| Response Should Be Equal False |
| |
| Core Present |
| [Tags] Core_Present |
| |
| ${uri}= Get System component core11 |
| ${x}= Get Inventory Sensor Number ${uri} |
| |
| Run IPMI command 0x04 0x30 ${x} 0xa9 0x00 0x80 0x00 0x00 0x00 0x00 0x20 0x00 |
| Read The Attribute ${uri} present |
| Response Should Be Equal True |
| |
| Core Not Present |
| [Tags] Core_Not_Present |
| |
| ${uri}= Get System component core11 |
| ${x}= Get Inventory Sensor Number ${uri} |
| |
| Run IPMI command 0x04 0x30 ${x} 0xa9 0x00 0x00 0x00 0x80 0x00 0x00 0x20 0x00 |
| Read The Attribute ${uri} present |
| Response Should Be Equal False |
| |
| Core Fault |
| [Tags] Core_Fault |
| |
| ${uri}= Get System component core11 |
| ${x}= Get Inventory Sensor Number ${uri} |
| |
| Run IPMI command 0x04 0x30 ${x} 0xa9 0xff 0x00 0x01 0x00 0x00 0x00 0x20 0x00 |
| Read The Attribute ${uri} fault |
| Response Should Be Equal True |
| |
| Core No Fault |
| [Tags] Core_No_Fault |
| |
| ${uri}= Get System component core11 |
| ${x}= Get Inventory Sensor Number ${uri} |
| |
| Run IPMI command 0x04 0x30 ${x} 0x00 0x00 0x00 0x00 0x00 0x01 0x00 0x20 0x00 |
| Read The Attribute ${uri} fault |
| Response Should Be Equal False |
| |
| DIMM3 Present |
| [Tags] DIMM3_Present |
| |
| ${uri}= Get System component dimm3 |
| ${x}= Get Inventory Sensor Number ${uri} |
| |
| Run IPMI command 0x04 0x30 ${x} 0xa9 0x00 0x40 0x00 0x00 0x00 0x00 0x20 0x00 |
| Read The Attribute ${uri} present |
| Response Should Be Equal True |
| |
| DIMM3 not Present |
| [Tags] DIMM3_not_Present |
| |
| ${uri}= Get System component dimm3 |
| ${x}= Get Inventory Sensor Number ${uri} |
| |
| Run IPMI command 0x04 0x30 ${x} 0xa9 0xff 0x00 0x00 0x40 0x00 0x00 0x20 0x00 |
| Read The Attribute ${uri} present |
| Response Should Be Equal False |
| |
| DIMM0 no fault |
| [Tags] DIMM0_no_fault |
| ${uri}= Get System component dimm0 |
| ${x}= Get Inventory Sensor Number ${uri} |
| |
| Run IPMI command 0x04 0x30 ${x} 0x00 0x00 0x00 0x00 0x10 0x00 0x00 0x20 0x00 |
| Read The Attribute ${uri} fault |
| Response Should Be Equal False |
| |
| Centaur0 Present |
| [Tags] Centaur0_Present |
| |
| ${uri}= Get System component membuf |
| ${x}= Get Inventory Sensor Number ${uri} |
| |
| Run IPMI command 0x04 0x30 ${x} 0xa9 0x00 0x40 0x00 0x00 0x00 0x00 0x20 0x00 |
| Read The Attribute ${uri} present |
| Response Should Be Equal True |
| |
| Centaur0 not Present |
| [Tags] Centaur0_not_Present |
| |
| ${uri}= Get System component membuf |
| ${x}= Get Inventory Sensor Number ${uri} |
| |
| Run IPMI command 0x04 0x30 ${x} 0x00 0x00 0x00 0x00 0x40 0x00 0x00 0x20 0x00 |
| Read The Attribute ${uri} present |
| Response Should Be Equal False |
| |
| Centaur0 Fault |
| [Tags] Centaur0_Fault |
| |
| ${uri}= Get System component membuf |
| ${x}= Get Inventory Sensor Number ${uri} |
| |
| Run IPMI command 0x04 0x30 ${x} 0x00 0x00 0x10 0x00 0x00 0x00 0x00 0x20 0x00 |
| Read The Attribute ${uri} fault |
| Response Should Be Equal True |
| |
| Centaur0 No Fault |
| [Tags] Centaur0_No_Fault |
| |
| ${uri}= Get System component membuf |
| ${x}= Get Inventory Sensor Number ${uri} |
| |
| Run IPMI command 0x04 0x30 ${x} 0x00 0x00 0x00 0x00 0x10 0x00 0x00 0x20 0x00 |
| Read The Attribute ${uri} fault |
| Response Should Be Equal False |
| |
| System Present |
| [Tags] System_Present |
| |
| ${uri}= Get System component system |
| Read The Attribute ${uri} present |
| Response Should Be Equal True |
| |
| System Fault |
| [Tags] System_Fault |
| ${uri}= Get System component system |
| Read The Attribute ${uri} fault |
| Response Should Be Equal False |
| |
| Chassis Present |
| [Tags] Chassis_Present |
| |
| ${uri}= Get System component chassis |
| Read The Attribute |
| ... ${INVENTORY_URI}system/chassis present |
| Response Should Be Equal True |
| |
| Chassis Fault |
| [Tags] Chassis_Fault |
| ${uri}= Get System component chassis |
| Read The Attribute |
| ... ${INVENTORY_URI}system/chassis fault |
| Response Should Be Equal False |
| |
| io_board Present |
| [Tags] io_board_Present |
| ${uri}= Get System component io_board |
| Read The Attribute ${uri} present |
| Response Should Be Equal True |
| |
| io_board Fault |
| [Tags] io_board_Fault |
| ${uri}= Get System component io_board |
| Read The Attribute ${uri} fault |
| Response Should Be Equal False |
| |
| *** Keywords *** |
| |
| Setup The Suite |
| [Documentation] Do the initial suite setup. |
| |
| # Reboot host to re-power on clean if host is not "off". |
| ${current_state}= Get Host State |
| Run Keyword If '${current_state}' == 'Off' |
| ... Initiate Host Boot |
| ... ELSE Initiate Host Reboot |
| |
| Wait Until Keyword Succeeds |
| ... 10 min 10 sec Is OS Starting |
| |
| Open Connection And Log In |
| ${resp}= Read Properties ${OPENBMC_BASE_URI}enumerate timeout=30 |
| Set Suite Variable ${SYSTEM_INFO} ${resp} |
| log Dictionary ${resp} |
| |
| Turbo Setting Test Case Setup |
| [Documentation] Open Connection and turbo settings |
| |
| Open Connection And Log In |
| ${setting}= Read Turbo Setting Via REST |
| Set Global Variable ${TURBO_SETTING} ${setting} |
| |
| Get System component |
| [Arguments] ${type} |
| ${list}= Get Dictionary Keys ${SYSTEM_INFO} |
| ${resp}= Get Matches ${list} regexp=^.*[0-9a-z_].${type}[0-9]*$ |
| ${url}= Get From List ${resp} 0 |
| [Return] ${url} |
| |
| Execute new Command |
| [Arguments] ${args} |
| ${output}= Execute Command ${args} |
| set test variable ${OUTPUT} "${output}" |
| |
| response Should Be Equal |
| [Arguments] ${args} |
| Should Be Equal ${OUTPUT} ${args} |
| |
| Response Should Be Empty |
| Should Be Empty ${OUTPUT} |
| |
| Read the Attribute |
| [Arguments] ${uri} ${parm} |
| ${output}= Read Attribute ${uri} ${parm} |
| set test variable ${OUTPUT} ${output} |
| |
| Get Sensor Number |
| [Arguments] ${name} |
| ${x}= get sensor ${OPENBMC_MODEL} ${name} |
| [Return] ${x} |
| |
| Get Inventory Sensor Number |
| [Arguments] ${name} |
| ${x}= get inventory sensor ${OPENBMC_MODEL} ${name} |
| [Return] ${x} |
| |
| Read Turbo Setting Via REST |
| [Documentation] Return turbo allowed setting. |
| |
| ${resp}= OpenBMC Get Request ${SENSORS_URI}host/TurboAllowed |
| ${jsondata}= To JSON ${resp.content} |
| Should Be Equal As Strings ${resp.status_code} ${HTTP_OK} |
| [Return] ${jsondata["data"]["value"]} |
| |
| Set Turbo Setting Via REST |
| [Documentation] Set turbo setting via REST. |
| [Arguments] ${setting} |
| # Description of argument(s): |
| # setting Value which needs to be set.(i.e. False or True) |
| |
| ${valueDict}= Create Dictionary data=${setting} |
| Write Attribute ${SENSORS_URI}host/TurboAllowed value data=${valueDict} |
| |
| Post Test Case Execution |
| [Documentation] Do the post test teardown. |
| ... 1. Capture FFDC on test failure. |
| ... 2. Close all open SSH connections. |
| |
| FFDC On Test Case Fail |
| Close All Connections |
| |
| Restore System Configuration |
| [Documentation] Restore System Configuration. |
| |
| Open Connection And Log In |
| Set Turbo Setting Via REST ${TURBO_SETTING} |
| Close All Connections |