blob: c7459f611a9071be0787e27031a8cf8e463ffb09 [file] [log] [blame]
George Keishingc37fca62017-11-24 05:07:32 -06001*** Settings ***
2Documentation Error logging utility keywords.
3
4Resource rest_client.robot
5Variables ../data/variables.py
6
7*** Keywords ***
8
9Get Logging Entry List
10 [Documentation] Get logging entry and return the object list.
11
12 ${entry_list}= Create List
13 ${resp}= OpenBMC Get Request ${BMC_LOGGING_ENTRY}list quiet=${1}
14 Return From Keyword If ${resp.status_code} == ${HTTP_NOT_FOUND}
15 ${jsondata}= To JSON ${resp.content}
16
17 :FOR ${entry} IN @{jsondata["data"]}
18 \ Continue For Loop If '${entry.rsplit('/', 1)[1]}' == 'callout'
19 \ Append To List ${entry_list} ${entry}
20
21 # Logging entries list.
22 # ['/xyz/openbmc_project/logging/entry/14',
23 # '/xyz/openbmc_project/logging/entry/15']
24 [Return] ${entry_list}
25
26
27Logging Entry Should Exist
28 [Documentation] Find the matching message id and return the entry id.
29 [Arguments] ${message_id}
30
31 # Description of argument(s):
32 # message_id Logging message string.
33 # Example: "xyz.openbmc_project.Common.Error.InternalFailure"
34
George Keishing5ac6e172018-04-09 12:44:15 -050035 @{elog_entries}= Get Logging Entry List
George Keishingc37fca62017-11-24 05:07:32 -060036
37 :FOR ${entry} IN @{elog_entries}
38 \ ${resp}= Read Properties ${entry}
39 \ ${status}= Run Keyword And Return Status
40 ... Should Be Equal As Strings ${message_id} ${resp["Message"]}
41 \ Return From Keyword If ${status} == ${TRUE} ${entry}
42
43 Fail No ${message_id} logging entry found.
44
Steven Sombar95672942018-03-23 11:24:58 -050045
46Get Error Logs
47 [Documentation] Return a dictionary which contains the BMC error logs.
48 [Arguments] ${quiet}=1
49
50 # Description of argument(s):
51 # quiet Indicates whether this keyword should run without any output to
52 # the console, 0 = verbose, 1 = quiet.
53
54 # The length of the returned dictionary indicates how many logs there are.
55 # Printing of error logs can be done with the keyword Print Error Logs,
56 # for example, Print Error Logs ${error_logs} Message.
57
58 ${status} ${error_logs}= Run Keyword And Ignore Error Read Properties
59 ... /xyz/openbmc_project/logging/entry/enumerate quiet=${quiet}
60
61 ${empty_dict}= Create Dictionary
62 Return From Keyword If '${status}' == 'FAIL' ${empty_dict}
63 [Return] ${error_logs}
Sivas SRRcf6714f2018-03-26 10:51:29 -050064
65
66Get IPMI SEL Setting
67 [Documentation] Returns status for given IPMI SEL setting.
68 [Arguments] ${setting}
69 # Description of argument(s):
70 # setting SEL setting which needs to be read(e.g. "Last Add Time").
71
72 ${resp}= Run IPMI Standard Command sel info
73
74 ${setting_line}= Get Lines Containing String ${resp} ${setting}
75 ... case-insensitive
76 ${setting_status}= Fetch From Right ${setting_line} :${SPACE}
77
78 [Return] ${setting_status}
79
80
81Verify Watchdog Errorlog Content
82 [Documentation] Verify watchdog errorlog content.
83 # Example:
84 # "/xyz/openbmc_project/logging/entry/1":
85 # {
86 # "AdditionalData": [],
87 # "Id": 1,
88 # "Message": "org.open_power.Host.Boot.Error.WatchdogTimedOut",
89 # "Resolved": 0,
90 # "Severity": "xyz.openbmc_project.Logging.Entry.Level.Error",
91 # "Timestamp": 1492715244828,
92 # "associations": []
93 # },
94
95 ${elog_entry}= Get URL List ${BMC_LOGGING_ENTRY}
96 ${elog}= Read Properties ${elog_entry[0]}
97 Should Be Equal As Strings
98 ... ${elog["Message"]} org.open_power.Host.Boot.Error.WatchdogTimedOut
Sivas SRR21c2ef22018-04-18 11:01:38 -050099 ... msg=Watchdog timeout error log was not found.
Sivas SRRcf6714f2018-03-26 10:51:29 -0500100 Should Be Equal As Strings
101 ... ${elog["Severity"]} xyz.openbmc_project.Logging.Entry.Level.Error
Sivas SRR21c2ef22018-04-18 11:01:38 -0500102 ... msg=Watchdog timeout severity unexpected value.
Sivas SRRcf6714f2018-03-26 10:51:29 -0500103
104
105Logging Test Binary Exist
106 [Documentation] Verify existence of prerequisite logging-test.
107 Open Connection And Log In
108 ${out} ${stderr}= Execute Command
109 ... which /tmp/tarball/bin/logging-test return_stderr=True
Sivas SRR21c2ef22018-04-18 11:01:38 -0500110 Should Be Empty ${stderr} msg=Logging Test stderr is non-empty.
Sivas SRRcf6714f2018-03-26 10:51:29 -0500111 Should Contain ${out} logging-test
Sivas SRR21c2ef22018-04-18 11:01:38 -0500112 ... msg=Logging test returned unexpected result.
Sivas SRRcf6714f2018-03-26 10:51:29 -0500113
114Clear Existing Error Logs
115 [Documentation] If error log isn't empty, reboot the BMC to clear the log.
116 ${resp}= OpenBMC Get Request ${BMC_LOGGING_ENTRY}${1}
117 Return From Keyword If ${resp.status_code} == ${HTTP_NOT_FOUND}
118 Initiate BMC Reboot
119 Wait Until Keyword Succeeds 10 min 10 sec
120 ... Is BMC Ready
121 ${resp}= OpenBMC Get Request ${BMC_LOGGING_ENTRY}${1}
122 Should Be Equal As Strings ${resp.status_code} ${HTTP_NOT_FOUND}
Sivas SRR21c2ef22018-04-18 11:01:38 -0500123 ... msg=Could not clear BMC error logs.
Sivas SRRcf6714f2018-03-26 10:51:29 -0500124
125Create Test Error Log
126 [Documentation] Generate test error log.
127 # Test error log entry example:
128 # "/xyz/openbmc_project/logging/entry/1": {
129 # "AdditionalData": [
130 # "STRING=FOO"
131 # ],
132 # "Id": 1,
133 # "Message": "example.xyz.openbmc_project.Example.Elog.AutoTestSimple",
134 # "Severity": "xyz.openbmc_project.Logging.Entry.Level.Error",
135 # "Timestamp": 1487743963328,
136 # "associations": []
137 # }
138
139 Execute Command On BMC /tmp/tarball/bin/logging-test -c AutoTestSimple
140
141Count Error Entries
142 [Documentation] Count Error entries.
143 ${resp}= OpenBMC Get Request ${BMC_LOGGING_ENTRY}
144 Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}
Sivas SRR21c2ef22018-04-18 11:01:38 -0500145 ... msg=Failed to get error logs.
Sivas SRRcf6714f2018-03-26 10:51:29 -0500146 ${jsondata}= To JSON ${resp.content}
147 ${count}= Get Length ${jsondata["data"]}
148 [Return] ${count}
149
150Verify Test Error Log
151 [Documentation] Verify test error log entries.
152 ${elog_entry}= Get URL List ${BMC_LOGGING_ENTRY}
153 ${entry_id}= Read Attribute ${elog_entry[0]} Message
154 Should Be Equal ${entry_id}
155 ... example.xyz.openbmc_project.Example.Elog.AutoTestSimple
Sivas SRR21c2ef22018-04-18 11:01:38 -0500156 ... msg=Error log not from AutoTestSimple.
Sivas SRRcf6714f2018-03-26 10:51:29 -0500157 ${entry_id}= Read Attribute ${elog_entry[0]} Severity
158 Should Be Equal ${entry_id}
159 ... xyz.openbmc_project.Logging.Entry.Level.Error
Sivas SRR21c2ef22018-04-18 11:01:38 -0500160 ... msg=Error log severity mismatch.
Sivas SRRcf6714f2018-03-26 10:51:29 -0500161
162Delete Error Logs And Verify
163 [Documentation] Delete all error logs and verify.
164 Delete All Error Logs
165 ${resp}= OpenBMC Get Request ${BMC_LOGGING_ENTRY}/list quiet=${1}
166 Should Be Equal As Strings ${resp.status_code} ${HTTP_NOT_FOUND}
Sivas SRR21c2ef22018-04-18 11:01:38 -0500167 ... msg=Error logs not deleted as expected.
Sivas SRRcf6714f2018-03-26 10:51:29 -0500168
169
170Install Tarball
171 [Documentation] Install tarball on BMC.
172 Run Keyword If '${DEBUG_TARBALL_PATH}' == '${EMPTY}' Return From Keyword
173 BMC Execute Command rm -rf /tmp/tarball
174 Install Debug Tarball On BMC ${DEBUG_TARBALL_PATH}