1*** Settings ***
2
3Documentation  Test OpenBMC GUI "Overview" menu.
4
5Resource        ../../lib/gui_resource.robot
6Resource        ../../../lib/logging_utils.robot
7Resource        ../../../lib/list_utils.robot
8Resource        ../../../lib/bmc_network_utils.robot
9
10Library         String
11
12Suite Setup     Run Keywords  Launch Browser And Login GUI  AND  Redfish.Login
13Suite Teardown  Run Keywords  Close Browser  AND  Redfish.Logout
14Test Setup      Test Setup Execution
15
16
17*** Variables ***
18
19${xpath_overview_page_header}                    //h1[contains(text(), "Overview")]
20${xpath_server_information_view_more_button}     (//*[text()="View more"])[1]
21${xpath_firmware_information_view_more_button}   (//*[text()="View more"])[2]
22${xpath_network_information_view_more_button}    (//*[text()="View more"])[3]
23${xpath_power_information_view_more_button}      (//*[text()="View more"])[4]
24${xpath_event_logs_view_more_button}             (//*[text()="View more"])[5]
25${xpath_inventory_and_leds_view_more_button}     (//*[text()="View more"])[6]
26${xpath_launch_host_console}                     //*[@data-test-id='overviewQuickLinks-button-solConsole']
27${xpath_led_button}                              //*[@data-test-id='overviewInventory-checkbox-identifyLed']
28${xpath_dumps_view_more_button}                  (//*[text()="View more"])[7]
29${xpath_critical_logs_count}                     //dt[contains(text(),'Critical')]/following-sibling::dd[1]
30${xpath_warning_logs_count}                      //dt[contains(text(),'Warning')]/following-sibling::dd[1]
31${xpath_asset_tag}                               //dt[contains(text(),'Asset tag')]/following-sibling::dd[1]
32${xpath_operating_mode}                          //dt[contains(text(),'Operating mode')]/following-sibling::dd[1]
33${xpath_machine_model}                           //dt[contains(text(),'Model')]/following-sibling::dd[1]
34${xpath_serial_number}                           //dt[contains(text(),'Serial number')]/following-sibling::dd[1]
35
36*** Test Cases ***
37
38Verify Existence Of All Sections In Overview Page
39    [Documentation]  Verify existence of all sections in Overview page.
40    [Tags]  Verify_Existence_Of_All_Sections_In_Overview_Page
41
42    Page Should Contain  BMC date and time
43    Page Should Contain  Firmware information
44    Page Should Contain  Server information
45    Wait Until Page Contains  Network information  timeout=10
46    Page Should Contain  Power information
47    Page Should Contain  Event logs
48    Page Should Contain  Inventory and LEDs
49    Page Should Contain  Dumps
50
51
52Verify Network Information In Overview Page
53    [Documentation]  Verify values under network information section.
54    [Tags]  Verify_Network_Information_In_Overview_Page
55
56    ${hostname}=  Get BMC Hostname
57    Page Should Contain  ${hostname}
58
59    # Get all IP addresses and prefix lengths on system.
60
61    ${resp}=  Redfish.Get Attribute  /redfish/v1/Managers/bmc/EthernetInterfaces/eth0  IPv4StaticAddresses
62    ${ip_addr}=  Set Variable  ${resp[0]['Address']}
63    Page Should Contain  ${ip_addr}
64
65
66Verify Server Information Section
67    [Documentation]  Verify values under server information section in overview page.
68    [Tags]  Verify_Server_Information_Section
69
70    # Model.
71    ${redfish_machine_model}=  Redfish.Get Attribute  ${SYSTEM_BASE_URI}  Model
72    Element Should Contain  ${xpath_machine_model}  ${redfish_machine_model}
73
74    # Serial Number.
75    ${redfish_serial_number}=  Redfish.Get Attribute  ${SYSTEM_BASE_URI}  SerialNumber
76    Element Should Contain  ${xpath_serial_number}  ${redfish_serial_number}
77
78    # Asset Tag.
79    ${redfish_asset_tag}=  Redfish.Get Attribute  ${SYSTEM_BASE_URI}  AssetTag
80    Element Should Contain  ${xpath_asset_tag}  ${redfish_asset_tag}
81
82    # Operating mode.
83    ${redfish_operating_mode}=  Redfish.Get Attribute  ${BIOS_ATTR_URI}  Attributes
84    Element Should Contain  ${xpath_operating_mode}  ${redfish_operating_mode['pvm_system_operating_mode']}
85
86
87Verify BMC Information Section
88    [Documentation]  Verify BMC information section in overview page.
89    [Tags]  Verify_BMC_Information_Section
90
91    ${firmware_version}=  Redfish Get BMC Version
92    Page Should Contain  ${firmware_version}
93
94
95Verify Edit Network Setting Button
96    [Documentation]  Verify navigation to network setting page after clicking the button in overview page.
97    [Tags]  Verify_Edit_Network_Setting_Button
98
99    Click Element  ${xpath_network_information_view_more_button}
100    Wait Until Page Contains Element  ${xpath_network_heading}
101
102
103Verify Event Under Critical Event Logs Section
104    [Documentation]  Verify event under critical event logs section in case of any event.
105    [Tags]  Verify_Event_Under_Critical_Event_Logs_Section
106    [Teardown]  Redfish Purge Event Log
107
108    Redfish Purge Event Log
109    Click Element  ${xpath_refresh_button}
110    Generate Test Error Log
111    Click Element  ${xpath_refresh_button}
112
113    ${log_count}=  Get Text  ${xpath_critical_logs_count}
114    Should Be True  '${log_count}' == '${1}'
115
116
117Verify Event Under Warning Event Logs Section
118    [Documentation]  Verify event under warning event logs section in case of any event.
119    [Tags]  Verify_Event_Under_Warning_Event_Logs_Section
120    [Teardown]  Redfish Purge Event Log
121
122    Redfish Purge Event Log
123    Click Element  ${xpath_refresh_button}
124
125    # Generate a predictable error for testing purpose.
126    BMC Execute Command  ${CMD_PREDICTIVE_ERROR}
127
128    Click Element  ${xpath_refresh_button}
129
130    ${log_count}=  Get Text  ${xpath_warning_logs_count}
131    Should Be Equal As Integers  ${log_count}  1
132
133
134Verify View More Event Logs Button
135    [Documentation]  Verify view more event log button in overview page.
136    [Tags]  Verify_View_More_Event_Logs_Button
137
138    Generate Test Error Log
139    Page Should Contain Element  ${xpath_event_logs_view_more_button}  timeout=30
140    Click Element  ${xpath_event_logs_view_more_button}
141    Wait Until Page Contains Element  ${xpath_event_logs_heading}  timeout=30
142
143
144Verify Host Console Button In Overview Page
145    [Documentation]  Click host console button and verify page navigation to host console page.
146    [Tags]  Verify_Host_Console_Button_In_Overview_Page
147
148    Click Element  ${xpath_launch_host_console}
149    Wait Until Page Contains Element  ${xpath_host_console_heading}
150
151
152Verify Server LED Turn On
153    [Documentation]  Turn on server LED via GUI and verify its status via Redfish.
154    [Tags]  Verify_Server_LED_Turn_On
155
156    # Turn Off the server LED via Redfish and refresh GUI.
157    Set IndicatorLED State  Off
158    Refresh GUI
159
160    # Turn ON the LED via GUI.
161    Click Element  ${xpath_led_button}
162
163    # Cross check that server LED ON state via Redfish.
164    Verify Identify LED State Via Redfish  Lit
165
166
167Verify Server LED Turn Off
168    [Documentation]  Turn off server LED via GUI and verify its status via Redfish.
169    [Tags]  Verify_Server_LED_Turn_Off
170
171    # Turn On the server LED via Redfish and refresh GUI.
172    Set IndicatorLED State  Lit
173    Refresh GUI
174
175    # Turn OFF the LED via GUI.
176    Click Element At Coordinates  ${xpath_led_button}  0  0
177
178    # Cross check that server LED off state via Redfish.
179    Verify Identify LED State Via Redfish  Off
180
181
182Verify BMC Time In Overview Page
183    [Documentation]  Verify that BMC date from GUI matches with BMC time via Redfish.
184    [Tags]  Verify_BMC_Time_In_Overview_Page
185
186    ${date_time}=  Redfish.Get Attribute  ${REDFISH_BASE_URI}Managers/bmc  DateTime
187    ${converted_date}=  Convert Date  ${date_time}  result_format=%Y-%m-%d
188
189    Page Should Contain  ${converted_date}
190
191
192Verify BMC Information At Host Power Off State
193    [Documentation]  Verify that BMC information is displayed at host power off state.
194    [Tags]  Verify_BMC_Information_At_Host_Power_Off_State
195
196    Redfish Power Off  stack_mode=skip
197    ${firmware_version}=  Redfish Get BMC Version
198    Page Should Contain  ${firmware_version}
199
200
201Verify View More Button For Dumps
202    [Documentation]  Verify view more button for dumps button in overview page.
203    [Tags]  Verify_View_More_Button_For_Dumps
204
205    Wait Until Page Contains Element  ${xpath_dumps_view_more_button}  timeout=30
206    Click Element  ${xpath_dumps_view_more_button}
207    Wait Until Page Contains Element  ${xpath_dumps_header}  timeout=30
208
209
210Verify View More Button Under Server Information Section
211    [Documentation]  Verify view more button under server information section in overview page.
212    [Tags]  Verify_View_More_Button_Under_Server_Information_Section
213
214    Wait Until Page Contains Element  ${xpath_server_information_view_more_button}  timeout=30
215    Click Element   ${xpath_server_information_view_more_button}
216    Wait Until Page Contains Element  ${xpath_inventory_and_leds_heading}  timeout=30
217
218
219Verify View More Button Under Firmware Information Section
220    [Documentation]  Verify view more button under firmware information section in overview page.
221    [Tags]  Verify_View_More_Button_Under_Firmware_Information_Section
222
223    Wait Until Page Contains Element  ${xpath_firmware_information_view_more_button}  timeout=30
224    Click Element  ${xpath_firmware_information_view_more_button}
225    Wait Until Page Contains Element  ${xpath_firmware_heading}  timeout=30
226
227
228Verify View More Button Under Network Information Section
229    [Documentation]  Verify view more button under network information section in overview page.
230    [Tags]  Verify_View_More_Button_Under_Network_Information_Section
231
232    Wait Until Page Contains Element  ${xpath_network_information_view_more_button}  timeout=30
233    Click Element  ${xpath_network_information_view_more_button}
234    Wait Until Page Contains Element  ${xpath_network_heading}  timeout=30
235
236
237Verify View More Button Under Power Information Section
238    [Documentation]  Verify view more button under power information section in overview page.
239    [Tags]  Verify_View_More_Button_Under_Power_Information_Section
240
241    Wait Until Page Contains Element  ${xpath_power_information_view_more_button}  timeout=30
242    Click Element  ${xpath_power_information_view_more_button}
243    Wait Until Page Contains Element  ${xpath_power_heading}  timeout=30
244
245
246Verify View More Button Under Event Logs Section
247    [Documentation]  Verify view more button under event logs section in overview page.
248    [Tags]  Verify_View_More_Button_Under_Event_Logs_Section
249
250    Wait Until Page Contains Element  ${xpath_event_logs_view_more_button}  timeout=30
251    Click Element  ${xpath_event_logs_view_more_button}
252    Wait Until Page Contains Element  ${xpath_event_logs_heading}  timeout=30
253
254
255Verify View More Button Under Inventory And LEDs Section
256    [Documentation]  Verify view more button under inventory and leds section in overview page.
257    [Tags]  Verify_View_More_Button_Under_Inventory_And_LEDs_Section
258
259    Wait Until Page Contains Element  ${xpath_inventory_and_leds_view_more_button}  timeout=30
260    Click Element  ${xpath_inventory_and_leds_view_more_button}
261    Wait Until Page Contains Element  ${xpath_inventory_and_leds_heading}  timeout=30
262
263
264Verify Text Under Server Information Section
265    [Documentation]  Verify text under server information section in overview page.
266    [Tags]  Verify_Text_Under_Server_Information_Section
267
268    Page Should Contain  Model
269    Page Should Contain  Operating mode
270    Page Should Contain  Serial number
271    Page Should Contain  Service login
272    Page Should Contain  Asset tag
273
274
275Verify Text Under Firmware Information Section
276    [Documentation]  Verify text under firmware information section in overview page.
277    [Tags]  Verify_Text_Under_Firmware_Information_Section
278
279    Page Should Contain  Running
280    Page Should Contain  Backup
281    Page Should Contain  Access key expiration
282
283
284Verify Text Under Network Information Section
285    [Documentation]  Verify text under network information section in overview page.
286    [Tags]  Verify_Text_Under_Network_Information_Section
287
288    Page Should Contain  Hostname
289    Page Should Contain  IPv4
290    Page Should Contain  DHCPv4
291
292
293Verify Text Under Power Information Section
294    [Documentation]  Verify text under power information section in overview page.
295    [Tags]  Verify_Text_Under_Power_Information_Section
296
297    Page Should Contain  Power consumption
298    Page Should Contain  Idle power saver
299    Page Should Contain  Power cap
300    Page Should Contain  Power mode
301
302
303Verify Text Under Event Logs Section
304    [Documentation]  Verify text under event logs section in overview page.
305    [Tags]  Verify_Text_Under_Event_Logs_Section
306
307    Page Should Contain  Critical
308    Page Should Contain  Warning
309
310
311Verify Text Under Inventory And LEDs Section
312    [Documentation]  Verify text under inventory and leds section in overview page.
313    [Tags]  Verify_Text_Under_Inventory_And_LEDs_Section
314
315    Page Should Contain  System identify LED
316
317
318Verify Text Under Dumps Section
319    [Documentation]  Verify text under Dumps section in overview page.
320    [Tags]  Verify_Text_Under_Dumps_Section
321
322    Page Should Contain  Total
323
324
325*** Keywords ***
326
327Test Setup Execution
328    [Documentation]  Do test case setup tasks.
329
330    Click Element  ${xpath_overview_menu}
331    Wait Until Page Contains Element  ${xpath_overview_page_header}
332    Wait Until Element Is Not Visible   ${xpath_page_loading_progress_bar}  timeout=30
333
334
335Verify Identify LED State Via Redfish
336    [Documentation]  Verify that Redfish identify LED system with given state.
337    [Arguments]  ${expected_state}
338    # Description of argument(s):
339    # expected_state    Expected value of Identify LED.
340
341    ${led_state}=  Redfish.Get Attribute  /redfish/v1/Systems/system  IndicatorLED
342    Should Be True  '${led_state}' == '${expected_state}'
343
344
345Set IndicatorLED State
346    [Documentation]  Perform redfish PATCH operation.
347    [Arguments]  ${led_state}  ${expect_resp_code}=[200, 204]
348    # Description of argument(s):
349    # led_state            IndicatorLED state to "off", "Lit" etc.
350    # expect_resp_code     Expected HTTPS response code. Default [200, 204]
351
352
353    Redfish.Patch  /redfish/v1/Systems/system  body={"IndicatorLED": "${led_state}"}
354    ...  valid_status_codes=${expect_resp_code}
355
356