1*** Settings *** 2 3Documentation Module to test PLDM platform commands. 4 5Library ../lib/pldm_utils.py 6Variables ../data/pldm_variables.py 7Resource ../lib/openbmc_ffdc.robot 8Resource ../lib/bmc_redfish_resource.robot 9Resource ../lib/boot_utils.robot 10 11Suite Setup Redfish.Login 12Test Setup Printn 13Test Teardown FFDC On Test Case Fail 14Suite Teardown Pldmtool Platform Suite Cleanup 15 16Test Tags Pldm_Platform 17 18*** Test Cases *** 19 20Verify GetPDR 21 [Documentation] Verify GetPDR (Platform Descpritor Record) response message. 22 [Tags] Verify_GetPDR 23 24 ${record_handle}= Set Variable ${1} 25 # Note: Record handle count is unknown and it is dynamic in nature. 26 # Assuming there are 100 record handle. 27 FOR ${i} IN RANGE 100 28 ${next_record_handle}= Run Keyword Verify GetPDR For Record Handle ${record_handle} 29 IF ${next_record_handle} == 0 BREAK 30 ${record_handle}= Set Variable ${next_record_handle} 31 END 32 33 34Verify GetStateSensorReadings 35 [Documentation] Verify get state sensor readings response message. 36 [Tags] Verify_GetStateSensorReadings 37 38 # Poweron the system. 39 Redfish Power On stack_mode=skip quiet=1 40 41 ${pldm_output}= Pldmtool platform GetStateSensorReadings -i 1 -r 0 42 Rprint Vars pldm_output 43 Should Be Equal As Integers ${pldm_output["compositeSensorCount"]} ${1} 44 Should Be Equal As Strings ${pldm_output["sensorOpState[0]"]} Sensor Enabled 45 Should Be Equal As Strings ${pldm_output["eventState[0]"]} Sensor Normal 46 47 48Verify SetStateEffecterStates 49 [Documentation] Verify set state effecter states response message. 50 [Tags] Verify_SetStateEffecterStates 51 [Template] Verify SetStateEffecterStates For Effecter States 52 53 # EffecterHandle Count EffecterStates (effecterID effecterState) 54 55 '1' '1' '1 1' # (effecterState -> 1 -> 'Boot Not Active') 56 '1' '1' '1 2' # (effecterState -> 2 -> 'Boot Completed') 57 '2' '1' '1 9' # (effecterState -> 9 -> 'System Power is in soft off mode') 58 '3' '1' '1 6' # (effecterState -> 6 -> 'Graceful Restart Requested') 59 60*** Keywords *** 61 62Verify GetPDR For Record Handle 63 [Documentation] Verify GetPDR (Platform Descpritor Record) for given input 64 ... record handle and return next record handle. 65 [Arguments] ${record_handle} 66 67 # Description of argument(s): 68 # ${record_handle} Record handle. 69 # e.g. '1' is record handle 'Boot Progress' (196). 70 # '2' is record handle 'System Power State (260)'. 71 # '3' is record handle 'Software Termination Status (129)'. 72 73 # pldm_output: 74 # [responseCount]: 29 75 # [recordHandle]: 1 76 # [PDRHeaderVersion]: 1 77 # [PDRType]: 11 78 # [recordChangeNumber]: 0 79 # [dataLength]: 19 80 # [PLDMTerminusHandle]: 0 81 # [effecterID]: 1 82 # [entityType]: 33 83 # [entityInstanceNumber]: 0 84 # [containerID]: 0 85 # [effecterSemanticID]: 0 86 # [effecterInit]: 0 87 # [effecterDescriptionPDR]: false 88 # [compositeEffecterCount]: 1 89 # [stateSetID]: 196 90 # [possibleStatesSize]: 1 91 # [possibleStates]: 6 92 93 ${pldm_cmd}= Evaluate $CMD_GETPDR % ${record_handle} 94 ${pldm_output}= Pldmtool ${pldm_cmd} 95 Rprint Vars pldm_output 96 97 IF '${pldm_output['PDRType']}' == '${PLDM_PDR_TYPES['PLDM_STATE_EFFECTER_PDR']}' 98 Valid Dict pldm_output valid_values=${RESPONSE_DICT_GETPDR_SETSTATEEFFECTER} 99 ELSE IF '${pldm_output['PDRType']}' == '${PLDM_PDR_TYPES['PLDM_PDR_FRU_RECORD_SET']}' 100 Valid Dict pldm_output valid_values=${RESPONSE_DICT_GETPDR_FRURECORDSETIDENTIFIER} 101 ELSE IF '${pldm_output['PDRType']}' == '${PLDM_PDR_TYPES['PLDM_PDR_ENTITY_ASSOCIATION']}' 102 Log To Console "Found PDR Type - PLDM_ENTITY_ASSOCIATION_PDR" 103 ELSE IF '${pldm_output['PDRType']}' == '${PLDM_PDR_TYPES['PLDM_STATE_SENSOR_PDR']}' 104 Valid Dict pldm_output valid_values=${RESPONSE_DICT_GETPDR_STATESENSORPDR} 105 ELSE IF '${pldm_output['PDRType']}' == '${PLDM_PDR_TYPES['PLDM_NUMERIC_EFFECTER_PDR']}' 106 Valid Dict pldm_output valid_values=${RESPONSE_DICT_GETPDR_NUMERICEFFECTERPDR} 107 ELSE IF '${pldm_output['PDRType']}' == '${PLDM_PDR_TYPES['PLDM_TERMINUS_LOCATOR_PDR']}' 108 Valid Dict pldm_output valid_values=${RESPONSE_DICT_GETPDR_TERMINUSLOCATORPDR} 109 ELSE IF '${pldm_output['PDRType']}' == '${PLDM_PDR_TYPES['PLDM_COMPACT_NUMERIC_SENSOR_PDR']}' 110 Log To Console "Found PDR Type - PLDM_COMPACT_NUMERIC_SENSOR_PDR' 111 ELSE 112 Fail msg="Unknown PDR Type is received" 113 END 114 115 Should Be Equal As Strings ${pldm_output['recordHandle']} ${record_handle} 116 RETURN ${pldm_output['nextRecordHandle']} 117 118Verify SetStateEffecterStates For Effecter States 119 [Documentation] Verify set state effecter states for given input effecter states. 120 [Arguments] ${effecter_handle} ${count} ${effecter_states} 121 122 # Description of argument(s): 123 # ${effecter_handle} A handle that is used to identify and access the effecter (e.g. '1'). 124 # e.g. '1' is effecter handle 'Boot Progress'. 125 # '2' is effecter handle 'System Power State'. 126 # ${count} The number of individual sets of effecter information (e.g. '1'). 127 # ${effecter_states} (effecterID effecterState). 128 # e.g. '1 1'. 129 130 # Example output: 131 # { 132 # "Response": "SUCCESS" 133 # } 134 135 ${pldm_cmd}= Evaluate $CMD_SETSTATEEFFECTERSTATES % (${effecter_handle}, ${count}, ${effecter_states}) 136 ${pldm_output}= Pldmtool ${pldm_cmd} 137 Rprint Vars pldm_output 138 Valid Value pldm_output['Response'] ['SUCCESS'] 139 140Pldmtool Platform Suite Cleanup 141 [Documentation] Reset BMC at suite cleanup. 142 143 Redfish OBMC Reboot (off) 144