*** Settings ***
Documentation     This suite is used for testing eventlog association.

Resource          ../lib/rest_client.robot
Resource          ../lib/utils.robot
Resource          ../lib/connection_client.robot
Resource          ../lib/openbmc_ffdc.robot
Resource          ../lib/boot/boot_resource_master.robot

Library           Collections

Suite Setup       Suite Initialization Setup
Suite Teardown    Close All Connections

Test Teardown     FFDC On Test Case Fail

*** Variables ***

${SYSTEM_SHUTDOWN_TIME}           1min

${WAIT_FOR_SERVICES_UP}           3min

${EVENT_RECORD}        ${RECORDS_URI}events/
${DIMM_PREFIX}         ${INVENTORY_URI}system/chassis/motherboard/
${DIMM1_URI}           ${DIMM_PREFIX}dimm1
${DIMM2_URI}           ${DIMM_PREFIX}dimm2
${DIMM3_URI}           ${DIMM_PREFIX}dimm3

${BUSCTL_PREFIX}                busctl call ${OPENBMC_BASE_DBUS}.records.events
...                             ${OPENBMC_BASE_URI}records/events
...                             ${OPENBMC_BASE_DBUS}.recordlog
...                             acceptHostMessage sssay "Error"

${CREATE_ERROR_SINGLE_FRU}      ${BUSCTL_PREFIX} "Testing failure"
...                             "${DIMM1_URI}" 1 1

${CREATE_ERROR_INVALID_FRU}     ${BUSCTL_PREFIX} "Testing with invalid FRU"
...                             "abc" 1 1

${CREATE_ERROR_NO_FRU}          ${BUSCTL_PREFIX} "Testing with no fru" "" 1 1

${CREATE_ERROR_VIRTUAL_SENSOR}  ${BUSCTL_PREFIX}
...                             "Testing with a virtual sensor"
...                             "${INVENTORY_URI}system/systemevent " 1 1

&{NIL}                          data=@{EMPTY}

*** Test Cases ***

Create error log on single FRU
    [Documentation]     ***GOOD PATH***
    ...                 Create an error log on single FRU and verify
    ...                 its association.\n
    [Tags]  Create_error_log_on_single_FRU

    Run Keyword And Continue On Failure   Clear all logs

    ${elog}  ${stderr}=
    ...   Execute Command    ${CREATE_ERROR_SINGLE_FRU}
    ...   return_stderr=True
    Should Be Empty    ${stderr}

    ${log_list}=     Get EventList
    Should Contain   '${log_list}'   ${elog.strip('q ')}

    ${association_uri}=
    ...   catenate  SEPARATOR=   ${EVENT_RECORD}${elog.strip('q ')}  /fru

    ${association_content}=
    ...   Read Attribute    ${association_uri}    endpoints
    Should Contain     ${association_content}    ${DIMM1_URI}

    ${dimm1_event}=     Read Attribute     ${DIMM1_URI}/event   endpoints
    Should Contain     ${dimm1_event}    ${log_list[0]}


Create error log on two FRU
    [Documentation]     ***GOOD PATH***
    ...                 Create an error log on two FRUs and verify
    ...                 its association.\n

    ${log_uri}=      Create a test log
    ${association_uri}=    catenate    SEPARATOR=   ${log_uri}   /fru

    ${association_content}=     Read Attribute    ${association_uri}    endpoints
    Should Contain     ${association_content}    ${DIMM3_URI}
    Should Contain     ${association_content}    ${DIMM2_URI}

    ${dimm3_event}=     Read Attribute     ${DIMM3_URI}/event   endpoints
    Should Contain     ${dimm3_event}    ${log_uri}

    ${dimm2_event}=     Read Attribute     ${DIMM2_URI}/event   endpoints
    Should Contain     ${dimm2_event}    ${log_uri}


Create multiple error logs
    [Documentation]     ***GOOD PATH***
    ...                 Create multiple error logs and verify
    ...                 their association.\n

    : FOR    ${INDEX}    IN RANGE    1    4
    \    Log    ${INDEX}
    \    ${log_uri}=      Create a test log
    \    ${association_uri}=   catenate    SEPARATOR=   ${log_uri}   /fru
    \    ${association_content}=
    ...   Read Attribute   ${association_uri}    endpoints
    \    Should Contain    ${association_content}   ${DIMM3_URI}
    \    Should Contain    ${association_content}   ${DIMM2_URI}
    \    ${dimm3_event}=   Read Attribute   ${DIMM3_URI}/event   endpoints
    \    Should Contain    ${dimm3_event}   ${log_uri}
    \    ${dimm2_event}=   Read Attribute   ${DIMM2_URI}/event   endpoints
    \    Should Contain    ${dimm2_event}   ${log_uri}


Delete error log
    [Documentation]     ***BAD PATH***
    ...                 Delete an error log and verify that its
    ...                 association is also removed.\n
    [Tags]  Delete_error_log

    ${log_uri1}=      Create a test log
    ${association_uri1}=    catenate    SEPARATOR=   ${log_uri1}   /fru

    ${log_uri2}=      Create a test log

    ${del_uri}=  catenate    SEPARATOR=   ${log_uri1}   /action/delete
    ${resp}=    openbmc post request     ${del_uri}    data=${NIL}
    should be equal as strings      ${resp.status_code}     ${HTTP_OK}

    ${resp}=     openbmc get request     ${association_uri1}
    ${jsondata}=    to json    ${resp.content}
    Should Contain     ${jsondata['message']}    404 Not Found

    ${dimm3_event}=     Read Attribute      ${DIMM3_URI}/event   endpoints
    Should Not Contain     ${dimm3_event}    ${log_uri1}

    ${dimm2_event}=     Read Attribute      ${DIMM2_URI}/event   endpoints
    Should Not Contain     ${dimm2_event}    ${log_uri1}


