1*** Settings *** 2 3Documentation Module to test PLDM BIOS commands. 4 5Library Collections 6Library String 7Library ../lib/pldm_utils.py 8Variables ../data/pldm_variables.py 9Resource ../lib/openbmc_ffdc.robot 10 11Test Setup Printn 12Test Teardown FFDC On Test Case Fail 13Suite Setup PLDM BIOS Suite Setup 14Suite Teardown PLDM BIOS Suite Cleanup 15 16*** Test Cases *** 17 18Verify GetDateTime 19 20 [Documentation] Verify host date & time. 21 [Tags] Verify_GetDateTime 22 23 # Example output: 24 # { 25 # "Response": "2020-11-07 07:10:10" 26 # } 27 28 ${pldm_output}= Pldmtool bios GetDateTime 29 @{date_time}= Split String ${pldm_output['Response']} ${SPACE} 30 @{time}= Split String ${date_time}[1] : 31 32 # verify date & time. 33 ${utc}= Get Current Date UTC exclude_millis=True 34 @{current_dmy}= Split String ${utc} ${SPACE} 35 @{current_time}= Split String ${current_dmy[1]} : 36 37 # Example output: 38 # 2020-11-25 07:34:30 39 40 Should Contain ${current_dmy[0]} ${date_time[0]} 41 42 43Verify SetDateTime 44 45 [Documentation] Verify set date & time for the host. 46 [Tags] Verify_SetDateTime 47 48 # Example output: 49 # { 50 # "Response": "SUCCESS" 51 # } 52 53 ${current_date_time}= Get Current Date UTC exclude_millis=True 54 # Example output: 55 # 2020-11-25 07:34:30 56 57 ${date}= Add Time To Date ${current_date_time} 400 days exclude_millis=True 58 ${upgrade_date}= Evaluate re.sub(r'-* *:*', "", '${date}') modules=re 59 60 ${time}= Add Time To Date ${current_date_time} 01:01:00 exclude_millis=True 61 ${upgrade_time}= Evaluate re.sub(r'-* *:*', "", '${time}') modules=re 62 63 # Set date. 64 ${cmd_set_date}= Evaluate $CMD_SETDATETIME % '${upgrade_date}' 65 ${pldm_output}= Pldmtool ${cmd_set_date} 66 Valid Value pldm_output['Response'] ['SUCCESS'] 67 68 # Set time. 69 ${cmd_set_time}= Evaluate $CMD_SETDATETIME % '${upgrade_time}' 70 ${pldm_output}= Pldmtool ${cmd_set_time} 71 72 73Verify GetBIOSTable For StringTable 74 75 [Documentation] Verify GetBIOSTable for table type string table. 76 [Tags] Verify_GetBIOSTable_For_StringTable 77 78 # Example pldm_output: 79 # [biosstringhandle]: BIOSString 80 # [0]: Allowed 81 # [1]: Disabled 82 # [2]: Enabled 83 # [3]: Not Allowed 84 # [4]: Perm 85 # [5]: Temp 86 # [6]: pvm_fw_boot_side 87 # [7]: pvm_inband_code_update 88 # [8]: pvm_os_boot_side 89 # [9]: pvm_pcie_error_inject 90 # [10]: pvm_surveillance 91 # [11]: pvm_system_name 92 # [12]: vmi_if_count 93 94 ${pldm_output}= Pldmtool bios GetBIOSTable --type StringTable 95 @{keys}= Get Dictionary Keys ${pldm_output} 96 ${string_list}= Create List 97 FOR ${key} IN @{keys} 98 Append To List ${string_list} ${pldm_output['${key}']} 99 END 100 Valid List string_list required_values=${RESPONSE_LIST_GETBIOSTABLE_ATTRTABLE} 101 102 103Verify GetBIOSTable For AttributeTable 104 105 [Documentation] Verify if attribute table content exist for 106 ... GetBIOSTable with table type attribute table. 107 [Tags] Verify_GetBIOSTable_For_AttributeTable 108 109 # Example pldm_output: 110 # [pldm_attributetable]: True 111 # [attributehandle]: 0 112 # [ AttributeNameHandle]: 20(vmi-if1-ipv4-method) 113 # [ attributetype]: BIOSStringReadOnly 114 # [ StringType]: 0x01 115 # [ minimumstringlength]: 1 116 # [ maximumstringlength]: 100 117 # [ defaultstringlength]: 15 118 119 ${count}= Get Length ${attr_table_data} 120 ${attr_list}= Create List 121 FOR ${i} IN RANGE ${count} 122 ${data}= Set Variable ${attr_table_data}[${i}][AttributeNameHandle] 123 ${sub_string}= Get Substring ${data} 3 -1 124 Append To List ${attr_list} ${sub_string} 125 END 126 Valid List attr_list required_values=${RESPONSE_LIST_GETBIOSTABLE_ATTRTABLE} 127 128 129Verify GetBIOSTable For AttributeValueTable 130 131 [Documentation] Verify if attribute value table content exist for 132 ... GetBIOSTable with table type attribute value table. 133 [Tags] Verify_GetBIOSTable_For_AttributeValueTable 134 135 # Example pldm_output: 136 # [pldm_attributevaluetable]: True 137 # [attributehandle]: 0 138 # [ attributetype]: BIOSStringReadOnly 139 # [ currentstringlength]: 15 140 141 ${count}= Get Length ${attr_table_data} 142 ${attr_val_list}= Create List 143 FOR ${i} IN RANGE ${count} 144 Append To List ${attr_val_list} ${attr_table_data}[${i}][AttributeType] 145 END 146 Valid List attr_val_list required_values=${RESPONSE_LIST_GETBIOSTABLE_ATTRVALTABLE} 147 148 149Verify GetBIOSAttributeCurrentValueByHandle 150 151 [Documentation] Verify GetBIOSAttributeCurrentValueByHandle with the 152 ... various BIOS attribute handle and its values. 153 [Tags] Verify_GetBIOSAttributeCurrentValueByHandle 154 155 # Example output: 156 # 157 # pldmtool bios GetBIOSAttributeCurrentValueByHandle -a pvm_fw_boot_side 158 # { 159 # "CurrentValue": "Temp" 160 # } 161 162 ${attr_val_data}= GetBIOSEnumAttributeOptionalValues ${attr_table_data} 163 @{attr_handles}= Get Dictionary Keys ${attr_val_data} 164 FOR ${i} IN @{attr_handles} 165 ${cur_attr}= Pldmtool bios GetBIOSAttributeCurrentValueByHandle -a ${i} 166 @{attr_val_list}= Set Variable ${attr_val_data}[${i}] 167 Run Keyword If '${cur_attr['CurrentValue']}' not in @{attr_val_list} 168 ... Fail Invalid GetBIOSAttributeCurrentValueByHandle value found. 169 END 170 171 172*** Keywords *** 173 174PLDM BIOS Suite Setup 175 176 [Documentation] Perform PLDM BIOS suite setup. 177 178 ${pldm_output}= Pldmtool bios GetBIOSTable --type AttributeTable 179 Set Global Variable ${attr_table_data} ${pldm_output} 180 181 182PLDM BIOS Suite Cleanup 183 184 [Documentation] Perform PLDM BIOS suite cleanup. 185 186 ${result}= Get Current Date UTC exclude_millis=True 187 ${current_date_time}= Evaluate re.sub(r'-* *:*', "", '${result}') modules=re 188 ${cmd_set_date_time}= Evaluate $CMD_SETDATETIME % '${current_date_time}' 189 ${pldm_output}= Pldmtool ${cmd_set_date_time} 190 Valid Value pldm_output['Response'] ['SUCCESS'] 191