blob: 5bf1027d9f9c786df79ee86ab541db4e23adedd9 [file] [log] [blame]
*** 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