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