Added test to verify trap on non default port

Changes:
    - Added "Configure SNMP Manager Via GUI And Verify SNMP Trap On Non Default Port"

Tested:
    - Ran Successfully  test_snmp_alerts_sub_menu.robot

Change-Id: I71a4b74a14eb42c7fa5012fb77243277eaea97d8
Signed-off-by: Megha G N <Megha.G.N@ibm.com>
diff --git a/gui/gui_test/settings_menu/test_snmp_alerts_sub_menu.robot b/gui/gui_test/settings_menu/test_snmp_alerts_sub_menu.robot
index 3cddf73..6e6a070 100644
--- a/gui/gui_test/settings_menu/test_snmp_alerts_sub_menu.robot
+++ b/gui/gui_test/settings_menu/test_snmp_alerts_sub_menu.robot
@@ -231,6 +231,25 @@
     ${CMD_INFORMATIONAL_ERROR}  ${SNMP_TRAP_BMC_INFORMATIONAL_ERROR}     ${True}
 
 
+Configure SNMP Manager Via GUI And Verify SNMP Trap On Non Default Port
+    [Documentation]  Add SNMP manager via GUI SNMP alerts page, generate error on BMC
+    ...  and verify trap on non default port.
+    [Tags]  Configure_SNMP_Manager_Via_GUI_And_Verify_SNMP_Trap_On_Non_Default_Port
+    [Template]  Generate Error Log On BMC And Verify Trap On Non Default Port
+    [Teardown]  Delete SNMP Manager Via Redfish  ${SNMP_MGR1_IP}  ${NON_DEFAULT_PORT}
+
+    # event_log_cmd             trap_msg
+
+    # 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}
+
+
 *** Keywords ***
 
 Suite Setup Execution
@@ -391,3 +410,48 @@
     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
+
+
+Generate Error Log On BMC And Verify Trap On Non Default Port
+    [Documentation]  Generate error log on BMC and verify if trap is sent to non default port.
+    [Arguments]  ${event_log_cmd}  ${trap_msg}
+    ...  ${persistency_check}=${False}
+
+    # Description of argument(s):
+    # event_log_cmd       Event logs to be created.
+    # trap_msg            Expected trap on SNMP.
+
+    Configure SNMP Manager Via GUI  ${SNMP_MGR1_IP}  ${NON_DEFAULT_PORT}
+
+    IF  ${persistency_check} == ${True}
+        Reboot BMC via GUI
+        Navigate To SNMP Alerts Page
+    END
+
+    Start SNMP Manager
+
+    # Generate error log.
+    BMC Execute Command  ${event_log_cmd}
+
+    SSHLibrary.Switch Connection  snmp_server
+    ${SNMP_LISTEN_OUT}=  Read  delay=1s
+
+    # Stop SNMP manager process.
+    SSHLibrary.Execute Command  sudo killall snmptrapd
+
+    # Reference URL for SNMP MIB.
+    # https://github.com/openbmc/phosphor-snmp/blob/master/mibs/NotificationMIB.txt
+
+    # 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"
+
+    ${snmp_info_list}=  Split To Lines  ${SNMP_LISTEN_OUT}
+    ${trap_info}=  Get From List  ${snmp_info_list}  -1
+    ${snmp_trap}=  Split String  ${trap_info}  \t
+
+    Verify SNMP Trap  ${snmp_trap}  ${trap_msg}