*** Settings *** Documentation Module to test dcmi management controller functionality. Resource ../../lib/ipmi_client.robot Resource ../../lib/openbmc_ffdc.robot Resource ../../lib/bmc_network_utils.robot Resource ../../lib/boot_utils.robot Resource ../../lib/bmc_redfish_utils.robot Variables ../../data/ipmi_raw_cmd_table.py Variables ../../data/dcmi_raw_cmd_table.py Variables ../../data/ipmi_variable.py Library ../../lib/ipmi_utils.py Library ../../lib/utilities.py Library ../../lib/utils.py Library JSONLibrary Test Tags DCMI_Management_Controller *** Variables *** ${hostname_file_path} /etc/hostname *** Test Cases *** Validate IPMI Response Length [Documentation] Check ipmi response length. [Tags] Validate_IPMI_Response_Length ${rsp}= Get DCMI Management Controller Identifier String @{ipmi_cmd_rsp_list}= Split String ${rsp} # ipmi_cmd_rsp_list = ["00", "0a", "00", "01", "02", "03", # "04", "05", "06", "07", "08", "09"] # rsp_length = 10 # string_length = 0a ${rsp_length}= Get Length ${ipmi_cmd_rsp_list[2:]} ${string_length}= Get Response Length In Hex ${rsp_length} # ipmi_cmd_rsp_list[1] = 0a # string_length = 0a # the above condition is equal. # suppose if string_length and ipmi_cmd_rsp_list[1] not matches # then it will fails. Should Be Equal As Strings ${ipmi_cmd_rsp_list[1]} ${string_length} ... msg=Id string length in ipmi response is showing wrongly Test Hostname Is Same With Management Controller Identifier String [Documentation] Check hostname was verified with get management ... controller identifier string. [Tags] Test_Hostname_Is_Same_With_Management_Controller_Identifier_String ${rsp}= Get DCMI Management Controller Identifier String @{ipmi_cmd_rsp_list}= Split String ${rsp} ${bmc_console_hostname_bytes_list}= Get Hostname From BMC Console Lists Should Be Equal ${ipmi_cmd_rsp_list[2:]} ${bmc_console_hostname_bytes_list} ... msg=response get from dcmi get mcid cmd and hostname from "cat /etc/os-release" cmd is not same. Test Get Management Controller Identifier String [Documentation] Validate set and get mcid string. [Tags] Test_Get_Management_Controller_Identifier_String [Setup] Get Default MCID [Teardown] Set Default MCID # Set Hostname via DCMI Management Controller Identifier String Command. ${cmd_rsp}= Set DCMI Management Controller Identifier String @{cmd_rsp_list}= Split String ${cmd_rsp} Run Keyword And Continue On Failure ... Valid Value cmd_rsp_list[1] valid_values=['${number_of_bytes_to_write}'] ${rsp}= Get DCMI Management Controller Identifier String @{ipmi_cmd_rsp_list}= Split String ${rsp} # Verify number of bytes that was set and id string length are same. ${string_length}= Get Response Length In Hex ${random_int} Run Keyword And Continue On Failure ... Should Be Equal As Strings ${ipmi_cmd_rsp_list[1]} ${string_length} ... msg=Number of bytes that was set and id string length are not same. # Verify ID String Length and data. # ipmi_cmd_rsp_list = ["00", "0a", "00", "01", "02", "03", "04", # "05", "06", "07", "08", "09"] # rsp_length = 10 # string_length = 0a # ipmi_cmd_rsp_list[1] = 0a # ipmi_cmd_rsp_list[1] is equal to string_length # the above condition is equal. # suppose if string_length and ipmi_cmd_rsp_list[1] not matches then # it will fails. ${rsp_length}= Get Length ${ipmi_cmd_rsp_list[2:]} ${string_length}= Get Response Length In Hex ${rsp_length} Run Keyword And Continue On Failure ... Should Be Equal As Strings ${ipmi_cmd_rsp_list[1]} ${string_length} ... msg=Id string length in ipmi response is showing wrongly # Verify get dcmi management controller identifier string command response # and the bytes used for Set DCMI MCID string. ${set_dcmi_mcid_cmd}= ... convert_prefix_hex_list_to_non_prefix_hex_list ${string_hex_list} Run Keyword And Continue On Failure ... Lists Should Be Equal ${ipmi_cmd_rsp_list[2:]} ${set_dcmi_mcid_cmd} ... msg=Bytes given in dcmi set mcid command and string bytes got from dcmi get mcid command are not same # Verify Hostname of cat /etc/hostname and get dcmi management controller identifier string command. ${bytes_list}= Get Hostname From BMC Console Run Keyword And Continue On Failure ... Lists Should Be Equal ${ipmi_cmd_rsp_list[2:]} ${bytes_list} ... msg=Bytes got from dcmi get mcid command and hostname from "cat /etc/os-release" command is not same. *** Keywords *** Get Default MCID [Documentation] Get default mcid. ${default_mcid}= Get DCMI Management Controller Identifier String Set Test Variable ${default_mcid} Set Default MCID [Documentation] Set default mcid. @{ipmi_cmd_rsp_list}= Split String ${default_mcid} ${number_of_bytes_to_write}= Set Variable ${ipmi_cmd_rsp_list[1]} ${bytes_in_int}= Convert To Integer ${number_of_bytes_to_write} 16 ${bytes_to_write}= Evaluate ${bytes_in_int} + 1 ${no_of_bytes_to_write}= Get Response Length In Hex ${bytes_to_write} @{tmp_lst}= Create List FOR ${bytes} IN @{ipmi_cmd_rsp_list[2:]} Append To List ${tmp_lst} 0x${bytes} END ${default_hex}= Catenate @{tmp_lst} ${cmd}= Catenate ${DCMI_RAW_CMD['DCMI']['MANAGEMENT_CONTROLLER_IDENTIFIER_STRING']['SET']} ... 0x${no_of_bytes_to_write} ${default_hex} Run External IPMI Raw Command ${cmd} Get DCMI Management Controller Identifier String [Documentation] Get DCMI MCID String. ${mcid_get_cmd}= Catenate ${DCMI_RAW_CMD['DCMI']['MANAGEMENT_CONTROLLER_IDENTIFIER_STRING']['GET']} ${resp}= Run IPMI Command ${mcid_get_cmd} ${resp}= Strip String ${resp} mode=right characters=${SPACE}00\n RETURN ${resp} Set DCMI Management Controller Identifier String [Documentation] Set DCMI MCID String. # 16 bytes maximum as per dcmi spec ${random_int}= Evaluate random.randint(1, 15) modules=random ${random_string}= Generate Random String ${random_int} ${string_hex_list}= convert_name_into_bytes_with_prefix ${random_string} ${random_hex}= Catenate @{string_hex_list} ${number_of_random_string}= Evaluate ${random_int} + 1 ${number_of_bytes_to_write}= Get Response Length In Hex ${number_of_random_string} ${mcid_set_cmd}= Catenate ${DCMI_RAW_CMD['DCMI']['MANAGEMENT_CONTROLLER_IDENTIFIER_STRING']['SET']} ... 0x${number_of_bytes_to_write} ${random_hex} 0x00 ${resp}= Run External IPMI Raw Command ${mcid_set_cmd} Set Test Variable ${string_hex_list} Set Test Variable ${random_int} Set Test Variable ${number_of_bytes_to_write} RETURN ${resp} Get Hostname From BMC Console [Documentation] Get hostname. ${cmd}= Catenate cat ${hostname_file_path} ${bmc_hostname}= BMC Execute Command ${cmd} ${name}= Convert To List ${bmc_hostname} ${hostname_bytes}= convert_name_into_bytes_without_prefix ${name[0]} RETURN ${hostname_bytes} Get Response Length In Hex [Documentation] Get response length in hex. [Arguments] ${resp_length} ${length}= Convert To Hex ${resp_length} ${length_1}= Get Length ${length} ${length_2}= Set Variable IF ... '${length_1}' == '1' 0${length} ... '${length_1}' != '1' ${length} ${resp_length_3}= Convert To Lower Case ${length_2} RETURN ${resp_length_3}