| *** Settings *** |
| Documentation Inventory of hardware resources under systems. |
| |
| Resource ../../lib/bmc_redfish_resource.robot |
| Resource ../../lib/bmc_redfish_utils.robot |
| Resource ../../lib/openbmc_ffdc.robot |
| |
| Suite Setup Suite Setup Execution |
| Suite Teardown Suite Teardown Execution |
| Test Teardown Test Teardown Execution |
| |
| *** Variables *** |
| |
| # The passing criteria. Must have at least this many. |
| ${min_count_dimm} 2 |
| ${min_count_cpu} 1 |
| |
| |
| *** Test Cases *** |
| |
| Get Processor Inventory Via Redfish And Verify |
| [Documentation] Get the number of CPUs that are functional and enabled. |
| [Tags] Get_Processor_Inventory_Via_Redfish_And_Verify |
| |
| ${num_cpus}= Count OK And Enabled cpu Processors |
| Rprint Vars num_cpus |
| Run Keyword If ${num_cpus} < ${min_count_cpu} |
| ... Fail msg=Insufficient CPU count. |
| |
| |
| Get Memory Inventory Via Redfish And Verify |
| [Documentation] Get the number of DIMMs that are functional and enabled. |
| [Tags] Get_Memory_Inventory_Via_Redfish_And_Verify |
| |
| ${num_dimms}= Count OK And Enabled dimm Memory |
| Rprint Vars num_dimms |
| Run Keyword If ${num_dimms} < ${min_count_dimm} |
| ... Fail msg=Insufficient DIMM count. |
| |
| |
| *** Keywords *** |
| |
| |
| Count OK And Enabled |
| [Documentation] Return the number of items that are OK and Enabled. |
| [Arguments] ${item} ${general_resource} |
| |
| # Count the number of OK and Enabled items within a general_resource. |
| # Example: Count the number of cpus under |
| # /redfish/v1/Systems/system/Processors |
| |
| # Description of Argument(s): |
| # item A hardware item within a general resource that has |
| # "Health" and "State" attributes, E.g. "cpu" or "dimm". |
| # general_resource A systems resource type that contains these items, such |
| # as "Processors", or "Memory". |
| |
| ${num_items}= Set Variable 0 |
| |
| ${resources}= Redfish_Utils.List Request |
| ... /redfish/v1/Systems/system/${general_resource} |
| # Example response if general_resource = "Memory": |
| # /redfish/v1/Systems/system/Memory |
| # /redfish/v1/Systems/system/Memory/dimm0 |
| # /redfish/v1/Systems/system/Memory/dimm1 |
| # /redfish/v1/Systems/system/Memory/dimm2 |
| # etc. |
| # Example response if general_resource = "Processors": |
| # /redfish/v1/Systems/system/Processors |
| # /redfish/v1/Systems/system/Processors/cpu0 |
| # /redfish/v1/Systems/system/Processors/cpu1 |
| |
| :FOR ${resource} IN @{resources} |
| \ ${valid}= Is Item Enabled And Health Ok ${item} ${resource} |
| \ ${increment}= Run Keyword If |
| ... ${valid} Set Variable ${1} ELSE Set Variable ${0} |
| \ ${num_items}= Evaluate ${num_items}+${increment} |
| |
| [Return] ${num_items} |
| |
| |
| Is Item Enabled And Health Ok |
| [Documentation] Return ${True} if the item is OK and Enabled. |
| [Arguments] ${item} ${resource} |
| |
| # Description of Argument(s): |
| # item A hardware item within a general resource that has |
| # "Health" and "State" attributes, E.g. "dimm". |
| # resource An individual resource to check, for example, |
| # "/redfish/v1/Systems/system/Memory/dimm0". |
| |
| # Return if item is not in the resource string. This |
| # might be a top-level resource which is not a specific hardware item. |
| # Example: Return if resource = "/redfish/v1/Systems/system/Memory" but |
| # continue if resource = "/redfish/v1/Systems/system/Memory/dimm1". |
| ${valid_parameter}= Evaluate "${item}" in "${resource}" |
| Return From Keyword If not ${valid_parameter} ${False} |
| |
| ${status_detail}= Redfish.Get |
| ... ${resource} valid_status_codes=[${HTTP_OK}] |
| |
| ${health}= Set Variable ${status_detail.dict["Status"]["Health"]} |
| ${state}= Set Variable ${status_detail.dict["Status"]["State"]} |
| |
| Return From Keyword If |
| ... "${health}" == "OK" and "${state}" == "Enabled" ${True} |
| |
| [Return] ${False} |
| |
| |
| Suite Teardown Execution |
| [Documentation] Do the post suite teardown. |
| |
| Redfish.Logout |
| |
| |
| Suite Setup Execution |
| [Documentation] Do test case setup tasks. |
| |
| Redfish.Login |
| |
| |
| Test Teardown Execution |
| [Documentation] Do the post test teardown. |
| |
| FFDC On Test Case Fail |