Steven Sombar | c90c8e2 | 2019-05-21 11:28:48 -0500 | [diff] [blame] | 1 | *** Settings *** |
| 2 | Documentation Inventory of hardware resources under systems. |
| 3 | |
| 4 | Resource ../../lib/bmc_redfish_resource.robot |
| 5 | Resource ../../lib/bmc_redfish_utils.robot |
| 6 | Resource ../../lib/openbmc_ffdc.robot |
| 7 | |
| 8 | Suite Setup Suite Setup Execution |
| 9 | Suite Teardown Suite Teardown Execution |
| 10 | Test Teardown Test Teardown Execution |
| 11 | |
| 12 | *** Variables *** |
| 13 | |
| 14 | # The passing criteria. Must have at least this many. |
| 15 | ${min_count_dimm} 2 |
| 16 | ${min_count_cpu} 1 |
| 17 | |
| 18 | |
| 19 | *** Test Cases *** |
| 20 | |
| 21 | Get Processor Inventory Via Redfish And Verify |
| 22 | [Documentation] Get the number of CPUs that are functional and enabled. |
| 23 | [Tags] Get_Processor_Inventory_Via_Redfish_And_Verify |
| 24 | |
| 25 | ${num_cpus}= Count OK And Enabled cpu Processors |
| 26 | Rprint Vars num_cpus |
| 27 | Run Keyword If ${num_cpus} < ${min_count_cpu} |
| 28 | ... Fail msg=Insufficient CPU count. |
| 29 | |
| 30 | |
| 31 | Get Memory Inventory Via Redfish And Verify |
| 32 | [Documentation] Get the number of DIMMs that are functional and enabled. |
| 33 | [Tags] Get_Memory_Inventory_Via_Redfish_And_Verify |
| 34 | |
| 35 | ${num_dimms}= Count OK And Enabled dimm Memory |
| 36 | Rprint Vars num_dimms |
| 37 | Run Keyword If ${num_dimms} < ${min_count_dimm} |
| 38 | ... Fail msg=Insufficient DIMM count. |
| 39 | |
| 40 | |
| 41 | *** Keywords *** |
| 42 | |
| 43 | |
| 44 | Count OK And Enabled |
| 45 | [Documentation] Return the number of items that are OK and Enabled. |
| 46 | [Arguments] ${item} ${general_resource} |
| 47 | |
| 48 | # Count the number of OK and Enabled items within a general_resource. |
| 49 | # Example: Count the number of cpus under |
| 50 | # /redfish/v1/Systems/system/Processors |
| 51 | |
| 52 | # Description of Argument(s): |
| 53 | # item A hardware item within a general resource that has |
George Keishing | 896d10f | 2019-05-31 06:48:19 -0500 | [diff] [blame] | 54 | # "Health" and "State" attributes, E.g. "cpu" or "dimm". |
Steven Sombar | c90c8e2 | 2019-05-21 11:28:48 -0500 | [diff] [blame] | 55 | # general_resource A systems resource type that contains these items, such |
| 56 | # as "Processors", or "Memory". |
| 57 | |
| 58 | ${num_items}= Set Variable 0 |
| 59 | |
| 60 | ${resources}= Redfish_Utils.List Request |
| 61 | ... /redfish/v1/Systems/system/${general_resource} |
| 62 | # Example response if general_resource = "Memory": |
| 63 | # /redfish/v1/Systems/system/Memory |
| 64 | # /redfish/v1/Systems/system/Memory/dimm0 |
| 65 | # /redfish/v1/Systems/system/Memory/dimm1 |
| 66 | # /redfish/v1/Systems/system/Memory/dimm2 |
| 67 | # etc. |
| 68 | # Example response if general_resource = "Processors": |
| 69 | # /redfish/v1/Systems/system/Processors |
| 70 | # /redfish/v1/Systems/system/Processors/cpu0 |
| 71 | # /redfish/v1/Systems/system/Processors/cpu1 |
| 72 | |
| 73 | :FOR ${resource} IN @{resources} |
| 74 | \ ${valid}= Is Item Enabled And Health Ok ${item} ${resource} |
| 75 | \ ${increment}= Run Keyword If |
| 76 | ... ${valid} Set Variable ${1} ELSE Set Variable ${0} |
| 77 | \ ${num_items}= Evaluate ${num_items}+${increment} |
| 78 | |
| 79 | [Return] ${num_items} |
| 80 | |
| 81 | |
| 82 | Is Item Enabled And Health Ok |
| 83 | [Documentation] Return ${True} if the item is OK and Enabled. |
| 84 | [Arguments] ${item} ${resource} |
| 85 | |
| 86 | # Description of Argument(s): |
| 87 | # item A hardware item within a general resource that has |
George Keishing | 896d10f | 2019-05-31 06:48:19 -0500 | [diff] [blame] | 88 | # "Health" and "State" attributes, E.g. "dimm". |
Steven Sombar | c90c8e2 | 2019-05-21 11:28:48 -0500 | [diff] [blame] | 89 | # resource An individual resource to check, for example, |
| 90 | # "/redfish/v1/Systems/system/Memory/dimm0". |
| 91 | |
| 92 | # Return if item is not in the resource string. This |
| 93 | # might be a top-level resource which is not a specific hardware item. |
| 94 | # Example: Return if resource = "/redfish/v1/Systems/system/Memory" but |
| 95 | # continue if resource = "/redfish/v1/Systems/system/Memory/dimm1". |
| 96 | ${valid_parameter}= Evaluate "${item}" in "${resource}" |
| 97 | Return From Keyword If not ${valid_parameter} ${False} |
| 98 | |
| 99 | ${status_detail}= Redfish.Get |
| 100 | ... ${resource} valid_status_codes=[${HTTP_OK}] |
| 101 | |
| 102 | ${health}= Set Variable ${status_detail.dict["Status"]["Health"]} |
| 103 | ${state}= Set Variable ${status_detail.dict["Status"]["State"]} |
| 104 | |
| 105 | Return From Keyword If |
| 106 | ... "${health}" == "OK" and "${state}" == "Enabled" ${True} |
| 107 | |
| 108 | [Return] ${False} |
| 109 | |
| 110 | |
| 111 | Suite Teardown Execution |
| 112 | [Documentation] Do the post suite teardown. |
| 113 | |
| 114 | Redfish.Logout |
| 115 | |
| 116 | |
| 117 | Suite Setup Execution |
| 118 | [Documentation] Do test case setup tasks. |
| 119 | |
| 120 | Redfish.Login |
| 121 | |
| 122 | |
| 123 | Test Teardown Execution |
| 124 | [Documentation] Do the post test teardown. |
| 125 | |
| 126 | FFDC On Test Case Fail |