Support to run SNMP server on specific port and verify trap
Changes:
Added to keyword to start SNMP server on specific port other than default port.
Added test case to configure multiple SNMP managers.
Added test cases to configure SNMP manager with different ports
Signed-off-by: Prashanth Katti <prkatti1@in.ibm.com>
Change-Id: I091925d6f4232270fbaf189f5682453535559a8c
diff --git a/lib/snmp/redfish_snmp_utils.robot b/lib/snmp/redfish_snmp_utils.robot
index 8f43918..79656a1 100644
--- a/lib/snmp/redfish_snmp_utils.robot
+++ b/lib/snmp/redfish_snmp_utils.robot
@@ -232,3 +232,61 @@
# The execution of the SNMP_TRAPD_CMD is necessary to cause SNMP to begin
# listening to SNMP messages.
SSHLibrary.write ${SNMP_TRAPD_CMD} &
+
+
+Create Error On BMC And Verify Trap On Non-Default Port
+ [Documentation] Generate error on BMC and verify if trap is sent to non default port.
+ [Arguments] ${event_log}=${CMD_INTERNAL_FAILURE} ${expected_error}=${SNMP_TRAP_BMC_INTERNAL_FAILURE}
+
+ # Description of argument(s):
+ # event_log Event logs to be created.
+ # expected_error Expected error on SNMP.
+
+ Configure SNMP Manager Via Redfish ${SNMP_MGR1_IP} ${NON_DEFAULT_PORT1}
+
+ Start SNMP Manager On Specific Port ${SNMP_MGR1_IP} ${NON_DEFAULT_PORT1}
+
+ # Generate error log.
+ BMC Execute Command ${event_log}
+
+ SSHLibrary.Switch Connection snmp_server
+ ${SNMP_LISTEN_OUT}= Read delay=1s
+
+ Delete SNMP Manager Via Redfish ${SNMP_MGR1_IP} ${NON_DEFAULT_PORT1}
+
+ # 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}
+
+ [Return] ${snmp_trap}
+
+
+Start SNMP Manager On Specific Port
+ [Documentation] Start SNMP listener on specific port on the remote SNMP manager.
+ [Arguments] ${snmp_mgr_ip} ${snmp_port}
+
+ # Description of argument(s):
+ # snmp_mgr_ip SNMP manager IP.
+ # snmp_port Network port on which SNMP manager need to run.
+
+ ${ip_and_port}= Catenate ${snmp_mgr_ip}:${snmp_port}
+
+ Open Connection And Log In ${SNMP_MGR1_USERNAME} ${SNMP_MGR1_PASSWORD}
+ ... alias=snmp_server host=${SNMP_MGR1_IP}
+
+ # The execution of the SNMP_TRAPD_CMD is necessary to cause SNMP to begin
+ # listening to SNMP messages.
+ SSHLibrary.write ${SNMP_TRAPD_CMD} ${ip_and_port} &