blob: ea0fc6c34027c28564f61e9fc7083312b0d2a146 [file] [log] [blame]
*** 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