*** Settings ***

Documentation    Module to test IPMI SEL Time functionality.
...              Pre-requisite Condition : Client Machine and BMC should be in
...              Same TimeZone (example : UST)
...
...              IPMI Raw command variables are defined under
...              ../data/ipmi_raw_command_table.py
...
...              Test the Set/Get SEL Time functionality and compare the result against
...              BMC Native command (date).
...
...              Set the Time Sync Mode from NTP to Manual to Set SEL Time.
...              Time Sync Mode change performed via REDFISH URI.
...              Performs the change in Time Sync Mode with Test Setup and Teardown Execution
...              with default NETWORK_TIMEOUT provided under ../lib/resource.robot.
...
...              NETWORK_RESTART_TIME added for Set SEL Time and Add SEL Entry as the corresponding
...              command takes approx 5 seconds for the operation to reflect.
...
...              Current SEL time identified via BMC Native command (date) and perform SEL Time operations.
...
...              Script Verifies SEL Time for various scenarios such as,
...              Get current time from BMC and add future year and compare against BMC native command (date),
...              Gets BMC Current Time and Adds 15 minutes and compare against BMC native command (date),
...              Gets BMC Current Time and subtracts 1 day and compare against BMC native command (date),
...              Add SEL Entry for all the above scenarios and compare against BMC native command (date).

Resource         ../lib/ipmi_client.robot
Resource         ../lib/openbmc_ffdc.robot
Library          DateTime
Library          Collections
Library          String
Library          ../lib/ipmi_utils.py
Variables        ../data/ipmi_raw_cmd_table.py

Test Setup       Test Setup Execution
Test Teardown    Test Teardown Execution

Force Tags       IPMI_SEL_Time

*** Variables ***

${NETWORK_RESTART_TIME}   5s
@{time_difference_list}  +8760:153:25  -87600:453:120  +175200:40:15  -43800:10:05  +20:35:12  -8760:00:00

# Based on 13th byte of add SEL entry command as per IPMI spec
# event_dir and event_type variable value needs to be given.
${sel_no_entry_msg}  SEL has no entries
${event_type}        Lower Non-critical going low
${event_dir}         Asserted
# number_of_times_sel_entry_added this variable is used in Verify Multiple Set SEL Time With Multiple Add SEL Entry
# test case. Need to give how many sel should be added with multiple date and time.
${number_of_times_sel_entry_added}    6

*** Test Cases ***

Verify Default Get SEL Time
    [Documentation]  Verify IPMI Get SEL Time.
    [Tags]  Verify_Default_Get_SEL_Time
    [Setup]  Printn
    [Teardown]  FFDC On Test Case Fail

    # Gets the current SEL time via Get SEL Time Command.
    ${resp}=  Get SEL Time Command
    Should Not Be Empty  ${resp}


Verify Set SEL Time On NTP Mode
    [Documentation]   IPMI Set SEL Time without NTP
    [Tags]  Verify_Set_SEL_Time_On_NTP_Mode
    [Setup]  Printn
    [Teardown]  printn

    # Get current time from BMC and add future year (here, 5years).
    ${sel_date}=  Get Specific Sel Date  5

    # Gives Hexa decimal raw command data request with the prefix of 0x.
    ${sel_date_raw}=  Converting Date to HexaDecimal  ${sel_date}

    ${Set_sel_time}=  Run Keyword and Expect Error  *${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][2]}*
    ...  Run IPMI Command  ${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][0]} ${sel_date_raw}
    Should Contain  ${Set_sel_time}  ${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][1]}


Verify SEL Set Time For Specific Time
    [Documentation]  Verify IPMI Set SEL Time.
    [Tags]  Verify_SEL_Set_Time_For_Specific_Time

    # Get current time from BMC and add future year (here, 5years).
    ${sel_date}=  Get Specific Sel Date  5

    # Gives Hexa decimal raw command data request with the prefix of 0x.
    ${sel_date_raw}=  Converting Date to HexaDecimal  ${sel_date}

    # Set SEL Entry command.
    Set SEL Time Entry Via Raw Command  ${sel_date_raw}

    # Get SEL Time command.
    ${get_sel_time}=  Check Current Date Time Via IPMI

    # Identify Time difference and find the difference is less than 6 seconds.
    # Command execution may happen at the end of millisecond so considered 6 seconds as difference.
    ${time_difference}=  Get Time Difference  ${get_sel_time}  ${sel_date}
    Should Be True  0<=${time_difference}<=5
    ...  msg=Set SEL Time Not Working

    # Get BMC time (native) and compare with set sel time given.
    ${bmc_time}=  Get Current Date from BMC

    ${difference}=  Get Time Difference  ${bmc_time}  ${sel_date}
    Should Be True  0<=${difference}<=6


