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