Association with invalid FRU
    [Documentation]     ***BAD PATH***
    ...                 Create an error log on invalid FRU and verify
    ...                 that its does not have any association.\n

    Run Keyword And Continue On Failure   Clear all logs

    ${elog}  ${stderr}=
    ...   Execute Command    ${CREATE_ERROR_INVALID_FRU}
    ...   return_stderr=True
    Should Be Empty    ${stderr}

    ${log_list}=     Get EventList
    Should Contain   '${log_list}'   ${elog.strip('q ')}

    ${association_uri}=
    ...   catenate  SEPARATOR=  ${EVENT_RECORD}${elog.strip('q ')}  /fru

    ${resp}=     openbmc get request     ${association_uri}
    ${jsondata}=    to json    ${resp.content}
    Should Contain     ${jsondata['message']}    404 Not Found


Assocition with no FRU error event
    [Documentation]     ***BAD PATH***
    ...                 Create an error log on no FRU and verify
    ...                 that its does not have any association.\n

    Run Keyword And Continue On Failure   Clear all logs

    ${elog}  ${stderr}=
    ...   Execute Command    ${CREATE_ERROR_NO_FRU}
    ...   return_stderr=True
    Should Be Empty    ${stderr}

    ${log_list}=     Get EventList
    Should Contain   '${log_list}'   ${elog.strip('q ')}

    ${association_uri}=
    ...   catenate    SEPARATOR=   ${EVENT_RECORD}${elog.strip('q ')}  /fru

    ${resp}=     openbmc get request     ${association_uri}
    ${jsondata}=    to json    ${resp.content}
    Should Contain     ${jsondata['message']}    404 Not Found


Association with virtual sensor
    [Documentation]     ***GOOD PATH***
    ...                 Create an error log on virtual sensor and
    ...                 verify its association.\n
    [Tags]              Association_with_virtual_sensor

    Run Keyword And Continue On Failure   Clear all logs

    ${elog}  ${stderr}=
    ...   Execute Command    ${CREATE_ERROR_VIRTUAL_SENSOR}
    ...   return_stderr=True
    Should Be Empty    ${stderr}

    ${log_list}=     Get EventList
    Should Contain   '${log_list}'   ${elog.strip('q ')}

    ${association_uri}=
    ...   catenate    SEPARATOR=   ${EVENT_RECORD}${elog.strip('q ')}  /fru

    ${association_content}=
    ...   Read Attribute    ${association_uri}    endpoints
    Should Contain
    ...  ${association_content}
    ...  ${OPENBMC_BASE_URI}inventory/system/systemevent

Association unchanged after reboot
    [Documentation]     ***GOOD PATH***
    ...                 This test case is to verify that error log association
    ...                 does not change after open bmc reboot.\n
    [Tags]  bmcreboot  Association_Unchanged_After_Reboot

    ${pre_reboot_log_uri}=      Create a test log
    ${association_uri}=
    ...    catenate    SEPARATOR=   ${pre_reboot_log_uri}   /fru
    ${pre_reboot_association_content} =
    ...   Read Attribute   ${association_uri}    endpoints

    Initiate Power Off
    Check Power Off States

    ${output}=      Execute Command    /sbin/reboot
    Check If BMC is Up   5 min    10 sec

    @{states}=   Create List   BMC_READY   HOST_POWERED_OFF
    Wait Until Keyword Succeeds
    ...    10 min   10 sec   Verify BMC State   ${states}

    ${post_reboot_association_content} =
    ...   Read Attribute    ${association_uri}    endpoints
    Should Be Equal
    ...   ${post_reboot_association_content}
    ...   ${pre_reboot_association_content}

    ${post_reboot_dimm3_event} =
    ...   Read Attribute   ${DIMM3_URI}/event   endpoints
    Should Contain
    ...   ${post_reboot_dimm3_event}   ${pre_reboot_log_uri}
    ${post_reboot_dimm2_event} =
    ...   Read Attribute   ${DIMM2_URI}/event   endpoints
    Should Contain
    ...   ${post_reboot_dimm2_event}   ${pre_reboot_log_uri}

*** Keywords ***

Get EventList
    ${resp}=   openbmc get request   ${EVENT_RECORD}
    should be equal as strings    ${resp.status_code}    ${HTTP_OK}
    ${jsondata}=    to json    ${resp.content}
    [Return]    ${jsondata['data']}

Create a test log
    [Arguments]
    ${data}=   create dictionary   data=@{EMPTY}
    ${resp}=   openbmc post request
    ...     ${EVENT_RECORD}action/acceptTestMessage    data=${data}
    should be equal as strings      ${resp.status_code}     ${HTTP_OK}
    ${json}=   to json         ${resp.content}
    ${LOGID}=    convert to integer    ${json['data']}
    ${uri}=     catenate    SEPARATOR=   ${EVENT_RECORD}   ${LOGID}
    [Return]  ${uri}

Clear all logs
    ${resp}=   openbmc post request
    ...   ${EVENT_RECORD}action/clear    data=${NIL}
    should be equal as strings      ${resp.status_code}     ${HTTP_OK}
    ${resp}=   openbmc get request   ${EVENT_RECORD}
    ${json}=   to json         ${resp.content}
    Should Be Empty     ${json['data']}

Suite Initialization Setup
    Open Connection And Log In
    Run Keyword And Continue On Failure   Clear all logs