Verify Set SEL Time With Future Date And Time
    [Documentation]  Verify IPMI Get SEL Time by adding 15 minutes from current time.
    [Tags]  Verify_Set_SEL_Time_With_Future_Date_And_Time

    # Gets BMC Current Time and Adds 15 minutes and sets the SEL Time.
    ${sel_time}  ${set_sel_time}=  Identify SEL Time  +06:15:00

    # Set SEL Time via IPMI command.
    Set SEL Time Via IPMI  ${sel_time}

    # Get SEL Time Command.
    ${get_sel_time}=  Check Current Date Time Via IPMI

    # Difference of time between set sel time and get time.
    ${difference}=  Get Time Difference  ${get_sel_time}  ${set_sel_time}
    Should Be True  0<=${difference}<=2

    # Difference of time between BMC Date and Get SEL Time.
    ${bmc_time}=  Get Current Date from BMC
    ${difference}=  Get Time Difference  ${get_sel_time}  ${bmc_time}
    Should Be True  0<=${difference}<=2


Verify Set SEL Time With Past Date And Time
    [Documentation]  Verify IPMI Get SEL Time for yime delay of 1 day from current dat and time.
    [Tags]  Verify_Set_SEL_Time_With_Past_Date_And_Time

    # Gets BMC current time and subtracts 1 day and sets the SEL Time.
    ${sel_time}  ${set_sel_time}=  Identify SEL Time  -24:00:00

    ${status}=  Run Keyword And Return Status  Should Not Contain  ${sel_time}  1969
    ...  msg=Date cannot be less than 1970.

    IF  '${status}' == '${TRUE}'
        # Set SEL Time via IPMI command.
        Set SEL Time Via IPMI  ${sel_time}
        # Get SEL Time Command.
        ${get_sel_time}=  Check Current Date Time Via IPMI
        # Difference of time between set sel time and get time.
        ${difference}=  Get Time Difference  ${get_sel_time}  ${set_sel_time}
        Should Be True  0<=${difference}<=2
        # Difference of time between BMC Date and Get SEL Time.
        ${bmc_time}=  Get Current Date from BMC
        ${difference}=  Get Time Difference  ${get_sel_time}  ${bmc_time}
        Should Be True  0<=${difference}<=2
    ELSE
        FAIL  SEL Time cannot set Date less than 1970
    END


Verify SEL Set Time For Invalid Data Request
    [Documentation]  Verify IPMI Get SEL Time for invalid data request
    [Tags]  Verify_SEL_Set_Time_For_Invalid_Data_Request
    [Setup]  Printn
    [Teardown]  FFDC On Test Case Fail

    # Gets BMC current date via date command.
    ${current_date}=  Get Current Date from BMC

    # Gives hexa decimal Raw command data request with the prefix of 0x.
    ${sel_date_raw}=  Converting Date to HexaDecimal  ${current_date}

    # Set Invalid SEL Time with one extra request byte.
    ${Set_seltime_invalid}=  Run Keyword and Expect Error  *${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][4]}*
    ...  Run IPMI Command  ${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][0]} ${sel_date_raw} 0x00
    Should Contain  ${Set_seltime_invalid}  ${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][3]}


Verify SEL Set Time For Incomplete Data Request
    [Documentation]  Verify IPMI Get SEL Time for invalid data with one byte less request data.
    [Tags]  Verify_SEL_Set_Time_For_Incomplete_Data_Request
    [Setup]  Printn
    [Teardown]  FFDC On Test Case Fail

    # Gets BMC current date via date command.
    ${current_date}=  Get Current Date from BMC

    # Gives hexa decimal raw command data request with the prefix of 0x.
    ${sel_date_raw}=  Converting Date to HexaDecimal  ${current_date}

    # For data request less than expected byes, remove last byte.
    ${sel_date_raw}=  Split String  ${sel_date_raw}
    Remove From List  ${sel_date_raw}  -1
    ${sel_date_raw}=  Evaluate  " ".join(${sel_date_raw})

    # Set incomplete SEL Time with one less request byte.
    ${Set_seltime_incomplete}=
    ...  Run Keyword and Expect Error  *${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][4]}*
    ...  Run IPMI Command  ${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][0]} ${sel_date_raw}
    Should Contain  ${Set_seltime_incomplete}  ${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][3]}


