xref: /openbmc/openbmc-test-automation/pldm/test_pldm_platform.robot (revision 6fb70d98f2f1cb9273ba912deaa2cebe3c23ea86)
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