blob: 13aa603bc390c167609529535af7514695d4dd13 [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
35 ${elog_entries}= Get Logging Entry List
36
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
99 Should Be Equal As Strings
100 ... ${elog["Severity"]} xyz.openbmc_project.Logging.Entry.Level.Error
101
102
103Logging Test Binary Exist
104 [Documentation] Verify existence of prerequisite logging-test.
105 Open Connection And Log In
106 ${out} ${stderr}= Execute Command
107 ... which /tmp/tarball/bin/logging-test return_stderr=True
108 Should Be Empty ${stderr}
109 Should Contain ${out} logging-test
110
111Clear Existing Error Logs
112 [Documentation] If error log isn't empty, reboot the BMC to clear the log.
113 ${resp}= OpenBMC Get Request ${BMC_LOGGING_ENTRY}${1}
114 Return From Keyword If ${resp.status_code} == ${HTTP_NOT_FOUND}
115 Initiate BMC Reboot
116 Wait Until Keyword Succeeds 10 min 10 sec
117 ... Is BMC Ready
118 ${resp}= OpenBMC Get Request ${BMC_LOGGING_ENTRY}${1}
119 Should Be Equal As Strings ${resp.status_code} ${HTTP_NOT_FOUND}
120
121Create Test Error Log
122 [Documentation] Generate test error log.
123 # Test error log entry example:
124 # "/xyz/openbmc_project/logging/entry/1": {
125 # "AdditionalData": [
126 # "STRING=FOO"
127 # ],
128 # "Id": 1,
129 # "Message": "example.xyz.openbmc_project.Example.Elog.AutoTestSimple",
130 # "Severity": "xyz.openbmc_project.Logging.Entry.Level.Error",
131 # "Timestamp": 1487743963328,
132 # "associations": []
133 # }
134
135 Execute Command On BMC /tmp/tarball/bin/logging-test -c AutoTestSimple
136
137Count Error Entries
138 [Documentation] Count Error entries.
139 ${resp}= OpenBMC Get Request ${BMC_LOGGING_ENTRY}
140 Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}
141 ${jsondata}= To JSON ${resp.content}
142 ${count}= Get Length ${jsondata["data"]}
143 [Return] ${count}
144
145Verify Test Error Log
146 [Documentation] Verify test error log entries.
147 ${elog_entry}= Get URL List ${BMC_LOGGING_ENTRY}
148 ${entry_id}= Read Attribute ${elog_entry[0]} Message
149 Should Be Equal ${entry_id}
150 ... example.xyz.openbmc_project.Example.Elog.AutoTestSimple
151 ${entry_id}= Read Attribute ${elog_entry[0]} Severity
152 Should Be Equal ${entry_id}
153 ... xyz.openbmc_project.Logging.Entry.Level.Error
154
155Delete Error Logs And Verify
156 [Documentation] Delete all error logs and verify.
157 Delete All Error Logs
158 ${resp}= OpenBMC Get Request ${BMC_LOGGING_ENTRY}/list quiet=${1}
159 Should Be Equal As Strings ${resp.status_code} ${HTTP_NOT_FOUND}
160
161
162Install Tarball
163 [Documentation] Install tarball on BMC.
164 Run Keyword If '${DEBUG_TARBALL_PATH}' == '${EMPTY}' Return From Keyword
165 BMC Execute Command rm -rf /tmp/tarball
166 Install Debug Tarball On BMC ${DEBUG_TARBALL_PATH}