Verify SEL Time In SEL Entry
    [Documentation]  Verify Configured SEL Time reflects in newly added SEL Entry.
    [Tags]  Verify_SEL_Time_In_SEL_Entry

    Clear The SEL

   # change to manual, get current time and add future year (here, 5years).
    ${sel_date}=  Get Specific Sel Date  5

    # Gives hexa decimal raw command data request with the prefix of 0x.
    ${sel_date_raw}=  Converting Date to HexaDecimal  ${sel_date}

    # Set SEL Entry Command.
    Set SEL Time Entry Via Raw Command  ${sel_date_raw}

    # Get SEL Time Command.
    ${get_sel_time}=  Check Current Date Time Via IPMI

    # Identify Time difference and find the difference is less than 6 seconds.
    # Command execution may happen at the end of millisecond so considered 6 seconds as difference.
    ${time_difference}=  Get Time Difference  ${get_sel_time}  ${sel_date}
    Should Be True  0<=${time_difference}<=5
    ...  msg=Set SEL Time Not Working

    # Get BMC time (native) and compare with set sel time given.
    ${bmc_time}=  Get Current Date from BMC

    ${difference}=  Get Time Difference  ${bmc_time}  ${sel_date}
    Should Be True  0<=${difference}<=6

    # Get any Sensor available from Sensor list.
    ${sensor_name}=  Fetch One Threshold Sensor From Sensor List

    # Get Sensor ID from SDR Get "sensor".
    ${sensor_data1}=  Fetch Sensor Details From SDR  ${sensor_name}  Sensor ID
    ${sensor_number}=  Get Bytes From SDR Sensor  ${sensor_data1}

    # Get Sensor Type from SDR Get "sensor".
    ${sensor_data2}=  Fetch Sensor Details From SDR  ${sensor_name}  Sensor Type (Threshold)
    ${sensor_type_id}=  Get Bytes From SDR Sensor  ${sensor_data2}

    # Add SEL Entry.
    ${sel_create_resp}=  Create SEL  ${sensor_type_id}  ${sensor_number}

    # Finds the last added sel entry.
    ${resp}=  Verify SEL Added  ${sensor_name}

    # Fetches the date of the last added SEL Entry.
    ${sel_entry_date}=  Fetch Added SEL Date  ${resp}

    # Identify and find the time difference is less than 60 seconds.
    # Finding the sensor details and execution may take up to a minute.
    # Compare  date and time of Set SEL with sel entry.
    ${d}=  Get Time Difference  ${sel_entry_date}  ${sel_date}
    Should Be True  0<=${d}<=60


Verify SEL Time In SEL Entry For Future Date and Time
    [Documentation]  Verify configured SEL Time (Future Date & Time) in added SEL Entry.
    [Tags]  Verify_SEL_Time_In_SEL_Entry_For_Future_Date_and_Time

    Clear The SEL

    # Gets BMC Current Time and Adds 15 minutes and sets the SEL Time.
    ${sel_time}  ${set_sel_time}=  Identify SEL Time  +06:15:00

    # Set SEL Time via IPMI command.
    Set SEL Time Via IPMI  ${sel_time}

    # Get SEL Time Command.
    ${get_sel_time}=  Check Current Date Time Via IPMI

    # Difference of time between set sel time and get time.
    ${difference}=  Get Time Difference  ${get_sel_time}  ${set_sel_time}
    Should Be True  0<=${difference}<=2

    # Difference of time between BMC Date and Get SEL Time.
    ${bmc_time}=  Get Current Date from BMC
    ${difference}=  Get Time Difference  ${get_sel_time}  ${bmc_time}
    Should Be True  0<=${difference}<=2

    # Get any Sensor available from Sensor list.
    ${sensor_name}=  Fetch One Threshold Sensor From Sensor List

    # Get Sensor ID from SDR Get "sensor".
    ${sensor_data1}=  Fetch Sensor Details From SDR  ${sensor_name}  Sensor ID
    ${sensor_number}=  Get Bytes From SDR Sensor  ${sensor_data1}

    # Get Sensor Type from SDR Get "sensor".
    ${sensor_data2}=  Fetch Sensor Details From SDR  ${sensor_name}  Sensor Type (Threshold)
    ${sensor_type_id}=  Get Bytes From SDR Sensor  ${sensor_data2}

    # Add SEL Entry.
    ${sel_create_resp}=  Create SEL  ${sensor_type_id}  ${sensor_number}

    # Finds the last added sel entry.
    ${resp}=  Verify SEL Added  ${sensor_name}

    # Fetches the date of the last added SEL Entry.
    ${sel_entry_date}=  Fetch Added SEL Date  ${resp}

    # Identify and find the time difference is less than 60 seconds.
    # Finding the sensor details and execution may take up to a minute.
    # Compare  date and time of Set SEL with sel entry.
    ${d}=  Get Time Difference  ${sel_entry_date}  ${set_sel_time}
    Should Be True  0<=${d}<=60


