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
31*** Test Cases ***
32
33Verify Existence Of All Sections In Overview Page
34    [Documentation]  Verify existence of all sections in Overview page.
35    [Tags]  Verify_Existence_Of_All_Sections_In_Overview_Page
36
37    Page Should Contain  BMC date and time
38    Page Should Contain  Firmware information
39    Page Should Contain  Server information
40    Wait Until Page Contains  Network information  timeout=10
41    Page Should Contain  Power information
42    Page Should Contain  Event logs
43    Page Should Contain  Inventory and LEDs
44    Page Should Contain  Dumps
45
46
47Verify Network Information In Overview Page
48    [Documentation]  Verify values under network information section.
49    [Tags]  Verify_Network_Information_In_Overview_Page
50
51    ${hostname}=  Get BMC Hostname
52    Page Should Contain  ${hostname}
53
54    # Get all IP addresses and prefix lengths on system.
55
56    ${resp}=  Redfish.Get Attribute  /redfish/v1/Managers/bmc/EthernetInterfaces/eth0  IPv4StaticAddresses
57    ${ip_addr}=  Set Variable  ${resp[0]['Address']}
58    Page Should Contain  ${ip_addr}
59
60
61Verify Server Information Section
62    [Documentation]  Verify values under server information section in overview page.
63    [Tags]  Verify_Server_Information_Section
64
65    ${redfish_machine_model}=  Redfish.Get Attribute  /redfish/v1/Systems/system/  Model
66    Page Should Contain  ${redfish_machine_model}
67
68    ${redfish_serial_number}=  Redfish.Get Attribute  /redfish/v1/Systems/system/  SerialNumber
69    Page Should Contain  ${redfish_serial_number}
70
71    ${redfish_motherboard_manufacturer}=  Redfish.Get Attribute
72    ...  /redfish/v1/Systems/system/  Manufacturer
73
74    Page Should Contain  ${redfish_motherboard_manufacturer}
75
76
77Verify BMC Information Section
78    [Documentation]  Verify BMC information section in overview page.
79    [Tags]  Verify_BMC_Information_Section
80
81    ${firmware_version}=  Redfish Get BMC Version
82    Page Should Contain  ${firmware_version}
83
84
85Verify Edit Network Setting Button
86    [Documentation]  Verify navigation to network setting page after clicking the button in overview page.
87    [Tags]  Verify_Edit_Network_Setting_Button
88
89    Click Element  ${xpath_network_information_view_more_button}
90    Wait Until Page Contains Element  ${xpath_network_heading}
91
92
93Verify Event Under Critical Event Logs Section
94    [Documentation]  Verify event under critical event logs section in case of any event.
95    [Tags]  Verify_Event_Under_Critical_Event_Logs_Section
96    [Teardown]  Redfish Purge Event Log
97
98    Redfish Purge Event Log
99    Click Element  ${xpath_refresh_button}
100    Generate Test Error Log
101    Click Element  ${xpath_refresh_button}
102
103    ${log_count}=  Get Text  ${xpath_critical_logs_count}
104    Should Be True  '${log_count}' == '${1}'
105
106
107Verify View More Event Logs Button
108    [Documentation]  Verify view more event log button in overview page.
109    [Tags]  Verify_View_More_Event_Logs_Button
110
111    Generate Test Error Log
112    Page Should Contain Element  ${xpath_event_logs_view_more_button}  timeout=30
113    Click Element  ${xpath_event_logs_view_more_button}
114    Wait Until Page Contains Element  ${xpath_event_logs_heading}  timeout=30
115
116
117Verify Host Console Button In Overview Page
118    [Documentation]  Click host console button and verify page navigation to host console page.
119    [Tags]  Verify_Host_Console_Button_In_Overview_Page
120
121    Click Element  ${xpath_launch_host_console}
122    Wait Until Page Contains Element  ${xpath_host_console_heading}
123
124
125Verify Server LED Turn On
126    [Documentation]  Turn on server LED via GUI and verify its status via Redfish.
127    [Tags]  Verify_Server_LED_Turn_On
128
129    # Turn Off the server LED via Redfish and refresh GUI.
130    Set IndicatorLED State  Off
131    Refresh GUI
132
133    # Turn ON the LED via GUI.
134    Click Element  ${xpath_led_button}
135
136    # Cross check that server LED ON state via Redfish.
137    Verify Identify LED State Via Redfish  Lit
138
139
140Verify Server LED Turn Off
141    [Documentation]  Turn off server LED via GUI and verify its status via Redfish.
142    [Tags]  Verify_Server_LED_Turn_Off
143
144    # Turn On the server LED via Redfish and refresh GUI.
145    Set IndicatorLED State  Lit
146    Refresh GUI
147
148    # Turn OFF the LED via GUI.
149    Click Element At Coordinates  ${xpath_led_button}  0  0
150
151    # Cross check that server LED off state via Redfish.
152    Verify Identify LED State Via Redfish  Off
153
154
155Verify BMC Time In Overview Page
156    [Documentation]  Verify that BMC date from GUI matches with BMC time via Redfish.
157    [Tags]  Verify_BMC_Time_In_Overview_Page
158
159    ${date_time}=  Redfish.Get Attribute  ${REDFISH_BASE_URI}Managers/bmc  DateTime
160    ${converted_date}=  Convert Date  ${date_time}  result_format=%Y-%m-%d
161
162    Page Should Contain  ${converted_date}
163
164
165Verify BMC Information At Host Power Off State
166    [Documentation]  Verify that BMC information is displayed at host power off state.
167    [Tags]  Verify_BMC_Information_At_Host_Power_Off_State
168
169    Redfish Power Off  stack_mode=skip
170    ${firmware_version}=  Redfish Get BMC Version
171    Page Should Contain  ${firmware_version}
172
173
174Verify View More Button For Dumps
175    [Documentation]  Verify view more button for dumps button in overview page.
176    [Tags]  Verify_View_More_Button_For_Dumps
177
178    Wait Until Page Contains Element  ${xpath_dumps_view_more_button}  timeout=30
179    Click Element  ${xpath_dumps_view_more_button}
180    Wait Until Page Contains Element  ${xpath_dumps_header}  timeout=30
181
182
183Verify View More Button Under Server Information Section
184    [Documentation]  Verify view more button under server information section in overview page.
185    [Tags]  Verify_View_More_Button_Under_Server_Information_Section
186
187    Wait Until Page Contains Element  ${xpath_server_information_view_more_button}  timeout=30
188    Click Element   ${xpath_server_information_view_more_button}
189    Wait Until Page Contains Element  ${xpath_inventory_and_leds_heading}  timeout=30
190
191
192Verify View More Button Under Firmware Information Section
193    [Documentation]  Verify view more button under firmware information section in overview page.
194    [Tags]  Verify_View_More_Button_Under_Firmware_Information_Section
195
196    Wait Until Page Contains Element  ${xpath_firmware_information_view_more_button}  timeout=30
197    Click Element  ${xpath_firmware_information_view_more_button}
198    Wait Until Page Contains Element  ${xpath_firmware_heading}  timeout=30
199
200
201Verify View More Button Under Network Information Section
202    [Documentation]  Verify view more button under network information section in overview page.
203    [Tags]  Verify_View_More_Button_Under_Network_Information_Section
204
205    Wait Until Page Contains Element  ${xpath_network_information_view_more_button}  timeout=30
206    Click Element  ${xpath_network_information_view_more_button}
207    Wait Until Page Contains Element  ${xpath_network_heading}  timeout=30
208
209
210Verify View More Button Under Power Information Section
211    [Documentation]  Verify view more button under power information section in overview page.
212    [Tags]  Verify_View_More_Button_Under_Power_Information_Section
213
214    Wait Until Page Contains Element  ${xpath_power_information_view_more_button}  timeout=30
215    Click Element  ${xpath_power_information_view_more_button}
216    Wait Until Page Contains Element  ${xpath_power_heading}  timeout=30
217
218
219Verify View More Button Under Event Logs Section
220    [Documentation]  Verify view more button under event logs section in overview page.
221    [Tags]  Verify_View_More_Button_Under_Event_Logs_Section
222
223    Wait Until Page Contains Element  ${xpath_event_logs_view_more_button}  timeout=30
224    Click Element  ${xpath_event_logs_view_more_button}
225    Wait Until Page Contains Element  ${xpath_event_logs_heading}  timeout=30
226
227
228Verify View More Button Under Inventory And LEDs Section
229    [Documentation]  Verify view more button under inventory and leds section in overview page.
230    [Tags]  Verify_View_More_Button_Under_Inventory_And_LEDs_Section
231
232    Wait Until Page Contains Element  ${xpath_inventory_and_leds_view_more_button}  timeout=30
233    Click Element  ${xpath_inventory_and_leds_view_more_button}
234    Wait Until Page Contains Element  ${xpath_inventory_and_leds_heading}  timeout=30
235
236
237*** Keywords ***
238
239Test Setup Execution
240    [Documentation]  Do test case setup tasks.
241
242    Click Element  ${xpath_overview_menu}
243    Wait Until Page Contains Element  ${xpath_overview_page_header}
244    Wait Until Element Is Not Visible   ${xpath_page_loading_progress_bar}  timeout=30
245
246
247Verify Identify LED State Via Redfish
248    [Documentation]  Verify that Redfish identify LED system with given state.
249    [Arguments]  ${expected_state}
250    # Description of argument(s):
251    # expected_state    Expected value of Identify LED.
252
253    ${led_state}=  Redfish.Get Attribute  /redfish/v1/Systems/system  IndicatorLED
254    Should Be True  '${led_state}' == '${expected_state}'
255
256
257Set IndicatorLED State
258    [Documentation]  Perform redfish PATCH operation.
259    [Arguments]  ${led_state}  ${expect_resp_code}=[200, 204]
260    # Description of argument(s):
261    # led_state            IndicatorLED state to "off", "Lit" etc.
262    # expect_resp_code     Expected HTTPS response code. Default [200, 204]
263
264
265    Redfish.Patch  /redfish/v1/Systems/system  body={"IndicatorLED": "${led_state}"}
266    ...  valid_status_codes=${expect_resp_code}
267
268