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_edit_network_settings_button}  (//*[text()="View more"])[3]
21${view_all_event_logs}                 (//*[text()="View more"])[5]
22${xpath_launch_host_console}           //*[@data-test-id='overviewQuickLinks-button-solConsole']
23${xpath_led_button}                    //*[@data-test-id='overviewInventory-checkbox-identifyLed']
24${view_all_Dumps}                      (//*[text()="View more"])[7]
25
26*** Test Cases ***
27
28Verify Existence Of All Sections In Overview Page
29    [Documentation]  Verify existence of all sections in Overview page.
30    [Tags]  Verify_Existence_Of_All_Sections_In_Overview_Page
31
32    Page Should Contain  BMC date and time
33    Page Should Contain  Firmware information
34    Page Should Contain  Server information
35    Wait Until Page Contains  Network information  timeout=10
36    Page Should Contain  Power information
37    Page Should Contain  Event logs
38    Page Should Contain  Inventory and LEDs
39    Page Should Contain  Dumps
40
41
42Verify Network Information In Overview Page
43    [Documentation]  Verify values under network information section.
44    [Tags]  Verify_Network_Information_In_Overview_Page
45
46    ${hostname}=  Get BMC Hostname
47    Page Should Contain  ${hostname}
48
49    # Get all IP addresses and prefix lengths on system.
50
51    ${ip_addr_list}=  Get BMC IP Info
52    FOR  ${ip_address}  IN  @{ip_addr_list}
53      ${ip}=  Fetch From Left  ${ip_address}  \/
54      Page Should Contain  ${ip}
55    END
56
57
58Verify Server Information Section
59    [Documentation]  Verify values under server information section in overview page.
60    [Tags]  Verify_Server_Information_Section
61
62    ${redfish_machine_model}=  Redfish.Get Attribute  /redfish/v1/Systems/system/  Model
63    Page Should Contain  ${redfish_machine_model}
64
65    ${redfish_serial_number}=  Redfish.Get Attribute  /redfish/v1/Systems/system/  SerialNumber
66    Page Should Contain  ${redfish_serial_number}
67
68    ${redfish_motherboard_manufacturer}=  Redfish.Get Attribute
69    ...  /redfish/v1/Systems/system/  Manufacturer
70
71    Page Should Contain  ${redfish_motherboard_manufacturer}
72
73
74Verify BMC Information Section
75    [Documentation]  Verify BMC information section in overview page.
76    [Tags]  Verify_BMC_Information_Section
77
78    ${firmware_version}=  Redfish Get BMC Version
79    Page Should Contain  ${firmware_version}
80
81
82Verify Edit Network Setting Button
83    [Documentation]  Verify navigation to network setting page after clicking the button in overview page.
84    [Tags]  Verify_Edit_Network_Setting_Button
85
86    Click Element  ${xpath_edit_network_settings_button}
87    Wait Until Page Contains Element  ${xpath_network_page_header}
88
89
90Verify Event Under High Priority Events Section
91    [Documentation]  Verify event under high priority events section in case of any event.
92    [Tags]  Verify_Event_Under_High_Priority_Events_Section
93
94    Redfish Purge Event Log
95    Click Element  ${xpath_refresh_button}
96    Generate Test Error Log
97    Click Element  ${xpath_refresh_button}
98    Wait Until Page Contains  xyz.openbmc_project.Common.Error.InternalFailure  timeout=30s
99
100
101Verify View All Event Logs Button
102    [Documentation]  Verify view all event log button in overview page.
103    [Tags]  Verify_View_All_Event_Logs_Button
104
105    Generate Test Error Log
106    Page Should Contain Element  ${view_all_event_logs}  timeout=30
107    Click Element  ${view_all_event_logs}
108    Wait Until Page Contains Element  ${xpath_event_header}  timeout=30
109
110
111Verify Host Console Button In Overview Page
112    [Documentation]  Click host console button and verify page navigation to host console page.
113    [Tags]  Verify_Host_Console_Button_In_Overview_Page
114
115    Click Element  ${xpath_launch_host_console}
116    Wait Until Page Contains Element  ${xpath_host_console_heading}
117
118
119Verify Server LED Turn On
120    [Documentation]  Turn on server LED via GUI and verify its status via Redfish.
121    [Tags]  Verify_Server_LED_Turn_On
122
123    # Turn Off the server LED via Redfish and refresh GUI.
124    Set IndicatorLED State  Off
125
126    Refresh GUI
127
128    # Turn ON the LED via GUI.
129    Click Element At Coordinates  ${xpath_led_button}  0  0
130
131    # Cross check that server LED ON state via Redfish.
132    Verify Identify LED State Via Redfish  Lit
133
134
135Verify Server LED Turn Off
136    [Documentation]  Turn off server LED via GUI and verify its status via Redfish.
137    [Tags]  Verify_Server_LED_Turn_Off
138
139    # Turn On the server LED via Redfish and refresh GUI.
140    Set IndicatorLED State  Lit
141    Refresh GUI
142
143    # Turn OFF the LED via GUI.
144    Click Element At Coordinates  ${xpath_led_button}  0  0
145
146    # Cross check that server LED off state via Redfish.
147    Verify Identify LED State Via Redfish  Off
148
149
150Verify BMC Time In Overview Page
151    [Documentation]  Verify that BMC date from GUI matches with BMC time via Redfish.
152    [Tags]  Verify_BMC_Time_In_Overview_Page
153
154    ${date_time}=  Redfish.Get Attribute  ${REDFISH_BASE_URI}Managers/bmc  DateTime
155    ${converted_date}=  Convert Date  ${date_time}  result_format=%Y-%m-%d
156
157    Page Should Contain  ${converted_date}
158
159
160Verify BMC Information At Host Power Off State
161    [Documentation]  Verify that BMC information is displayed at host power off state.
162    [Tags]  Verify_BMC_Information_At_Host_Power_Off_State
163
164    Redfish Power Off  stack_mode=skip
165    ${firmware_version}=  Redfish Get BMC Version
166    Page Should Contain  ${firmware_version}
167
168
169Verify View More Button For Dumps
170    [Documentation]  Verify view more button for dumps button in overview page.
171    [Tags]  Verify_View_More_Button_For_Dumps
172
173    Wait Until Page Contains Element  ${view_all_Dumps}  timeout=30
174    Click Element  ${view_all_Dumps}
175    Wait Until Page Contains Element  ${xpath_dumps_header}   timeout=30
176
177*** Keywords ***
178
179Test Setup Execution
180    [Documentation]  Do test case setup tasks.
181
182    Click Element  ${xpath_overview_menu}
183    Wait Until Page Contains Element  ${xpath_overview_page_header}
184    Wait Until Element Is Not Visible   ${xpath_page_loading_progress_bar}  timeout=30
185
186
187Verify Identify LED State Via Redfish
188    [Documentation]  Verify that Redfish identify LED system with given state.
189    [Arguments]  ${expected_state}
190    # Description of argument(s):
191    # expected_state    Expected value of Identify LED.
192
193    # Python module:  get_member_list(resource_path)
194    ${systems}=  Redfish_Utils.Get Member List  /redfish/v1/Systems
195    FOR  ${system}  IN  @{systems}
196        ${led_value}=  Redfish.Get Attribute  ${system}  IndicatorLED
197        Should Be True  '${led_value}' == '${expected_state}'
198    END
199
200
201Set IndicatorLED State
202    [Documentation]  Perform redfish PATCH operation.
203    [Arguments]  ${led_state}  ${expect_resp_code}=[200, 204]
204    # Description of argument(s):
205    # led_state            IndicatorLED state to "off", "Lit" etc.
206    # expect_resp_code     Expected HTTPS response code. Default [200, 204]
207
208    # Python module:  get_member_list(resource_path)
209    ${systems}=  Redfish_Utils.Get Member List  /redfish/v1/Systems
210    FOR  ${system}  IN  @{systems}
211        Redfish.Patch  ${system}  body={"IndicatorLED":${led_state}}   valid_status_codes=${expect_resp_code}
212    END
213