Verify SEL Time In SEL Entry For Past Date And Time
    [Documentation]  Verify configured SEL Time (Past Date & Time) in added SEL Entry.
    [Tags]  Verify_SEL_Time_In_SEL_Entry_For_Past_Date_And_Time

    Clear The SEL

    # Gets BMC Current Time and subtracts 1 day and sets the SEL Time.
    ${sel_time}  ${set_sel_time}=  Identify SEL Time  -24:00:00

    ${status}=  Run Keyword And Return Status  Should Not Contain  ${sel_time}  1969
    ...  msg=Date cannot be less than 1970

    IF  '${status}' == '${TRUE}'
        # Set SEL Time via IPMI command.
        Set SEL Time Via IPMI  ${sel_time}
        # Get SEL Time Command.
        ${get_sel_time}=  Check Current Date Time Via IPMI
        # Difference of time between set sel time and get time.
        ${difference}=  Get Time Difference  ${get_sel_time}  ${set_sel_time}
        Should Be True  0<=${difference}<=2
        # Difference of time between BMC Date and Get SEL Time.
        ${bmc_time}=  Get Current Date from BMC
        ${difference}=  Get Time Difference  ${get_sel_time}  ${bmc_time}
        Should Be True  0<=${difference}<=2

        # Get any Sensor available from Sensor list.
        ${sensor_name}=  Fetch One Threshold Sensor From Sensor List
        # Get Sensor ID from SDR Get "sensor".
        ${sensor_data1}=  Fetch Sensor Details From SDR  ${sensor_name}  Sensor ID
        ${sensor_number}=  Get Bytes From SDR Sensor  ${sensor_data1}

        # Get Sensor Type from SDR Get "sensor".
        ${sensor_data2}=  Fetch Sensor Details From SDR  ${sensor_name}  Sensor Type (Threshold)
        ${sensor_type_id}=  Get Bytes From SDR Sensor  ${sensor_data2}

        # Add SEL Entry.
        ${sel_create_resp}=  Create SEL  ${sensor_type_id}  ${sensor_number}

        # Finds the last added sel entry.
        ${resp}=  Verify SEL Added  ${sensor_name}

        # Fetches the date of the last added SEL Entry.
        ${sel_entry_date}=  Fetch Added SEL Date  ${resp}

        # Identify and find the time difference is less than 60 seconds.
        # Finding the sensor details and execution may take up to a minute.
        # Compare  date and time of Set SEL with sel entry.
        ${d}=  Get Time Difference  ${sel_entry_date}  ${set_sel_time}
        Should Be True  0<=${d}<=60
    ELSE
        FAIL  SEL Time cannot set Date less than 1970.
    END


Verify Multiple Set SEL Time With Multiple Add SEL Entry
    [Documentation]  Verify SEL time in multiple addition Of SEL entry.
    [Tags]  Verify_Multiple_Set_SEL_Time_With_Multiple_Add_SEL_Entry

    FOR  ${i}  IN RANGE  ${number_of_times_sel_entry_added}

      ${sel_time}  ${set_sel_time}=  Identify SEL Time  ${time_difference_list[${i}]}

      # Set SEL Time via IPMI command.
      Set SEL Time Via IPMI  ${sel_time}

      # Clear the SEL.
      Clear The SEL

      # Get any Sensor available from Sensor list.
      ${sensor_name}=  Fetch One Threshold Sensor From Sensor List

      # Get Sensor ID from SDR Get "sensor" and Identify Sensor ID.
      ${sensor_data1}=  Fetch Sensor Details From SDR  ${sensor_name}  Sensor ID
      ${sensor_number}=  Get Bytes From SDR Sensor  ${sensor_data1}

      # Get Sensor Type from SDR Get "sensor" and identify Sensor Type.
      ${sensor_data2}=  Fetch Sensor Details From SDR  ${sensor_name}  Sensor Type (Threshold)
      ${sensor_type_id}=  Get Bytes From SDR Sensor  ${sensor_data2}

      # Add SEL Entry.
      ${sel_create_resp}=  Create SEL  ${sensor_type_id}  ${sensor_number}

      # Finds the last added sel entry.
      ${resp}=  Verify SEL Added  ${sensor_name}

      # Fetches the date of the last added SEL Entry.
      ${sel_entry_date}=  Fetch Added SEL Date  ${resp}

      # Identify and find the time difference is less than 60 seconds.
      # Finding the sensor details and execution may take up to a minute.
      # Compare  date and time of Set SEL with sel entry.
      ${d}=  Get Time Difference  ${sel_entry_date}  ${set_sel_time}
      Should Be True  ${d}<=60

    END


