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     Launch Browser And Login GUI
13Suite Teardown  Close Browser
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_serial_over_lan}        //*[@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 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
41Verify Network Information In Overview Page
42    [Documentation]  Verify values under network information section.
43    [Tags]  Verify_Network_Information_In_Overview_Page
44
45    ${hostname}=  Get BMC Hostname
46    Page Should Contain  ${hostname}
47
48    # Get all IP addresses and prefix lengths on system.
49
50    ${ip_addr_list}=  Get BMC IP Info
51    FOR  ${ip_address}  IN  @{ip_addr_list}
52      ${ip}=  Fetch From Left  ${ip_address}  \/
53      Page Should Contain  ${ip}
54    END
55
56    ${macaddr}=  Get BMC MAC Address
57    Page Should Contain  ${macaddr}
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_page_header}
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_header}  timeout=30
111
112
113Verify Serial Over LAN Console Button In Overview Page
114    [Documentation]  Click serial over LAN button and verify page navigation to serial over LAN page.
115    [Tags]  Verify_Serial_Over_LAN_Console_Button_In_Overview_Page
116
117    Click Element  ${xpath_launch_serial_over_lan}
118    Wait Until Page Contains Element  ${xpath_sol_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*** Keywords ***
180
181Test Setup Execution
182    [Documentation]  Do test case setup tasks.
183
184    Click Element  ${xpath_overview_menu}
185    Wait Until Page Contains Element  ${xpath_overview_page_header}
186
187
188Verify Identify LED State Via Redfish
189    [Documentation]  Verify that Redfish identify LED system with given state.
190    [Arguments]  ${expected_state}
191    # Description of argument(s):
192    # expected_state    Expected value of Identify LED.
193
194    # Python module:  get_member_list(resource_path)
195    ${systems}=  Redfish_Utils.Get Member List  /redfish/v1/Systems
196    FOR  ${system}  IN  @{systems}
197        ${led_value}=  Redfish.Get Attribute  ${system}  IndicatorLED
198        Should Be True  '${led_value}' == '${expected_state}'
199    END
200
201
202Set IndicatorLED State
203    [Documentation]  Perform redfish PATCH operation.
204    [Arguments]  ${led_state}  ${expect_resp_code}=[200, 204]
205    # Description of argument(s):
206    # led_state            IndicatorLED state to "off", "Lit" etc.
207    # expect_resp_code     Expected HTTPS response code. Default [200, 204]
208
209    # Python module:  get_member_list(resource_path)
210    ${systems}=  Redfish_Utils.Get Member List  /redfish/v1/Systems
211    FOR  ${system}  IN  @{systems}
212        Redfish.Patch  ${system}  body={"IndicatorLED":${led_state}}   valid_status_codes=${expect_resp_code}
213    END
214