xref: /openbmc/openbmc-test-automation/pldm/test_pldm_bios_attributes.robot (revision 82bb037a30b4e8e0c6105f96660b29de9877a364)
12ab3d388SSridevi Ramesh*** Settings ***
22ab3d388SSridevi Ramesh
32ab3d388SSridevi RameshDocumentation    Module to test PLDM BIOS attribute types.
42ab3d388SSridevi Ramesh
52ab3d388SSridevi RameshLibrary          Collections
62ab3d388SSridevi RameshLibrary          String
72ab3d388SSridevi RameshLibrary          ../lib/pldm_utils.py
82ab3d388SSridevi RameshVariables        ../data/pldm_variables.py
92ab3d388SSridevi RameshResource         ../lib/openbmc_ffdc.robot
102ab3d388SSridevi Ramesh
112ab3d388SSridevi RameshTest Setup       Printn
122ab3d388SSridevi RameshTest Teardown    FFDC On Test Case Fail
132ab3d388SSridevi RameshSuite Setup      PLDM BIOS Attribute Suite Setup
142ab3d388SSridevi RameshSuite Teardown   PLDM BIOS Attribute Suite Cleanup
152ab3d388SSridevi Ramesh
16*6fb70d98SMatt FischerTest Tags       Pldm_Bios_Attributes
172ab3d388SSridevi Ramesh
182ab3d388SSridevi Ramesh*** Variables ***
192ab3d388SSridevi Ramesh
202ab3d388SSridevi Ramesh${bios_original_data}       ${EMPTY}
212ab3d388SSridevi Ramesh${attr_table_data}          ${EMPTY}
222ab3d388SSridevi Ramesh
232ab3d388SSridevi Ramesh
242ab3d388SSridevi Ramesh*** Test Cases ***
252ab3d388SSridevi Ramesh
262ab3d388SSridevi RameshVerify Get BIOS Attribute With Invalid Attribute Name
272ab3d388SSridevi Ramesh    [Documentation]  Verify get BIOS attribute with invalid attribute name.
282ab3d388SSridevi Ramesh    [Tags]  Verify_Get_BIOS_Attribute_With_Invalid_Attribute_Name
292ab3d388SSridevi Ramesh
302ab3d388SSridevi Ramesh    ${random_attr}=  Generate Random String  8  [LETTERS][NUMBERS]
312ab3d388SSridevi Ramesh    ${pldm_output}=  pldmtool  bios GetBIOSAttributeCurrentValueByHandle -a ${random_attr}
322ab3d388SSridevi Ramesh
332ab3d388SSridevi Ramesh    # Example output:
342ab3d388SSridevi Ramesh    #
352ab3d388SSridevi Ramesh    # pldmtool bios GetBIOSAttributeCurrentValueByHandle -a hjkhkj
362ab3d388SSridevi Ramesh    # Can not find the attribute hjkhkj
372ab3d388SSridevi Ramesh    #
382ab3d388SSridevi Ramesh
392ab3d388SSridevi Ramesh    Should Contain  ${pldm_output}  Can not find the attribute
402ab3d388SSridevi Ramesh
412ab3d388SSridevi Ramesh
422ab3d388SSridevi RameshVerify Set BIOS Attribute With Invalid Attribute Name
432ab3d388SSridevi Ramesh    [Documentation]  Verify set BIOS attribute with invalid attribute name.
442ab3d388SSridevi Ramesh    [Tags]  Verify_Set_BIOS_Attribute_With_Invalid_Attribute_Name
452ab3d388SSridevi Ramesh
462ab3d388SSridevi Ramesh    ${random_str}=  Generate Random String  8  [LETTERS][NUMBERS]
472ab3d388SSridevi Ramesh    ${pldm_output}=  pldmtool  bios SetBIOSAttributeCurrentValue -a ${random_str} -d ${random_str}
482ab3d388SSridevi Ramesh
492ab3d388SSridevi Ramesh    # Example output:
502ab3d388SSridevi Ramesh    #
512ab3d388SSridevi Ramesh    # pldmtool bios SetBIOSAttributeCurrentValue -a hjkhkj -d 0
522ab3d388SSridevi Ramesh    # Could not find attribute :hjkhkj
532ab3d388SSridevi Ramesh    #
542ab3d388SSridevi Ramesh
552ab3d388SSridevi Ramesh    Should Contain  ${pldm_output}  Could not find attribute
562ab3d388SSridevi Ramesh
572ab3d388SSridevi Ramesh
582ab3d388SSridevi RameshVerify Set Invalid Optional Value For BIOS Enumeration Attribute Type
592ab3d388SSridevi Ramesh    [Documentation]  Verify set invalid optional value for BIOS enumeration attribute type.
602ab3d388SSridevi Ramesh    [Tags]  Verify_Set_Invalid_Optional_Value_For_BIOS_Enumeration_Attribute_Type
612ab3d388SSridevi Ramesh
622ab3d388SSridevi Ramesh    ${attr_val_data}=  GetBIOSEnumAttributeOptionalValues  ${attr_table_data}
632ab3d388SSridevi Ramesh    @{attr_handles}=  Get Dictionary Keys  ${attr_val_data}
642ab3d388SSridevi Ramesh    ${enum_attr}=  Evaluate  random.choice(${attr_handles})  modules=random
652ab3d388SSridevi Ramesh
662ab3d388SSridevi Ramesh    # Example output:
672ab3d388SSridevi Ramesh    #
682ab3d388SSridevi Ramesh    # pldmtool bios SetBIOSAttributeCurrentValue -a pvm_os_boot_side -d hhhhhj
692ab3d388SSridevi Ramesh    # Set Attribute Error: It's not a possible value
702ab3d388SSridevi Ramesh    #
712ab3d388SSridevi Ramesh
722ab3d388SSridevi Ramesh    ${pldm_output}=  pldmtool  bios SetBIOSAttributeCurrentValue -a ${enum_attr} -d 0
732ab3d388SSridevi Ramesh    Should Contain  ${pldm_output}  Set Attribute Error
742ab3d388SSridevi Ramesh
752ab3d388SSridevi Ramesh
762ab3d388SSridevi RameshVerify Set Out Of Range Integer Value For BIOS Integer Attribute Type
772ab3d388SSridevi Ramesh    [Documentation]  Verify set out of range integer value for BIOS integer attribute type.
782ab3d388SSridevi Ramesh    [Tags]  Verify_Set_Out_Of_Range_Integer_Value_For_BIOS_Integer_Attribute_Type
792ab3d388SSridevi Ramesh
802ab3d388SSridevi Ramesh    ${attr_val_data}=  GetBIOSStrAndIntAttributeHandles  BIOSInteger  ${attr_table_data}
812ab3d388SSridevi Ramesh    @{attr_handles}=  Get Dictionary Keys  ${attr_val_data}
822ab3d388SSridevi Ramesh    ${int_attr}=  Evaluate  random.choice(${attr_handles})  modules=random
832ab3d388SSridevi Ramesh    ${count}=  Evaluate  ${attr_val_data['${int_attr}']["UpperBound"]} + 5
842ab3d388SSridevi Ramesh
852ab3d388SSridevi Ramesh    # Example output:
862ab3d388SSridevi Ramesh    #
872ab3d388SSridevi Ramesh    # pldmtool bios SetBIOSAttributeCurrentValue -a vmi_if_count -d 12
882ab3d388SSridevi Ramesh    # Response Message Error: rc=0,cc=2
892ab3d388SSridevi Ramesh    #
902ab3d388SSridevi Ramesh
912ab3d388SSridevi Ramesh    ${pldm_output}=  pldmtool  bios SetBIOSAttributeCurrentValue -a ${int_attr} -d ${count}
922ab3d388SSridevi Ramesh    Should Contain  ${pldm_output}  Response Message Error
932ab3d388SSridevi Ramesh
942ab3d388SSridevi Ramesh
952ab3d388SSridevi RameshVerify Set Out Of Range String Value For BIOS String Attribute Type
962ab3d388SSridevi Ramesh    [Documentation]  Verify set out of range string value for BIOS string attribute type.
972ab3d388SSridevi Ramesh    [Tags]  Verify_Set_Out_Of_Range_String_Value_For_BIOS_String_Attribute_Type
982ab3d388SSridevi Ramesh
992ab3d388SSridevi Ramesh    ${attr_val_data}=  GetBIOSStrAndIntAttributeHandles  BIOSString  ${attr_table_data}
1002ab3d388SSridevi Ramesh    @{attr_handles}=  Get Dictionary Keys  ${attr_val_data}
1012ab3d388SSridevi Ramesh    ${str_attr}=  Evaluate  random.choice(${attr_handles})  modules=random
1022ab3d388SSridevi Ramesh    ${count}=  Evaluate  ${attr_val_data['${str_attr}']["MaximumStringLength"]} + 5
1032ab3d388SSridevi Ramesh    ${random_value}=  Generate Random String  ${count}  [LETTERS][NUMBERS]
1042ab3d388SSridevi Ramesh
1052ab3d388SSridevi Ramesh    # Example output:
1062ab3d388SSridevi Ramesh    #
1072ab3d388SSridevi Ramesh    # pldmtool bios SetBIOSAttributeCurrentValue -a vmi_if0_ipv4_ipaddr -d 1234566788999
1082ab3d388SSridevi Ramesh    # Response Message Error: rc=0,cc=2
1092ab3d388SSridevi Ramesh    #
1102ab3d388SSridevi Ramesh
1112ab3d388SSridevi Ramesh    ${pldm_output}=  pldmtool  bios SetBIOSAttributeCurrentValue -a ${str_attr} -d ${random_value}
1122ab3d388SSridevi Ramesh    Should Contain  ${pldm_output}  Response Message Error
1132ab3d388SSridevi Ramesh
1142ab3d388SSridevi Ramesh
1152ab3d388SSridevi RameshVerify Set BIOS String Attribute Type
1162ab3d388SSridevi Ramesh    [Documentation]  Verify set BIOS string attribute type for various BIOS
1172ab3d388SSridevi Ramesh    ...              attribute handle with random values with in the range.
1182ab3d388SSridevi Ramesh    [Tags]  Verify_Set_BIOS_String_Attribute_Type
1192ab3d388SSridevi Ramesh
1202ab3d388SSridevi Ramesh    ${attr_val_data}=  GetBIOSStrAndIntAttributeHandles  BIOSString  ${attr_table_data}
1212ab3d388SSridevi Ramesh
1222ab3d388SSridevi Ramesh    # Example output:
1232ab3d388SSridevi Ramesh    #
1242ab3d388SSridevi Ramesh    # pldmtool bios SetBIOSAttributeCurrentValue -a vmi_hostname -d BMC
1252ab3d388SSridevi Ramesh    # {
1262ab3d388SSridevi Ramesh    #     "Response": "SUCCESS"
1272ab3d388SSridevi Ramesh    # }
1282ab3d388SSridevi Ramesh
1292ab3d388SSridevi Ramesh    @{attr_handles}=  Get Dictionary Keys  ${attr_val_data}
1302ab3d388SSridevi Ramesh    FOR  ${i}  IN  @{attr_handles}
1312ab3d388SSridevi Ramesh        ${random_value}=  GetRandomBIOSIntAndStrValues  ${i}  ${attr_val_data['${i}']["MaximumStringLength"]}
1322ab3d388SSridevi Ramesh        ${attr_val_list}=  Create List
1332ab3d388SSridevi Ramesh        Append To List  ${attr_val_list}  ${random_value}
1342ab3d388SSridevi Ramesh        Validate Set BIOS Attributes With Optional Values  ${i}  @{attr_val_list}
1352ab3d388SSridevi Ramesh    END
1362ab3d388SSridevi Ramesh
1372ab3d388SSridevi Ramesh
1382ab3d388SSridevi RameshVerify Set BIOS Integer Attribute Type
1392ab3d388SSridevi Ramesh    [Documentation]  Verify set BIOS integer attribute type for various BIOS
1402ab3d388SSridevi Ramesh    ...              attribute handle with random values with in the range.
1412ab3d388SSridevi Ramesh    [Tags]  Verify_Set_BIOS_Integer_Attribute_Type
1422ab3d388SSridevi Ramesh
1432ab3d388SSridevi Ramesh    ${attr_val_data}=  GetBIOSStrAndIntAttributeHandles  BIOSInteger  ${attr_table_data}
1442ab3d388SSridevi Ramesh
1452ab3d388SSridevi Ramesh    # Example output:
1462ab3d388SSridevi Ramesh    #
1472ab3d388SSridevi Ramesh    # pldmtool bios SetBIOSAttributeCurrentValue -a vmi_if_count -d 1
1482ab3d388SSridevi Ramesh    # {
1492ab3d388SSridevi Ramesh    #     "Response": "SUCCESS"
1502ab3d388SSridevi Ramesh    # }
1512ab3d388SSridevi Ramesh
1522ab3d388SSridevi Ramesh    @{attr_handles}=  Get Dictionary Keys  ${attr_val_data}
1532ab3d388SSridevi Ramesh
1542ab3d388SSridevi Ramesh    FOR  ${i}  IN  @{attr_handles}
1552ab3d388SSridevi Ramesh        ${random_value}=  GetRandomBIOSIntAndStrValues  ${i}  ${attr_val_data['${i}']["UpperBound"]}
1562ab3d388SSridevi Ramesh        ${attr_val_list}=  Create List
1572ab3d388SSridevi Ramesh        Append To List  ${attr_val_list}  ${random_value}
1582ab3d388SSridevi Ramesh        Validate Set BIOS Attributes With Optional Values  ${i}  @{attr_val_list}
1592ab3d388SSridevi Ramesh    END
1602ab3d388SSridevi Ramesh
1612ab3d388SSridevi Ramesh
1622ab3d388SSridevi RameshVerify Set BIOS Enumeration Attribute Type
1632ab3d388SSridevi Ramesh    [Documentation]  Verify set BIOS enumeration attribute type for various BIOS
1642ab3d388SSridevi Ramesh    ...              attribute handle with random values with in the range of
1652ab3d388SSridevi Ramesh    ...              default optional values.
166b98036a9SGeorge Keishing    [Tags]  Verify_Set_BIOS_Enumeration_Attribute_Type
1672ab3d388SSridevi Ramesh
1682ab3d388SSridevi Ramesh    ${attr_val_data}=  GetBIOSEnumAttributeOptionalValues  ${attr_table_data}
1692ab3d388SSridevi Ramesh
1702ab3d388SSridevi Ramesh    # Example output:
1712ab3d388SSridevi Ramesh    #
1722ab3d388SSridevi Ramesh    # pldmtool bios SetBIOSAttributeCurrentValue -a pvm_default_os_type -d AIX
1732ab3d388SSridevi Ramesh    # {
1742ab3d388SSridevi Ramesh    #     "Response": "SUCCESS"
1752ab3d388SSridevi Ramesh    # }
1762ab3d388SSridevi Ramesh
1772ab3d388SSridevi Ramesh    @{attr_handles}=  Get Dictionary Keys  ${attr_val_data}
1782ab3d388SSridevi Ramesh    FOR  ${i}  IN  @{attr_handles}
1792ab3d388SSridevi Ramesh        @{attr_val_list}=  Set Variable  ${attr_val_data}[${i}]
1802ab3d388SSridevi Ramesh        Validate Set BIOS Attributes With Optional Values  ${i}  @{attr_val_list}
1812ab3d388SSridevi Ramesh    END
1822ab3d388SSridevi Ramesh
1832ab3d388SSridevi Ramesh*** Keywords ***
1842ab3d388SSridevi Ramesh
1852ab3d388SSridevi RameshPLDM BIOS Attribute Suite Setup
1862ab3d388SSridevi Ramesh    [Documentation]  Perform PLDM BIOS attribute suite setup.
1872ab3d388SSridevi Ramesh
1882ab3d388SSridevi Ramesh    ${pldm_output}=  Pldmtool  bios GetBIOSTable --type AttributeTable
1892ab3d388SSridevi Ramesh    Set Global Variable  ${attr_table_data}  ${pldm_output}
1902ab3d388SSridevi Ramesh
1912ab3d388SSridevi Ramesh    ${data}=  GetBIOSAttrOriginalValues  ${pldm_output}
1922ab3d388SSridevi Ramesh    Set Global Variable  ${bios_original_data}  ${data}
1932ab3d388SSridevi Ramesh
1942ab3d388SSridevi Ramesh
1952ab3d388SSridevi RameshPLDM BIOS Attribute Suite Cleanup
1962ab3d388SSridevi Ramesh    [Documentation]  Perform PLDM BIOS attribute suite cleanup.
1972ab3d388SSridevi Ramesh
198e18030c5SGeorge Keishing    Run Keyword And Ignore Error
199e18030c5SGeorge Keishing    ...  Validate Set All BIOS Attributes Values  ${bios_original_data}
2002ab3d388SSridevi Ramesh
2012ab3d388SSridevi Ramesh
2022ab3d388SSridevi RameshValidate Set BIOS Attributes With Optional Values
2032ab3d388SSridevi Ramesh    [Documentation]  Set BIOS attribute with the available attribute handle
2042ab3d388SSridevi Ramesh    ...              values and revert back to original attribute handle value.
2052ab3d388SSridevi Ramesh    [Arguments]      ${attr_handle}  @{attr_val_list}
2062ab3d388SSridevi Ramesh
2072ab3d388SSridevi Ramesh    # Description of argument(s):
2082ab3d388SSridevi Ramesh    # attr_handle    BIOS attribute handle (e.g. pvm_system_power_off_policy).
2092ab3d388SSridevi Ramesh    # attr_val_list  List of the attribute values for the given attribute handle
2102ab3d388SSridevi Ramesh    #                (e.g. ['"Power Off"', '"Stay On"', 'Automatic']).
2112ab3d388SSridevi Ramesh
2122ab3d388SSridevi Ramesh    FOR  ${j}  IN  @{attr_val_list}
2132ab3d388SSridevi Ramesh        ${pldm_resp}=  pldmtool  bios SetBIOSAttributeCurrentValue -a ${attr_handle} -d ${j}
2142ab3d388SSridevi Ramesh        Valid Value  pldm_resp['Response']  ['SUCCESS']
2152ab3d388SSridevi Ramesh
2162ab3d388SSridevi Ramesh        # Compare BIOS attribute values after set operation.
2172ab3d388SSridevi Ramesh        ${output}=  pldmtool  bios GetBIOSAttributeCurrentValueByHandle -a ${attr_handle}
2182ab3d388SSridevi Ramesh        ${value1}=  Convert To String  ${output["CurrentValue"]}
2192ab3d388SSridevi Ramesh        ${value2}=  Convert To String  ${j}
2202ab3d388SSridevi Ramesh        ${value2}=  Replace String  ${value2}  "  ${EMPTY}
2212ab3d388SSridevi Ramesh        Should Be Equal  ${value1.strip()}  ${value2.strip()}
2222ab3d388SSridevi Ramesh
2232ab3d388SSridevi Ramesh    END
2242ab3d388SSridevi Ramesh
2252ab3d388SSridevi Ramesh
2262ab3d388SSridevi RameshValidate Set All BIOS Attributes Values
2272ab3d388SSridevi Ramesh    [Documentation]  Validate Set BIOS Attributes Values.
2282ab3d388SSridevi Ramesh    [Arguments]      ${bios_attr_data}
2292ab3d388SSridevi Ramesh
2302ab3d388SSridevi Ramesh    # Description of argument(s):
2312ab3d388SSridevi Ramesh    # bios_attr_data  Dictionary containing BIOS attribute name and values.
2322ab3d388SSridevi Ramesh
2332ab3d388SSridevi Ramesh    @{keys}=  Get Dictionary Keys  ${bios_attr_data}
2342ab3d388SSridevi Ramesh
2352ab3d388SSridevi Ramesh    FOR  ${key}  IN  @{keys}
2362ab3d388SSridevi Ramesh        ${pldm_resp}=  pldmtool  bios SetBIOSAttributeCurrentValue -a ${key} -d ${bios_attr_data['${key}']}
2372ab3d388SSridevi Ramesh        Valid Value  pldm_resp['Response']  ['SUCCESS']
2382ab3d388SSridevi Ramesh
2392ab3d388SSridevi Ramesh        # Compare BIOS attribute values after set operation.
2402ab3d388SSridevi Ramesh        ${output}=  pldmtool  bios GetBIOSAttributeCurrentValueByHandle -a ${key}
2412ab3d388SSridevi Ramesh        ${value1}=  Convert To String  ${output["CurrentValue"]}
2422ab3d388SSridevi Ramesh        ${value2}=  Convert To String  ${bios_attr_data['${key}']}
2432ab3d388SSridevi Ramesh        ${value2}=  Replace String  ${value2}  "  ${EMPTY}
2442ab3d388SSridevi Ramesh        Should Be Equal  ${value1.strip()}  ${value2.strip()}
2452ab3d388SSridevi Ramesh    END
246