1fe52e405SSridevi Ramesh*** Settings *** 2fe52e405SSridevi Ramesh 3fe52e405SSridevi RameshDocumentation Module to test PLDM platform commands. 4fe52e405SSridevi Ramesh 5fe52e405SSridevi RameshLibrary ../lib/pldm_utils.py 6fe52e405SSridevi RameshVariables ../data/pldm_variables.py 7fe52e405SSridevi RameshResource ../lib/openbmc_ffdc.robot 8fc3b07f7SSridevi RameshResource ../lib/bmc_redfish_resource.robot 9fc3b07f7SSridevi RameshResource ../lib/boot_utils.robot 10fe52e405SSridevi Ramesh 11fe52e405SSridevi RameshTest Setup Printn 12fe52e405SSridevi RameshTest Teardown FFDC On Test Case Fail 13fc3b07f7SSridevi RameshSuite Teardown Pldmtool Platform Suite Cleanup 14fe52e405SSridevi Ramesh 15*6fb70d98SMatt FischerTest Tags Pldm_Platform 165431685fSGeorge Keishing 17fe52e405SSridevi Ramesh*** Test Cases *** 18fe52e405SSridevi RameshVerify GetPDR 19fe52e405SSridevi Ramesh [Documentation] Verify GetPDR (Platform Descpritor Record) response message. 20fe52e405SSridevi Ramesh [Tags] Verify_GetPDR 21fe52e405SSridevi Ramesh 22538d18d1SSridevi Ramesh ${record_handle}= Set Variable ${1} 23538d18d1SSridevi Ramesh # Note: Record handle count is unknown and it is dynamic in nature. 24538d18d1SSridevi Ramesh # Assuming there are 100 record handle. 25538d18d1SSridevi Ramesh FOR ${i} IN RANGE 100 26538d18d1SSridevi Ramesh ${next_record_handle}= Run Keyword Verify GetPDR For Record Handle ${record_handle} 27538d18d1SSridevi Ramesh Exit For Loop If ${next_record_handle} == 0 28538d18d1SSridevi Ramesh ${record_handle}= Set Variable ${next_record_handle} 29538d18d1SSridevi Ramesh END 30fe52e405SSridevi Ramesh 31fe52e405SSridevi RameshVerify SetStateEffecterStates 32fe52e405SSridevi Ramesh [Documentation] Verify set state effecter states response message. 33fe52e405SSridevi Ramesh [Tags] Verify_SetStateEffecterStates 34fe52e405SSridevi Ramesh [Template] Verify SetStateEffecterStates For Effecter States 35fe52e405SSridevi Ramesh 36ca3223a6SSridevi Ramesh # EffecterHandle Count EffecterStates (effecterID effecterState) 37ca3223a6SSridevi Ramesh 38ca3223a6SSridevi Ramesh '1' '1' '1 1' # (effecterState -> 1 -> 'Boot Not Active') 39ca3223a6SSridevi Ramesh '1' '1' '1 2' # (effecterState -> 2 -> 'Boot Completed') 40ca3223a6SSridevi Ramesh '2' '1' '1 9' # (effecterState -> 9 -> 'System Power is in soft off mode') 41538d18d1SSridevi Ramesh '3' '1' '1 6' # (effecterState -> 6 -> 'Graceful Restart Requested') 42fe52e405SSridevi Ramesh 43fe52e405SSridevi Ramesh*** Keywords *** 44fe52e405SSridevi Ramesh 45fe52e405SSridevi RameshVerify GetPDR For Record Handle 46538d18d1SSridevi Ramesh [Documentation] Verify GetPDR (Platform Descpritor Record) for given input 47538d18d1SSridevi Ramesh ... record handle and return next record handle. 48fe52e405SSridevi Ramesh [Arguments] ${record_handle} 49fe52e405SSridevi Ramesh 50fe52e405SSridevi Ramesh # Description of argument(s): 51ca3223a6SSridevi Ramesh # ${record_handle} Record handle. 52538d18d1SSridevi Ramesh # e.g. '1' is record handle 'Boot Progress' (196). 53538d18d1SSridevi Ramesh # '2' is record handle 'System Power State (260)'. 54538d18d1SSridevi Ramesh # '3' is record handle 'Software Termination Status (129)'. 55fe52e405SSridevi Ramesh 56fe52e405SSridevi Ramesh # pldm_output: 57fe52e405SSridevi Ramesh # [responseCount]: 29 58fe52e405SSridevi Ramesh # [recordHandle]: 1 59fe52e405SSridevi Ramesh # [PDRHeaderVersion]: 1 60fe52e405SSridevi Ramesh # [PDRType]: 11 61fe52e405SSridevi Ramesh # [recordChangeNumber]: 0 62fe52e405SSridevi Ramesh # [dataLength]: 19 63fe52e405SSridevi Ramesh # [PLDMTerminusHandle]: 0 64fe52e405SSridevi Ramesh # [effecterID]: 1 65fe52e405SSridevi Ramesh # [entityType]: 33 66fe52e405SSridevi Ramesh # [entityInstanceNumber]: 0 67fe52e405SSridevi Ramesh # [containerID]: 0 68fe52e405SSridevi Ramesh # [effecterSemanticID]: 0 69fe52e405SSridevi Ramesh # [effecterInit]: 0 70fe52e405SSridevi Ramesh # [effecterDescriptionPDR]: false 71fe52e405SSridevi Ramesh # [compositeEffecterCount]: 1 72fe52e405SSridevi Ramesh # [stateSetID]: 196 73fe52e405SSridevi Ramesh # [possibleStatesSize]: 1 74fe52e405SSridevi Ramesh # [possibleStates]: 6 75fe52e405SSridevi Ramesh 76fe52e405SSridevi Ramesh ${pldm_cmd}= Evaluate $CMD_GETPDR % ${record_handle} 77fe52e405SSridevi Ramesh ${pldm_output}= Pldmtool ${pldm_cmd} 78fe52e405SSridevi Ramesh Rprint Vars pldm_output 79da95c47aSSridevi Ramesh 80961050baSSridevi Ramesh Run Keyword If '${pldm_output['PDRType']}' == '${PLDM_PDR_TYPES['PLDM_STATE_EFFECTER_PDR']}' 81961050baSSridevi Ramesh ... Valid Dict pldm_output valid_values=${RESPONSE_DICT_GETPDR_SETSTATEEFFECTER} 82da95c47aSSridevi Ramesh 83961050baSSridevi Ramesh ... ELSE IF '${pldm_output['PDRType']}' == '${PLDM_PDR_TYPES['PLDM_PDR_FRU_RECORD_SET']}' 84538d18d1SSridevi Ramesh ... Valid Dict pldm_output valid_values=${RESPONSE_DICT_GETPDR_FRURECORDSETIDENTIFIER} 85dfc7fcb7SSridevi Ramesh 86961050baSSridevi Ramesh ... ELSE IF '${pldm_output['PDRType']}' == '${PLDM_PDR_TYPES['PLDM_PDR_ENTITY_ASSOCIATION']}' 87961050baSSridevi Ramesh ... Log To Console "Found PDR Type - PLDM_ENTITY_ASSOCIATION_PDR" 88dfc7fcb7SSridevi Ramesh 89961050baSSridevi Ramesh ... ELSE IF '${pldm_output['PDRType']}' == '${PLDM_PDR_TYPES['PLDM_STATE_SENSOR_PDR']}' 90dfc7fcb7SSridevi Ramesh ... Valid Dict pldm_output valid_values=${RESPONSE_DICT_GETPDR_STATESENSORPDR} 91dfc7fcb7SSridevi Ramesh 92961050baSSridevi Ramesh ... ELSE IF '${pldm_output['PDRType']}' == '${PLDM_PDR_TYPES['PLDM_NUMERIC_EFFECTER_PDR']}' 93961050baSSridevi Ramesh ... Valid Dict pldm_output valid_values=${RESPONSE_DICT_GETPDR_NUMERICEFFECTERPDR} 94dfc7fcb7SSridevi Ramesh 95961050baSSridevi Ramesh ... ELSE IF '${pldm_output['PDRType']}' == '${PLDM_PDR_TYPES['PLDM_TERMINUS_LOCATOR_PDR']}' 96961050baSSridevi Ramesh ... Valid Dict pldm_output valid_values=${RESPONSE_DICT_GETPDR_TERMINUSLOCATORPDR} 97961050baSSridevi Ramesh 98961050baSSridevi Ramesh ... ELSE IF '${pldm_output['PDRType']}' == '${PLDM_PDR_TYPES['PLDM_COMPACT_NUMERIC_SENSOR_PDR']}' 99961050baSSridevi Ramesh ... Log To Console "Found PDR Type - PLDM_COMPACT_NUMERIC_SENSOR_PDR' 100dfc7fcb7SSridevi Ramesh 101072d5af8SSridevi Ramesh ... ELSE Fail msg="Unknown PDR Type is received" 102fe52e405SSridevi Ramesh 103961050baSSridevi Ramesh Should be equal as strings ${pldm_output['recordHandle']} ${record_handle} 104409df05dSGeorge Keishing RETURN ${pldm_output['nextRecordHandle']} 105fe52e405SSridevi Ramesh 106fe52e405SSridevi RameshVerify SetStateEffecterStates For Effecter States 107fe52e405SSridevi Ramesh [Documentation] Verify set state effecter states for given input effecter states. 108ca3223a6SSridevi Ramesh [Arguments] ${effecter_handle} ${count} ${effecter_states} 109fe52e405SSridevi Ramesh 110fe52e405SSridevi Ramesh # Description of argument(s): 111ca3223a6SSridevi Ramesh # ${effecter_handle} A handle that is used to identify and access the effecter (e.g. '1'). 112ca3223a6SSridevi Ramesh # e.g. '1' is effecter handle 'Boot Progress'. 113ca3223a6SSridevi Ramesh # '2' is effecter handle 'System Power State'. 114ca3223a6SSridevi Ramesh # ${count} The number of individual sets of effecter information (e.g. '1'). 115ca3223a6SSridevi Ramesh # ${effecter_states} (effecterID effecterState). 116ca3223a6SSridevi Ramesh # e.g. '1 1'. 117fe52e405SSridevi Ramesh 118fe52e405SSridevi Ramesh # Example output: 119961050baSSridevi Ramesh # { 120961050baSSridevi Ramesh # "Response": "SUCCESS" 121961050baSSridevi Ramesh # } 122fe52e405SSridevi Ramesh 123ca3223a6SSridevi Ramesh ${pldm_cmd}= Evaluate $CMD_SETSTATEEFFECTERSTATES % (${effecter_handle}, ${count}, ${effecter_states}) 124fe52e405SSridevi Ramesh ${pldm_output}= Pldmtool ${pldm_cmd} 125fe52e405SSridevi Ramesh Rprint Vars pldm_output 126961050baSSridevi Ramesh Valid Value pldm_output['Response'] ['SUCCESS'] 127fc3b07f7SSridevi Ramesh 128fc3b07f7SSridevi RameshPldmtool Platform Suite Cleanup 129fc3b07f7SSridevi Ramesh [Documentation] Reset BMC at suite cleanup. 130fc3b07f7SSridevi Ramesh 13164fdf629SGeorge Keishing Redfish.Login 13292913a72SGeorge Keishing Redfish OBMC Reboot (off) 133