*** Keywords ***

Time Sync Mode Change Through Redfish
    [Documentation]  Export IP, token and change the time sync to manual.
    [Arguments]   ${value}

    # Description of argument(s):
    # ${value}    Can be either ${FALSE} or ${TRUE}.

    # May be changed to WebView.

    # Changing Time Sync Mode to Manual.
    Change Time Sync Mode Via Redfish  ${value}


Change Time Sync Mode Via Redfish
    [Documentation]  To change the time sync mode via Redfish.
    [Arguments]   ${value}

    # Description of argument(s):
    # ${value}    Can be either ${FALSE} or ${TRUE}

    # Creates request body for Redfish url.
    ${mode}=  Create Dictionary  ProtocolEnabled=${value}
    ${data}=  Create Dictionary  NTP=${mode}

    # Patches the obtained body to the given url.
    Redfish.patch  ${REDFISH_NW_PROTOCOL_URI}  body=&{data}
    ...   valid_status_codes=[${HTTP_NO_CONTENT}]

    Sleep  ${NETWORK_RESTART_TIME}


Get SEL Time Command
    [Documentation]  Get SEL Time command.

    # The response will be 8 byte timestamp in hexadecimal.
    # example: If current date and time is "Wed May  4 18:55:00 UTC 2022",
    # then, ${get_sel_time} will be "07 cc 72 62".
    ${get_sel_time}=  Run IPMI Command
    ...  ${IPMI_RAW_CMD['SEL_entry']['Get_SEL_Time'][0]}

    [Return]    ${get_sel_time}


Set SEL Time Entry Via Raw Command
    [Documentation]  Set SEL Time command.
    [Arguments]  ${sel_date_raw}

    # Description of argument(s):
    # ${sel_date_raw}     Time to set in hexadecimal bytes.
    # Example:
    #    If date is 1st January 2022 12:30:00 PM,
    #    the hexadecimal timestamp is, 61D04948.
    #    then the request bytes are,
    #    ${sel_date_raw}     0x48 0x49 0xd0 0x61

    Run IPMI Command  ${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][0]} ${sel_date_raw}
    Sleep  ${NETWORK_RESTART_TIME}


Clear The SEL
    [Documentation]  Clear SEL Command.

    # Clear the SEL.
    ${out}=  Run IPMI Standard Command  sel clear
    Should Contain  ${out}  Clearing SEL
    Sleep  2s


Verify SEL Added
    [Documentation]  Verify Added SEL.
    [Arguments]  ${sensor_name}

    # Description of argument(s):
    # sensor_name         Name of the sensor.

    ${resp}=  Run IPMI Standard Command  sel elist
    Should Not Contain  ${resp}  ${sel_no_entry_msg}
    ${get_sel_entry}=  Get Lines Containing String  ${resp}  ${sensor_name}
    ${sel_entry}=  Get Lines Containing String  ${get_sel_entry}  ${event_type}
    Should Contain  ${sel_entry}  ${event_dir}  msg=Add SEL Entry failed.

    [Return]  ${sel_entry}


Check Current Date Time Via IPMI
    [Documentation]  Verify Current Date and Time Via IPMI user command.

    ${resp}=  Run IPMI Standard Command  sel time get
    [Return]  ${resp}


