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 Run Keyword And Ignore Error PLDM BIOS Suite Cleanup 15 16*** Test Cases *** 17 18Verify GetDateTime 19 [Documentation] Verify host date & time. 20 [Tags] Verify_GetDateTime 21 22 # Example output: 23 # { 24 # "Response": "2020-11-07 07:10:10" 25 # } 26 27 ${pldm_output}= Pldmtool bios GetDateTime 28 @{date_time}= Split String ${pldm_output['Response']} ${SPACE} 29 @{time}= Split String ${date_time}[1] : 30 31 ${bmc_date}= Get Current Date from BMC 32 # Date format example: 2022-10-12 16:31:17 33 Log To Console BMC Date: ${bmc_date} 34 # Example : ['2022-10-12', '16:31:17'] 35 @{current_time}= Split String ${bmc_date} ${EMPTY} 36 37 # verify date matching pldmtool vs BMC current time. 38 Should Contain ${current_time} ${date_time[0]} 39 40 41Verify SetDateTime 42 [Documentation] Verify set date & time for the host. 43 [Tags] Verify_SetDateTime 44 45 # Example output: 46 # { 47 # "Response": "SUCCESS" 48 # } 49 50 ${current_date_time}= Get Current Date UTC exclude_millis=True 51 # Example output: 52 # 2020-11-25 07:34:30 53 54 ${date}= Add Time To Date ${current_date_time} 400 days exclude_millis=True 55 ${upgrade_date}= Evaluate re.sub(r'-* *:*', "", '${date}') modules=re 56 57 ${time}= Add Time To Date ${current_date_time} 01:01:00 exclude_millis=True 58 ${upgrade_time}= Evaluate re.sub(r'-* *:*', "", '${time}') modules=re 59 60 # Set date. 61 ${cmd_set_date}= Evaluate $CMD_SETDATETIME % '${upgrade_date}' 62 ${pldm_output}= Pldmtool ${cmd_set_date} 63 Valid Value pldm_output['Response'] ['SUCCESS'] 64 65 # Set time. 66 ${cmd_set_time}= Evaluate $CMD_SETDATETIME % '${upgrade_time}' 67 ${pldm_output}= Pldmtool ${cmd_set_time} 68 69 70Verify GetBIOSTable For AttributeValueTable 71 [Documentation] Verify if attribute value table content exist for 72 ... GetBIOSTable with table type attribute value table. 73 [Tags] Verify_GetBIOSTable_For_AttributeValueTable 74 75 # Example pldm_output: 76 # [pldm_attributevaluetable]: True 77 # [attributehandle]: 0 78 # [ attributetype]: BIOSStringReadOnly 79 # [ currentstringlength]: 15 80 81 ${count}= Get Length ${attr_table_data} 82 ${attr_val_list}= Create List 83 FOR ${i} IN RANGE ${count} 84 Append To List ${attr_val_list} ${attr_table_data}[${i}][AttributeType] 85 END 86 Valid List attr_val_list required_values=${RESPONSE_LIST_GETBIOSTABLE_ATTRVALTABLE} 87 88 89Verify GetBIOSAttributeCurrentValueByHandle 90 [Documentation] Verify GetBIOSAttributeCurrentValueByHandle with the 91 ... various BIOS attribute handle and its values. 92 [Tags] Verify_GetBIOSAttributeCurrentValueByHandle 93 94 # Example output: 95 # 96 # pldmtool bios GetBIOSAttributeCurrentValueByHandle -a pvm_fw_boot_side 97 # { 98 # "CurrentValue": "Temp" 99 # } 100 101 ${attr_val_data}= GetBIOSEnumAttributeOptionalValues ${attr_table_data} 102 @{attr_handles}= Get Dictionary Keys ${attr_val_data} 103 FOR ${i} IN @{attr_handles} 104 ${cur_attr}= Pldmtool bios GetBIOSAttributeCurrentValueByHandle -a ${i} 105 @{attr_val_list}= Set Variable ${attr_val_data}[${i}] 106 Run Keyword If '${cur_attr['CurrentValue']}' not in @{attr_val_list} 107 ... Fail Invalid GetBIOSAttributeCurrentValueByHandle value found. 108 END 109 110 111*** Keywords *** 112 113PLDM BIOS Suite Setup 114 [Documentation] Perform PLDM BIOS suite setup. 115 116 ${pldm_output}= Pldmtool bios GetBIOSTable --type AttributeTable 117 Set Global Variable ${attr_table_data} ${pldm_output} 118 119 Set Time To Manual Mode 120 121 Sleep 10s 122 123 124PLDM BIOS Suite Cleanup 125 [Documentation] Perform PLDM BIOS suite cleanup. 126 127 ${result}= Get Current Date UTC exclude_millis=True 128 ${current_date_time}= Evaluate re.sub(r'-* *:*', "", '${result}') modules=re 129 ${cmd_set_date_time}= Evaluate $CMD_SETDATETIME % '${current_date_time}' 130 ${pldm_output}= Pldmtool ${cmd_set_date_time} 131 Valid Value pldm_output['Response'] ['SUCCESS'] 132 133 134Set Time To Manual Mode 135 [Documentation] Set date time to manual mode via Redfish. 136 137 Redfish.Login 138 Redfish.Patch ${REDFISH_NW_PROTOCOL_URI} body={'NTP':{'ProtocolEnabled': ${False}}} 139 ... valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}] 140 141 142Get Current Date from BMC 143 [Documentation] Runs the date command from BMC and returns current date and time. 144 145 # Get Current Date from BMC. 146 ${date} ${stderr} ${rc}= BMC Execute Command date 147 148 # Split the string and remove first and 2nd last value from the list and 149 # join to form %d %b %H:%M:%S %Y date format 150 ${date}= Split String ${date} 151 Remove From List ${date} 0 152 Remove From List ${date} -2 153 ${date}= Evaluate " ".join(${date}) 154 155 # Convert the date format to %Y/%m/%d %H:%M:%S 156 ${date}= Convert Date ${date} date_format=%b %d %H:%M:%S %Y 157 ... result_format=%Y-%m-%d %H:%M:%S exclude_millis=True 158 159 [Return] ${date} 160