|  | *** Settings *** | 
|  |  | 
|  | Documentation  Test LED groups in OpenBMC. | 
|  |  | 
|  | Resource       ../lib/rest_client.robot | 
|  | Resource       ../lib/resource.robot | 
|  | Resource       ../lib/openbmc_ffdc.robot | 
|  |  | 
|  | Suite Setup    Setup The Suite | 
|  | Test Teardown  FFDC On Test Case Fail | 
|  |  | 
|  | Force Tags  LED_Group | 
|  |  | 
|  | *** Variables *** | 
|  |  | 
|  |  | 
|  | *** Test Cases *** | 
|  |  | 
|  | Verify CPU Fault LEDs Group | 
|  | [Documentation]  Verify CPU's fault LEDs. | 
|  | [Tags]  Verify_CPU_Fault_LEDs_Group | 
|  |  | 
|  | Verify LED Group  cpu  fault | 
|  |  | 
|  | Verify Fan Fault LEDs Group | 
|  | [Documentation]  Verify fan's fault LEDs. | 
|  | [Tags]  Verify_Fan_Fault_LEDs_Group | 
|  |  | 
|  | Verify LED Group  fan  fault | 
|  |  | 
|  | Verify DIMM Fault LEDs Group | 
|  | [Documentation]  Verify DIMM's fault LEDs. | 
|  | [Tags]  Verify_DIMM_Fault_LEDs_Group | 
|  |  | 
|  | Verify LED Group  dimm  fault | 
|  |  | 
|  | Verify GPU Fault LEDs Group | 
|  | [Documentation]  Verify GPU's fault LEDs. | 
|  | [Tags]  Verify_GPU_Fault_LEDs_Group | 
|  |  | 
|  | Verify LED Group  gv100card  fault | 
|  |  | 
|  | Verify Power Supply Fault LEDs Group | 
|  | [Documentation]  Verify power supply's fault LEDs. | 
|  | [Tags]  Verify_Power_Supply_Fault_LEDs_Group | 
|  |  | 
|  | Verify LED Group  powersupply  fault | 
|  |  | 
|  | Verify Enclosure Fault LED Group | 
|  | [Documentation]  Validate enclosure's fault LED. | 
|  | [Tags]  Verify_Enclosure_Fault_LED_Group | 
|  |  | 
|  | Verify LED Group  enclosure  fault | 
|  |  | 
|  | Verify Power State LEDs Group | 
|  | [Documentation]  Verify power state LEDs. | 
|  | [Tags]  Verify_Power_State_LEDs_Group | 
|  |  | 
|  | Verify LED Group  power | 
|  |  | 
|  | Verify Enclosure Identify LED Group | 
|  | [Documentation]  Validate enclosure's identify LED. | 
|  | [Tags]  Verify_Enclosure_Identify_LED_Group | 
|  |  | 
|  | Verify LED Group  enclosure  identify | 
|  |  | 
|  | Verify Fan Identify LEDs Group | 
|  | [Documentation]  Verify fan's identify LEDs. | 
|  | [Tags]  Verify_Fan_Identify_LEDs_Group | 
|  |  | 
|  | Verify LED Group  fan  identify | 
|  |  | 
|  | Verify Other Fault LEDs Group | 
|  | [Documentation]  Verify other fault LEDs. | 
|  | [Tags]  Verify_Other_Fault_LEDs_Group | 
|  |  | 
|  | Verify LED Group  system_fault | 
|  | Verify LED Group  boxelder_fault | 
|  | Verify LED Group  bmc_fault | 
|  | Verify LED Group  motherboard_fault | 
|  |  | 
|  | Verify Enclosure Fault LED On Assertion | 
|  | [Documentation]  Verify enclosure fault LED on assertion. | 
|  | [Tags]  Verify_Enclosure_Fault_LED_On_Assertion | 
|  |  | 
|  | Set LED State  On  cpu0_fault | 
|  | ${resp}=  Get System LED State  rear_fault | 
|  | Should Be Equal  ${resp}  On | 
|  |  | 
|  |  | 
|  | Verify Rear Power LED Association With Group LED | 
|  | [Documentation]  Verify rear power LED state association with | 
|  | ...  power on group LED. | 
|  | [Tags]  Verify_Rear_Power_LED_Association_With_Group_LED | 
|  |  | 
|  | Set LED State  On  power_on | 
|  | ${resp}=  Get System LED State  rear_power | 
|  | Should Be Equal  ${resp}  On | 
|  |  | 
|  | Set LED State  Off  power_on | 
|  | ${resp}=  Get System LED State  rear_power | 
|  | Should Be Equal  ${resp}  Blink | 
|  |  | 
|  |  | 
|  | ***Keywords*** | 
|  |  | 
|  | Set LED State | 
|  | [Documentation]  Set state of given LED to on or off. | 
|  | [Arguments]  ${state}  ${led_name} | 
|  | # Description of arguments: | 
|  | # state     LED's state to set, i.e. On or Off | 
|  | # led_name  Name of LED | 
|  |  | 
|  | ${data}=  Run Keyword If | 
|  | ...  '${state}' == 'On'  Create Dictionary  data=${True} | 
|  | ...  ELSE IF  '${state}' == 'Off'  Create Dictionary  data=${False} | 
|  | ...  ELSE  Fail  msg=Invalid LED state | 
|  |  | 
|  | ${resp}=  OpenBMC Put Request | 
|  | ...  ${LED_GROUPS_URI}${led_name}/attr/Asserted  data=${data} | 
|  | ${jsondata}=  to JSON  ${resp.content} | 
|  | Should Be Equal As Strings  ${jsondata['status']}  ok | 
|  |  | 
|  | Verify LED Group | 
|  | [Documentation]  Set and validate state of all LEDs with given name. | 
|  | [Arguments]  ${led_prefix}  ${led_suffix}=${EMPTY} | 
|  | # Description of arguments: | 
|  | # led_prefix  LED name's prefix | 
|  | # led_suffix  LED name's suffix | 
|  |  | 
|  | ${led_list}=  Get LED List  ${led_prefix}  ${led_suffix} | 
|  |  | 
|  | ${list_length}=  Get Length  ${led_list} | 
|  | Should Be True  ${list_length} > 0 | 
|  | ...  msg=No ${led_prefix} ${led_suffix} LED found | 
|  |  | 
|  | FOR  ${led}  IN  @{led_list} | 
|  | Set LED State  On  ${led} | 
|  | ${resp}=  Get LED State XYZ  ${led} | 
|  | Should Be Equal  ${resp}  ${1} | 
|  | Set LED State  Off  ${led} | 
|  | ${resp}=  Get LED State XYZ  ${led} | 
|  | Should Be Equal  ${resp}  ${0} | 
|  | END | 
|  |  | 
|  | Setup The Suite | 
|  | [Documentation]  Test setup before running this suite. | 
|  |  | 
|  | ${resp}=  Read Properties  ${LED_GROUPS_URI} | 
|  | Set Suite Variable  ${LED_GROUPS}  ${resp} | 
|  |  | 
|  | Get LED List | 
|  | [Documentation]  Returns all LEDs with given name. | 
|  | [Arguments]  ${led_prefix}  ${led_suffix}=${EMPTY} | 
|  | # Description of arguments: | 
|  | # led_prefix  LED name's prefix | 
|  | # led_suffix  LED name's suffix | 
|  |  | 
|  | ${list}=  Get Matches | 
|  | ...  ${LED_GROUPS}  regexp=^.*[0-9a-z_].${led_prefix}.*${led_suffix} | 
|  | ${led_list}=  Create List | 
|  |  | 
|  | FOR  ${element}  IN  @{list} | 
|  | ${element}=  Remove String  ${element}  ${LED_GROUPS_URI} | 
|  | Append To List  ${led_list}  ${element} | 
|  | END | 
|  | Sort List  ${led_list} | 
|  |  | 
|  | [Return]  ${led_list} |