Get Specific Sel Date
    [Documentation]  Gets initial time and adds year to the current date and returns future date.
    [Arguments]  ${year}

    # Description of argument(s):
    # ${year}             Can be any number of years (say 5 year).

    ${current_date}=  Get Current Date from BMC

    # Converting given years to days by multiplying with 365days and adding the days to current date.
    ${days}=  Evaluate  365*${year}+1
    ${date}=  Add Time To Date
    ...  ${current_date}  ${days}d  result_format=%m/%d/%Y %H:%M:%S  date_format=%m/%d/%Y %H:%M:%S

    [Return]   ${date}


Converting Date to HexaDecimal
    [Documentation]  Converting the date into hexa decimal values.
    [Arguments]  ${date}

    # Description of argument(s):
    # ${date}             Can be any date in format %m/%d/%Y %H:%M:%S.

    ${epoch_date}=  Convert Date  ${date}  epoch  exclude_millis=yes  date_format=%m/%d/%Y %H:%M:%S
    ${date}=  Convert To Hex  ${epoch_date}  lowercase=yes

    # function calls from utils.py.
    # Length of the date byte should be 8 so that each bytes are separated.
    ${date}=  Zfill Data  ${date}  8
    # To split every two characters to form one byte each.
    ${date}=  Split String With Index  ${date}  2
    # Prefix every list index value with 0x.
    ${date}=  Prefix Bytes  ${date}

    # Reverse the bytes and join the list to form request Time stamp data.
    Reverse List  ${date}
    ${date}=  Evaluate  " ".join(${date})

    [Return]  ${date}


Get Time Difference
    [Documentation]  Converting the date into hexa decimal values.
    [Arguments]  ${date1}  ${date2}

    # Description of argument(s):
    # ${date1}             Can be any date in format %m/%d/%Y %H:%M:%S.
    # ${date2}             Can be any date in format %m/%d/%Y %H:%M:%S.

    ${epoch_date1}=  Convert Date  ${date1}  epoch  exclude_millis=yes  date_format=%m/%d/%Y %H:%M:%S
    ${epoch_date2}=  Convert Date  ${date2}  epoch  exclude_millis=yes  date_format=%m/%d/%Y %H:%M:%S

    ${diff}=  Evaluate  int(${epoch_date1}) - int(${epoch_date2})

    [Return]  ${diff}


Identify SEL Time
    [Documentation]  Modify SEL Time From BMC For Set Sel Time Command.
    [Arguments]  ${time}

    # Description of argument(s):
    # time             Can be any number of hours or minutes in format %H:%M:%S.

    # Gets BMC current date via date command.
    ${current_date}=  Get Current Date from BMC

    ${modifying_date_status}=  Run Keyword And Return Status  Should Contain  ${time}  +

    ${date_time}=  Set Variable IF
    ...  ${modifying_date_status} == True  ${time.split("+")[-1]}
    ...  ${modifying_date_status} == False  ${time.split("-")[-1]}

    ${datetime} =  Run Keyword IF  ${modifying_date_status} == True
    ...    Add Time To Date
    ...    ${current_date}  ${date_time}  result_format=%m/%d/%Y %H:%M:%S  date_format=%m/%d/%Y %H:%M:%S
    ...  ELSE IF  ${modifying_date_status} == False
    ...    Subtract Time From Date
    ...    ${current_date}  ${date_time}  result_format=%m/%d/%Y %H:%M:%S  date_format=%m/%d/%Y %H:%M:%S

    #Set SEL Time.
    ${quoted_date}=  Fetch Date  ${datetime}

    [Return]  ${quoted_date}  ${datetime}


Set SEL Time Via IPMI
    [Documentation]  Set SEL Time for given date using IPMI.
    [Arguments]  ${date_time}

    # Description of argument(s):
    # ${date_time}       Can be any date in format %m/%d/%Y %H:%M:%S.

    ${resp}=  Run IPMI Standard Command  sel time set "${date_time}"
    Should Not Contain  ${resp}  Unspecified error


Test Setup Execution
    [Documentation]  Test Setup Execution.

    Redfish.Login
    # Change timesync mode to manual with timeout as per resource.robot.
    Time Sync Mode Change Through Redfish   ${FALSE}
    Sleep  ${NETWORK_TIMEOUT}


Test Teardown Execution
    [Documentation]  For execution of Test teardown.

    Clear The SEL

    # Change TimeSync mode to NTP with Timeout as per default resource.robot.
    Time Sync Mode Change Through Redfish  ${TRUE}
    Sleep  ${NETWORK_TIMEOUT}
    Redfish.Logout
    FFDC On Test Case Fail
