blob: bb8606174de6e3f1bf7bd745cb97b37544065346 [file] [log] [blame]
*** Settings ***
Documentation Test OpenBMC GUI "SNMP Alerts" sub-menu of "Settings".
Resource ../../../lib/snmp/redfish_snmp_utils.robot
Resource ../../../lib/snmp/resource.robot
Resource ../../lib/gui_resource.robot
Resource ../../lib/bmc_network_utils.robot
Suite Setup Suite Setup Execution
Suite Teardown Close Browser
Suite Teardown Run Keywords Redfish.Logout AND Close Browser
*** Variables ***
${xpath_snmp_alerts_sub_menu} //*[@data-test-id='nav-item-snmp-alerts']
${xpath_snmp_alerts_heading} //h1[text()="SNMP alerts"]
${xpath_select_all_snmp} //*[@data-test-id='snmpAlerts-checkbox-selectAll']
${xpath_add_destination} //button[contains(text(),'Add destination')]
${xpath_snmp_alert_destination_heading} //h5[contains(text(),'Add SNMP alert destination')]
${xpath_ip_address_input_button} //*[@data-test-id='snmpAlerts-input-ipAddress']
${xpath_port_optional_input_button} //*[@data-test-id='snmpAlerts-input-port']
${xpath_snmp_add_destination_button} //*[@data-test-id='snmpAlerts-button-ok']
${xpath_cancel_button} //button[contains(text(),'Cancel')]
${xpath_delete_button} //*[@data-test-id='snmpAlerts-button-deleteRow-undefined']
${xpath_delete_destination} //button[contains(text(),'Delete destination')]
${snmp_page_heading} SNMP alerts
${invalid_port_error} Value must be between 0 65535
${invalid_destination_error} Error in adding SNMP alert destination
${invalid_ip_error} Field required
${dns_server} 10.10.10.10
*** Test Cases ***
Verify Navigation To SNMP Alerts Page
[Documentation] Verify navigation to SNMP alerts page.
[Tags] Verify_Navigation_To_SNMP_Alerts_Page
Page Should Contain Element ${xpath_snmp_alerts_heading}
Verify Existence Of All Input Boxes In SNMP Alerts Page
[Documentation] Verify existence of all sections in SNMP alerts page.
[Tags] Verify_Existence_Of_All_Input_Boxes_In_SNMP_Alerts_Page
Page Should Contain Checkbox ${xpath_select_all_snmp}
Verify Existence Of All Buttons In SNMP Alerts Page
[Documentation] Verify existence of all buttons in SNMP alerts page.
[Tags] Verify_Existence_Of_All_Buttons_In_SNMP_Alerts_Page
Page should Contain Button ${xpath_add_destination}
Verify Existence Of All Fields In Add Destination
[Documentation] Verify existence of all buttons and fields in add destination page.
[Tags] Verify_Existence_Of_All_Fields_In_Add_Destination
[Teardown] Run Keywords Click Button ${xpath_cancel_button} AND
... Wait Until Keyword Succeeds 10 sec 5 sec
... Refresh GUI And Verify Element Value ${xpath_snmp_alerts_heading} ${snmp_page_heading}
Click Element ${xpath_add_destination}
Wait Until Page Contains Element ${xpath_snmp_alert_destination_heading}
Page Should Contain Element ${xpath_ip_address_input_button}
Page Should Contain Element ${xpath_port_optional_input_button}
Page Should Contain Element ${xpath_cancel_button}
Page Should Contain Element ${xpath_snmp_add_destination_button}
Configure SNMP Settings On BMC With Non Default Port Via GUI And Verify
[Documentation] Configure SNMP settings on BMC with non default port via GUI and verify.
[Tags] Configure_SNMP_Settings_On_BMC_With_Non_Default_Port_Via_GUI_And_Verify
[Teardown] Delete SNMP Manager Via Redfish ${SNMP_MGR1_IP} ${NON_DEFAULT_PORT1}
Configure SNMP Manager Via GUI ${SNMP_MGR1_IP} ${NON_DEFAULT_PORT1}
Wait Until Page Contains ${SNMP_MGR1_IP} timeout=45s
Verify SNMP Manager Configured On BMC ${SNMP_MGR1_IP} ${NON_DEFAULT_PORT1}
Configure SNMP Settings On BMC Via GUI And Verify
[Documentation] Configure SNMP settings on BMC via GUI and verify.
[Tags] Configure_SNMP_Settings_On_BMC_Via_GUI_And_Verify
[Teardown] Delete SNMP Manager Via Redfish ${SNMP_MGR1_IP} ${SNMP_DEFAULT_PORT}
Configure SNMP Manager Via GUI ${SNMP_MGR1_IP} ${SNMP_DEFAULT_PORT}
Wait Until Page Contains ${SNMP_MGR1_IP} timeout=45s
Verify SNMP Manager Configured On BMC ${SNMP_MGR1_IP} ${SNMP_DEFAULT_PORT}
Configure SNMP Settings On BMC With Empty Port Via GUI And Verify
[Documentation] Configure SNMP settings on BMC with empty port via GUI and verify.
[Tags] Configure_SNMP_Settings_On_BMC_With_Empty_Port_Via_GUI_And_Verify
[Teardown] Delete SNMP Manager Via Redfish ${SNMP_MGR1_IP} ${empty_port}
Configure SNMP Manager Via GUI ${SNMP_MGR1_IP} ${empty_port}
Wait Until Page Contains ${SNMP_MGR1_IP} timeout=45s
# SNMP Manager IP is set with default port number when no port number is provided.
Verify SNMP Manager Configured On BMC ${SNMP_MGR1_IP} ${SNMP_DEFAULT_PORT}
Configure Invalid SNMP Settings On BMC Via GUI And Verify
[Documentation] Configure invalid SNMP settings on BMC via GUI and verify.
[Tags] Configure_Invalid_SNMP_Settings_On_BMC_Via_GUI_And_Verify
[Template] Configure SNMP Manager On BMC With Invalid Setting Via GUI And Verify
# snmp_manager_ip snmp_manager_port Expected status
${SNMP_MGR1_IP} ${out_of_range_port} ${invalid_port_error}
${SNMP_MGR1_IP} ${alpha_port} ${invalid_port_error}
${SNMP_MGR1_IP} ${negative_port} ${invalid_port_error}
${SNMP_MGR1_IP} ${alphanumeric_port} ${invalid_port_error}
${empty_ip} ${NON_DEFAULT_PORT1} ${invalid_ip_error}
${out_of_range_ip} ${NON_DEFAULT_PORT1} ${invalid_destination_error}
${alpha_ip} ${NON_DEFAULT_PORT1} ${invalid_destination_error}
${negative_ip} ${NON_DEFAULT_PORT1} ${invalid_destination_error}
${less_octet_ip} ${NON_DEFAULT_PORT1} ${invalid_destination_error}
Configure Multiple SNMP Managers On BMC Via GUI And Verify
[Documentation] Configure multiple SNMP managers on BMC via GUI and verify.
[Tags] Configure_Multiple_SNMP_Managers_On_BMC_Via_GUI_And_Verify
[Template] Configure Multiple SNMP Managers On BMC With Valid Port Via GUI And Verify
# snmp_manager_ip snmp_port
${SNMP_MGR1_IP} ${SNMP_DEFAULT_PORT}
${SNMP_MGR2_IP} ${SNMP_DEFAULT_PORT}
Configure Multiple SNMP Managers With Non Default Port Via GUI And Verify
[Documentation] Configure multiple SNMP managers with non-default port via GUI and verify.
[Tags] Configure_Multiple_SNMP_Managers_With_Non_Default_Port_Via_GUI_And_Verify
[Template] Configure Multiple SNMP Managers On BMC With Valid Port Via GUI And Verify
# snmp_manager_ip snmp_port
${SNMP_MGR1_IP} ${NON_DEFAULT_PORT1}
${SNMP_MGR2_IP} ${NON_DEFAULT_PORT1}
Configure Multiple SNMP Managers With Different Ports Via GUI And Verify
[Documentation] Configure multiple SNMP managers with different ports via GUI and verify.
[Tags] Configure_Multiple_SNMP_Managers_With_Different_Ports_Via_GUI_And_Verify
[Template] Configure Multiple SNMP Managers On BMC With Valid Port Via GUI And Verify
# snmp_manager_ip snmp_port
${SNMP_MGR1_IP} ${NON_DEFAULT_PORT1}
${SNMP_MGR2_IP} ${SNMP_DEFAULT_PORT}
${SNMP_MGR3_IP} ${NON_DEFAULT_PORT2}
Configure Multiple SNMP Managers On BMC Via GUI And Verify Persistency On BMC Reboot
[Documentation] Login GUI SNMP alerts page and
... add multiple SNMP Managers on BMC via GUI and verify persistency on BMC reboot.
[Tags] Configure_Multiple_SNMP_Managers_On_BMC_Via_GUI_And_Verify_Persistency_On_BMC_Reboot
[Teardown] Run Keywords Delete SNMP Manager Via Redfish ${SNMP_MGR1_IP} ${SNMP_DEFAULT_PORT}
... AND Delete SNMP Manager Via Redfish ${SNMP_MGR2_IP} ${SNMP_DEFAULT_PORT}
${ip_address_list}= Create list ${SNMP_MGR1_IP} ${SNMP_MGR2_IP}
Configure SNMP Manager Via GUI ${SNMP_MGR1_IP} ${SNMP_DEFAULT_PORT}
Wait Until Page Contains ${SNMP_MGR1_IP} timeout=45s
Configure SNMP Manager Via GUI ${SNMP_MGR2_IP} ${SNMP_DEFAULT_PORT}
Wait Until Page Contains ${SNMP_MGR2_IP} timeout=45s
# Reboot BMC and check persistency SNMP manager.
Reboot BMC via GUI
Navigate To SNMP Alerts Page
Verify SNMP Manager Configured On BMC ${SNMP_MGR1_IP} ${SNMP_DEFAULT_PORT}
Verify SNMP Manager Configured On BMC ${SNMP_MGR2_IP} ${SNMP_DEFAULT_PORT}
Configure SNMP Manager Via GUI And Verify SNMP Trap
[Documentation] Login GUI SNMP alerts page and add SNMP manager via GUI
... and generate error on BMC and verify trap and its fields.
[Tags] Configure_SNMP_Manager_Via_GUI_And_Verify_SNMP_Trap
[Template] Create Error On BMC And Verify Trap On Default Port
[Teardown] Delete SNMP Manager Via Redfish ${SNMP_MGR1_IP} ${SNMP_DEFAULT_PORT}
# event_log expected_error
# Generate internal failure error.
${CMD_INTERNAL_FAILURE} ${SNMP_TRAP_BMC_INTERNAL_FAILURE}
# Generate timeout error.
${CMD_FRU_CALLOUT} ${SNMP_TRAP_BMC_CALLOUT_ERROR}
# Generate informational error.
${CMD_INFORMATIONAL_ERROR} ${SNMP_TRAP_BMC_INFORMATIONAL_ERROR}
Configure SNMP Manager By Its Hostname Via GUI And Verify
[Documentation] Login GUI SNMP alerts page and add SNMP manager with its hostname
... via GUI and verify.
[Tags] Configure_SNMP_Manager_By_Its_Hostname_Via_GUI_And_Verify
Set DNS Server IP
# Navigate to SNMP page and configure SNMP manager.
Click Element ${xpath_snmp_alerts_sub_menu}
Wait Until Keyword Succeeds 30 sec 10 sec Location Should Contain snmp-alerts
Configure SNMP Manager Via GUI ${SNMP_HOSTNAME} ${SNMP_DEFAULT_PORT}
Wait Until Page Contains ${SNMP_HOSTNAME} timeout=15s
Verify Persistency Of SNMP Manager And Trap On BMC Reboot
[Documentation] Configure the SNMP manager and verify that it remains operational
... after a BMC system reboot. Also, confirm that a trap is successfully sent.
[Tags] Verify_Persistency_Of_SNMP_Manager_And_Trap_On_BMC_Reboot
[Template] Create Error On BMC And Verify Trap On Default Port
[Teardown] Delete SNMP Manager Via Redfish ${SNMP_MGR1_IP} ${SNMP_DEFAULT_PORT}
# event_log expected_error persistency_check
# Generate internal failure error.
${CMD_INTERNAL_FAILURE} ${SNMP_TRAP_BMC_INTERNAL_FAILURE} ${True}
# Generate timeout error.
${CMD_FRU_CALLOUT} ${SNMP_TRAP_BMC_CALLOUT_ERROR} ${True}
# Generate informational error.
${CMD_INFORMATIONAL_ERROR} ${SNMP_TRAP_BMC_INFORMATIONAL_ERROR} ${True}
*** Keywords ***
Suite Setup Execution
[Documentation] Do test case setup tasks.
Launch Browser And Login GUI
Click Element ${xpath_settings_menu}
Click Element ${xpath_snmp_alerts_sub_menu}
Wait Until Keyword Succeeds 30 sec 10 sec Location Should Contain snmp-alerts
Wait Until Element Is Not Visible ${xpath_page_loading_progress_bar} timeout=30
Redfish.Login
Configure SNMP Manager Via GUI
[Documentation] Configure SNMP manager via GUI.
[Arguments] ${snmp_ip} ${port}
# Description of argument(s):
# snmp_ip SNMP manager IP address.
# port SNMP manager port.
Click Element ${xpath_add_destination}
Wait Until Page Contains Element ${xpath_snmp_alert_destination_heading}
Input Text ${xpath_ip_address_input_button} ${snmp_ip}
Wait Until Keyword Succeeds 30 sec 5 sec Get Value ${xpath_ip_address_input_button}
Input Text ${xpath_port_optional_input_button} ${port}
Click Element ${xpath_snmp_add_destination_button}
Delete All SNMP Managers Via GUI
[Documentation] Delete SNMP manager via GUI.
Wait Until Page Contains Element ${xpath_select_all_snmp} timeout=30s
Click Element At Coordinates ${xpath_select_all_snmp} 0 0
Wait Until Keyword Succeeds 30 sec 5 sec Click Element ${xpath_delete_button}
Wait Until Page Contains Delete SNMP alert destination
Click Element ${xpath_delete_destination}
Wait Until Page Contains Successfully deleted SNMP alert destination timeout=45s
Wait Until Keyword Succeeds 30 sec 10 sec Refresh GUI And Verify Element Value
... ${xpath_snmp_alerts_heading} ${snmp_page_heading}
Configure SNMP Manager On BMC With Invalid Setting Via GUI And Verify
[Documentation] Configure SNMP manager on BMC with invalid setting via GUI and verify.
[Arguments] ${snmp_manager_ip} ${snmp_manager_port} ${expected_error}
[Teardown] Close Add SNMP Alerts Destination Window ${expected_error}
# Description of argument(s):
# snmp_manager_ip SNMP manager IP address.
# snmp_manager_port SNMP manager port.
# expected_error Expected error optionally provided in testcase
# .... (e.g. Invalid format / Value must be between 0 – 65535).
Configure SNMP Manager Via GUI ${snmp_manager_ip} ${snmp_manager_port}
Wait Until Page Contains ${expected_error} timeout=30sec
${status}= Run Keyword And Return Status
... Verify SNMP Manager Configured On BMC ${snmp_manager_ip} ${snmp_manager_port}
Should Be Equal As Strings ${status} False
... msg=BMC is allowing to configure with invalid SNMP settings.
Configure Multiple SNMP Managers On BMC With Valid Port Via GUI And Verify
[Documentation] Configure multiple SNMP managers on BMC with valid port value via GUI and verify.
[Arguments] ${snmp_ip_value} ${snmp_port_value}
[Teardown] Delete SNMP Manager Via Redfish ${snmp_ip_value} ${snmp_port_value}
# Description of argument(s):
# snmp_ip_value SNMP manager IP address.
# snmp_port_value SNMP manager port.
Configure SNMP Manager Via GUI ${snmp_ip_value} ${snmp_port_value}
Verify SNMP Manager Configured On BMC ${snmp_ip_value} ${snmp_port_value}
Create Error On BMC And Verify Trap On Default Port
[Documentation] Generate error on BMC and verify if trap is sent to default port.
[Arguments] ${event_log}=${CMD_INTERNAL_FAILURE} ${expected_error}=${SNMP_TRAP_BMC_INTERNAL_FAILURE}
... ${persistency_check}=${False}
# Description of argument(s):
# event_log Event logs to be created.
# expected_error Expected error on SNMP.
# persistency_check Check whether reboot is required or not (e.g. True, False).
Configure SNMP Manager Via GUI ${SNMP_MGR1_IP} ${SNMP_DEFAULT_PORT}
Run Keyword If ${persistency_check} == ${True}
... Run Keywords Reboot BMC via GUI AND Navigate To SNMP Alerts Page
Start SNMP Manager
# Generate error log.
BMC Execute Command ${event_log}
SSHLibrary.Switch Connection snmp_server
${SNMP_LISTEN_OUT}= Read delay=1s
# Stop SNMP manager process.
SSHLibrary.Execute Command sudo killall snmptrapd
# Sample SNMP trap:
# 2021-06-16 07:05:29 xx.xx.xx.xx [UDP: [xx.xx.xx.xx]:58154->[xx.xx.xx.xx]:xxx]:
# DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (2100473) 5:50:04.73
# SNMPv2-MIB::snmpTrapOID.0 = OID: SNMPv2-SMI::enterprises.49871.1.0.0.1
# SNMPv2-SMI::enterprises.49871.1.0.1.1 = Gauge32: 369 SNMPv2-SMI::enterprises.49871.1.0.1.2 = Opaque:
# UInt64: 1397718405502468474 SNMPv2-SMI::enterprises.49871.1.0.1.3 = INTEGER: 3
# SNMPv2-SMI::enterprises.49871.1.0.1.4 = STRING: "xxx.xx.xx Failure"
${lines}= Split To Lines ${SNMP_LISTEN_OUT}
${trap_info}= Get From List ${lines} -1
${snmp_trap}= Split String ${trap_info} \t
Verify SNMP Trap ${snmp_trap} ${expected_error}
Close Add SNMP Alerts Destination Window
[Documentation] Close Add SNMP Alerts Destination window.
[Arguments] ${expected_error}=${invalid_port_error}
# Description of argument(s):
# expected_error Expected error on SNMP alerts page.
Run Keyword If '${expected_error}' == '${invalid_port_error}'
... Click Element ${xpath_cancel_button}
... ELSE IF '${expected_error}' == '${invalid_ip_error}'
... Click Element ${xpath_cancel_button}
Set DNS Server IP
[Documentation] Add static DNS IP.
Wait Until Page Contains Element ${xpath_settings_menu} timeout=30s
Click Element ${xpath_settings_menu}
Click Element ${xpath_network_sub_menu}
Wait Until Keyword Succeeds 30 sec 10 sec Location Should Contain network
Add DNS Servers And Verify ${dns_server}
Delete Multiple SNMP Managers With Default Port Via GUI
[Documentation] Delete multiple SNMP managers with default port on BMC via GUI.
[Arguments] ${ip_address_list}
# Description of argument(s):
# ${ip_address_list} List of IP address.
FOR ${ip_address} IN @{ip_address_list}
Wait Until Keyword Succeeds 30 sec 10 sec
... Delete SNMP Manager Via GUI ${ip_address} ${SNMP_DEFAULT_PORT}
END
Navigate To SNMP Alerts Page
[Documentation] Navigate to SNMP alerts page.
Click Element ${xpath_settings_menu}
Click Element ${xpath_snmp_alerts_sub_menu}
Wait Until Keyword Succeeds 30 sec 10 sec Location Should Contain snmp-alerts