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/${MANAGER_ID}/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    Wait Until Element Is Not Visible   ${xpath_page_loading_progress_bar}  timeout=30
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    Wait Until Element Is Not Visible   ${xpath_page_loading_progress_bar}  timeout=30
130
131    ${log_count}=  Get Text  ${xpath_warning_logs_count}
132    Should Be Equal As Integers  ${log_count}  1
133
134
135Verify View More Event Logs Button
136    [Documentation]  Verify view more event log button in overview page.
137    [Tags]  Verify_View_More_Event_Logs_Button
138
139    Generate Test Error Log
140    Page Should Contain Element  ${xpath_event_logs_view_more_button}  timeout=30
141    Click Element  ${xpath_event_logs_view_more_button}
142    Wait Until Page Contains Element  ${xpath_event_logs_heading}  timeout=30
143
144
145Verify Host Console Button In Overview Page
146    [Documentation]  Click host console button and verify page navigation to host console page.
147    [Tags]  Verify_Host_Console_Button_In_Overview_Page
148
149    Click Element  ${xpath_launch_host_console}
150    Wait Until Page Contains Element  ${xpath_host_console_heading}
151
152
153Verify Server LED Turn On
154    [Documentation]  Turn on server LED via GUI and verify its status via Redfish.
155    [Tags]  Verify_Server_LED_Turn_On
156
157    # Turn Off the server LED via Redfish and refresh GUI.
158    Set IndicatorLED State  Off
159    Refresh GUI
160
161    # Turn ON the LED via GUI.
162    Click Element  ${xpath_led_button}
163
164    # Cross check that server LED ON state via Redfish.
165    Verify Identify LED State Via Redfish  Lit
166
167
168Verify Server LED Turn Off
169    [Documentation]  Turn off server LED via GUI and verify its status via Redfish.
170    [Tags]  Verify_Server_LED_Turn_Off
171
172    # Turn On the server LED via Redfish and refresh GUI.
173    Set IndicatorLED State  Lit
174    Refresh GUI
175
176    # Turn OFF the LED via GUI.
177    Click Element At Coordinates  ${xpath_led_button}  0  0
178
179    # Cross check that server LED off state via Redfish.
180    Verify Identify LED State Via Redfish  Off
181
182
183Verify BMC Time In Overview Page
184    [Documentation]  Verify that BMC date from GUI matches with BMC time via Redfish.
185    [Tags]  Verify_BMC_Time_In_Overview_Page
186
187    ${date_time}=  Redfish.Get Attribute  ${REDFISH_BASE_URI}Managers/${MANAGER_ID}  DateTime
188    ${converted_date}=  Convert Date  ${date_time}  result_format=%Y-%m-%d
189
190    Page Should Contain  ${converted_date}
191
192
193Verify BMC Information At Host Power Off State
194    [Documentation]  Verify that BMC information is displayed at host power off state.
195    [Tags]  Verify_BMC_Information_At_Host_Power_Off_State
196
197    Redfish Power Off  stack_mode=skip
198    ${firmware_version}=  Redfish Get BMC Version
199    Page Should Contain  ${firmware_version}
200
201
202Verify View More Button For Dumps
203    [Documentation]  Verify view more button for dumps button in overview page.
204    [Tags]  Verify_View_More_Button_For_Dumps
205
206    Wait Until Page Contains Element  ${xpath_dumps_view_more_button}  timeout=30
207    Click Element  ${xpath_dumps_view_more_button}
208    Wait Until Page Contains Element  ${xpath_dumps_header}  timeout=30
209
210
211Verify View More Button Under Server Information Section
212    [Documentation]  Verify view more button under server information section in overview page.
213    [Tags]  Verify_View_More_Button_Under_Server_Information_Section
214
215    Wait Until Page Contains Element  ${xpath_server_information_view_more_button}  timeout=30
216    Click Element   ${xpath_server_information_view_more_button}
217    Wait Until Page Contains Element  ${xpath_inventory_and_leds_heading}  timeout=30
218
219
220Verify View More Button Under Firmware Information Section
221    [Documentation]  Verify view more button under firmware information section in overview page.
222    [Tags]  Verify_View_More_Button_Under_Firmware_Information_Section
223
224    Wait Until Page Contains Element  ${xpath_firmware_information_view_more_button}  timeout=30
225    Click Element  ${xpath_firmware_information_view_more_button}
226    Wait Until Page Contains Element  ${xpath_firmware_heading}  timeout=30
227
228
229Verify View More Button Under Network Information Section
230    [Documentation]  Verify view more button under network information section in overview page.
231    [Tags]  Verify_View_More_Button_Under_Network_Information_Section
232
233    Wait Until Page Contains Element  ${xpath_network_information_view_more_button}  timeout=30
234    Click Element  ${xpath_network_information_view_more_button}
235    Wait Until Page Contains Element  ${xpath_network_heading}  timeout=30
236
237
238Verify View More Button Under Power Information Section
239    [Documentation]  Verify view more button under power information section in overview page.
240    [Tags]  Verify_View_More_Button_Under_Power_Information_Section
241
242    Wait Until Page Contains Element  ${xpath_power_information_view_more_button}  timeout=30
243    Click Element  ${xpath_power_information_view_more_button}
244    Wait Until Page Contains Element  ${xpath_power_heading}  timeout=30
245
246
247Verify View More Button Under Event Logs Section
248    [Documentation]  Verify view more button under event logs section in overview page.
249    [Tags]  Verify_View_More_Button_Under_Event_Logs_Section
250
251    Wait Until Page Contains Element  ${xpath_event_logs_view_more_button}  timeout=30
252    Click Element  ${xpath_event_logs_view_more_button}
253    Wait Until Page Contains Element  ${xpath_event_logs_heading}  timeout=30
254
255
256Verify View More Button Under Inventory And LEDs Section
257    [Documentation]  Verify view more button under inventory and leds section in overview page.
258    [Tags]  Verify_View_More_Button_Under_Inventory_And_LEDs_Section
259
260    Wait Until Page Contains Element  ${xpath_inventory_and_leds_view_more_button}  timeout=30
261    Click Element  ${xpath_inventory_and_leds_view_more_button}
262    Wait Until Page Contains Element  ${xpath_inventory_and_leds_heading}  timeout=30
263
264
265Verify Text Under Server Information Section
266    [Documentation]  Verify text under server information section in overview page.
267    [Tags]  Verify_Text_Under_Server_Information_Section
268
269    Page Should Contain  Model
270    Page Should Contain  Operating mode
271    Page Should Contain  Serial number
272    Page Should Contain  Service login
273    Page Should Contain  Asset tag
274
275
276Verify Text Under Firmware Information Section
277    [Documentation]  Verify text under firmware information section in overview page.
278    [Tags]  Verify_Text_Under_Firmware_Information_Section
279
280    Page Should Contain  Running
281    Page Should Contain  Backup
282    Page Should Contain  Access key expiration
283
284
285Verify Text Under Network Information Section
286    [Documentation]  Verify text under network information section in overview page.
287    [Tags]  Verify_Text_Under_Network_Information_Section
288
289    Page Should Contain  Hostname
290    Page Should Contain  IPv4
291    Page Should Contain  DHCPv4
292
293
294Verify Text Under Power Information Section
295    [Documentation]  Verify text under power information section in overview page.
296    [Tags]  Verify_Text_Under_Power_Information_Section
297
298    Page Should Contain  Power consumption
299    Page Should Contain  Idle power saver
300    Page Should Contain  Power cap
301    Page Should Contain  Power mode
302
303
304Verify Text Under Event Logs Section
305    [Documentation]  Verify text under event logs section in overview page.
306    [Tags]  Verify_Text_Under_Event_Logs_Section
307
308    Page Should Contain  Critical
309    Page Should Contain  Warning
310
311
312Verify Text Under Inventory And LEDs Section
313    [Documentation]  Verify text under inventory and leds section in overview page.
314    [Tags]  Verify_Text_Under_Inventory_And_LEDs_Section
315
316    Page Should Contain  System identify LED
317
318
319Verify Text Under Dumps Section
320    [Documentation]  Verify text under Dumps section in overview page.
321    [Tags]  Verify_Text_Under_Dumps_Section
322
323    Page Should Contain  Total
324
325
326*** Keywords ***
327
328Test Setup Execution
329    [Documentation]  Do test case setup tasks.
330
331    Click Element  ${xpath_overview_menu}
332    Wait Until Page Contains Element  ${xpath_overview_page_header}
333    Wait Until Element Is Not Visible   ${xpath_page_loading_progress_bar}  timeout=30
334
335
336Verify Identify LED State Via Redfish
337    [Documentation]  Verify that Redfish identify LED system with given state.
338    [Arguments]  ${expected_state}
339    # Description of argument(s):
340    # expected_state    Expected value of Identify LED.
341
342    ${led_state}=  Redfish.Get Attribute  /redfish/v1/Systems/system  IndicatorLED
343    Should Be True  '${led_state}' == '${expected_state}'
344
345
346Set IndicatorLED State
347    [Documentation]  Perform redfish PATCH operation.
348    [Arguments]  ${led_state}  ${expect_resp_code}=[200, 204]
349    # Description of argument(s):
350    # led_state            IndicatorLED state to "off", "Lit" etc.
351    # expect_resp_code     Expected HTTPS response code. Default [200, 204]
352
353
354    Redfish.Patch  /redfish/v1/Systems/system  body={"IndicatorLED": "${led_state}"}
355    ...  valid_status_codes=${expect_resp_code}
356
357