*** Settings *** Documentation Module to test PLDM BIOS commands. Library Collections Library String Library ../lib/pldm_utils.py Variables ../data/pldm_variables.py Resource ../lib/openbmc_ffdc.robot Test Setup Printn Test Teardown FFDC On Test Case Fail Suite Setup PLDM BIOS Suite Setup Suite Teardown Run Keyword And Ignore Error PLDM BIOS Suite Cleanup *** Test Cases *** Verify GetDateTime [Documentation] Verify host date & time. [Tags] Verify_GetDateTime # Example output: # { # "Response": "2020-11-07 07:10:10" # } ${pldm_output}= Pldmtool bios GetDateTime @{date_time}= Split String ${pldm_output['Response']} ${SPACE} @{time}= Split String ${date_time}[1] : ${bmc_date}= Get Current Date from BMC # Date format example: 2022-10-12 16:31:17 Log To Console BMC Date: ${bmc_date} # Example : ['2022-10-12', '16:31:17'] @{current_time}= Split String ${bmc_date} ${EMPTY} # verify date matching pldmtool vs BMC current time. Should Contain ${current_time} ${date_time[0]} Verify SetDateTime [Documentation] Verify set date & time for the host. [Tags] Verify_SetDateTime # Example output: # { # "Response": "SUCCESS" # } ${current_date_time}= Get Current Date UTC exclude_millis=True # Example output: # 2020-11-25 07:34:30 ${date}= Add Time To Date ${current_date_time} 400 days exclude_millis=True ${upgrade_date}= Evaluate re.sub(r'-* *:*', "", '${date}') modules=re ${time}= Add Time To Date ${current_date_time} 01:01:00 exclude_millis=True ${upgrade_time}= Evaluate re.sub(r'-* *:*', "", '${time}') modules=re # Set date. ${cmd_set_date}= Evaluate $CMD_SETDATETIME % '${upgrade_date}' ${pldm_output}= Pldmtool ${cmd_set_date} Valid Value pldm_output['Response'] ['SUCCESS'] # Set time. ${cmd_set_time}= Evaluate $CMD_SETDATETIME % '${upgrade_time}' ${pldm_output}= Pldmtool ${cmd_set_time} Verify GetBIOSTable For AttributeValueTable [Documentation] Verify if attribute value table content exist for ... GetBIOSTable with table type attribute value table. [Tags] Verify_GetBIOSTable_For_AttributeValueTable # Example pldm_output: # [pldm_attributevaluetable]: True # [attributehandle]: 0 # [ attributetype]: BIOSStringReadOnly # [ currentstringlength]: 15 ${count}= Get Length ${attr_table_data} ${attr_val_list}= Create List FOR ${i} IN RANGE ${count} Append To List ${attr_val_list} ${attr_table_data}[${i}][AttributeType] END Valid List attr_val_list required_values=${RESPONSE_LIST_GETBIOSTABLE_ATTRVALTABLE} Verify GetBIOSAttributeCurrentValueByHandle [Documentation] Verify GetBIOSAttributeCurrentValueByHandle with the ... various BIOS attribute handle and its values. [Tags] Verify_GetBIOSAttributeCurrentValueByHandle # Example output: # # pldmtool bios GetBIOSAttributeCurrentValueByHandle -a pvm_fw_boot_side # { # "CurrentValue": "Temp" # } ${attr_val_data}= GetBIOSEnumAttributeOptionalValues ${attr_table_data} @{attr_handles}= Get Dictionary Keys ${attr_val_data} FOR ${i} IN @{attr_handles} ${cur_attr}= Pldmtool bios GetBIOSAttributeCurrentValueByHandle -a ${i} @{attr_val_list}= Set Variable ${attr_val_data}[${i}] Run Keyword If '${cur_attr['CurrentValue']}' not in @{attr_val_list} ... Fail Invalid GetBIOSAttributeCurrentValueByHandle value found. END *** Keywords *** PLDM BIOS Suite Setup [Documentation] Perform PLDM BIOS suite setup. ${pldm_output}= Pldmtool bios GetBIOSTable --type AttributeTable Set Global Variable ${attr_table_data} ${pldm_output} Set Time To Manual Mode Sleep 10s PLDM BIOS Suite Cleanup [Documentation] Perform PLDM BIOS suite cleanup. ${result}= Get Current Date UTC exclude_millis=True ${current_date_time}= Evaluate re.sub(r'-* *:*', "", '${result}') modules=re ${cmd_set_date_time}= Evaluate $CMD_SETDATETIME % '${current_date_time}' ${pldm_output}= Pldmtool ${cmd_set_date_time} Valid Value pldm_output['Response'] ['SUCCESS'] Set Time To Manual Mode [Documentation] Set date time to manual mode via Redfish. Redfish.Login Redfish.Patch ${REDFISH_NW_PROTOCOL_URI} body={'NTP':{'ProtocolEnabled': ${False}}} ... valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}] Get Current Date from BMC [Documentation] Runs the date command from BMC and returns current date and time. # Get Current Date from BMC. ${date} ${stderr} ${rc}= BMC Execute Command date # Split the string and remove first and 2nd last value from the list and # join to form %d %b %H:%M:%S %Y date format ${date}= Split String ${date} Remove From List ${date} 0 Remove From List ${date} -2 ${date}= Evaluate " ".join(${date}) # Convert the date format to %Y/%m/%d %H:%M:%S ${date}= Convert Date ${date} date_format=%b %d %H:%M:%S %Y ... result_format=%Y-%m-%d %H:%M:%S exclude_millis=True [Return] ${date}