Fix test suites and move SNMP under redfish

Changes:
   - Test consolidation for SNMP
   - Fix test suites for line exceeding 110

Tested:
   - NA

Change-Id: Ia1d3e8cab9ad31e6550100e25a3b3988a80a38f7
Signed-off-by: George Keishing <gkeishin@in.ibm.com>
diff --git a/redfish/events/test_bmc_snmp_config.robot b/redfish/events/test_bmc_snmp_config.robot
new file mode 100644
index 0000000..377567b
--- /dev/null
+++ b/redfish/events/test_bmc_snmp_config.robot
@@ -0,0 +1,250 @@
+*** Settings ***
+Documentation  This testing requires special setup where SNMP trapd is
+...            configured and installed. For download, installation and
+...            configuration refer http://www.net-snmp.org/.
+
+Resource        ../../lib/snmp/resource.robot
+Resource        ../../lib/snmp/snmp_utils.robot
+Resource        ../../lib/openbmc_ffdc.robot
+Resource        ../../lib/logging_utils.robot
+
+Library         String
+Library         SSHLibrary
+
+Test Teardown   FFDC On Test Case Fail
+
+Force Tags      BMC_SNMP_Config
+
+*** Variables ***
+
+${CMD_INTERNAL_FAILURE}  busctl call xyz.openbmc_project.Logging /xyz/openbmc_project/logging
+...  xyz.openbmc_project.Logging.Create Create ssa{ss} xyz.openbmc_project.Common.Error.InternalFailure
+...  xyz.openbmc_project.Logging.Entry.Level.Error 0
+
+${CMD_FRU_CALLOUT}  busctl call xyz.openbmc_project.Logging /xyz/openbmc_project/logging
+...  xyz.openbmc_project.Logging.Create Create ssa{ss} xyz.openbmc_project.Common.Error.Timeout
+...  xyz.openbmc_project.Logging.Entry.Level.Error 2 "TIMEOUT_IN_MSEC" "5"
+...  "CALLOUT_INVENTORY_PATH" "/xyz/openbmc_project/inventory/system/chassis/motherboard"
+
+${CMD_INFORMATIONAL_ERROR}  busctl call xyz.openbmc_project.Logging /xyz/openbmc_project/logging
+...  xyz.openbmc_project.Logging.Create Create ssa{ss} xyz.openbmc_project.Common.Error.TestError2
+...  xyz.openbmc_project.Logging.Entry.Level.Informational 0
+
+${CMD_DEBUG_TRABALL_ERROR}=  /tmp/tarball/bin/logging-test -c AutoTestSimple
+${SNMP_TRAP_BMC_INTERNAL_FAILURE}  xyz.openbmc_project.Common.Error.InternalFailure
+${SNMP_TRAP_BMC_CALLOUT_ERROR}  xyz.openbmc_project.Common.Error.Timeout
+${SNMP_TRAP_BMC_INFORMATIONAL_ERROR}  xyz.openbmc_project.Common.Error.TestError2
+
+*** Test Cases ***
+Configure SNMP Manager On BMC And Verify
+    [Documentation]  Configure SNMP Manager On BMC And Verify.
+    [Tags]  Configure_SNMP_Manager_On_BMC_And_Verify
+
+    Configure SNMP Manager On BMC  ${SNMP_MGR1_IP}  ${SNMP_DEFAULT_PORT}  Valid
+    Verify SNMP Manager  ${SNMP_MGR1_IP}  ${SNMP_DEFAULT_PORT}
+
+    Delete SNMP Manager And Object  ${SNMP_MGR1_IP}  ${SNMP_DEFAULT_PORT}
+
+Configure SNMP Manager On BMC With Non Default Port And Verify
+    [Documentation]  Configure SNMP Manager On BMC And Verify.
+    [Tags]  Configure_SNMP_Manager_On_BMC_With_Non_Default_Port_And_Verify
+
+    Configure SNMP Manager On BMC  ${SNMP_MGR1_IP}  ${NON_DEFAULT_PORT1}  Valid
+    Verify SNMP Manager  ${SNMP_MGR1_IP}  ${NON_DEFAULT_PORT1}
+
+    Delete SNMP Manager And Object  ${SNMP_MGR1_IP}  ${NON_DEFAULT_PORT1}
+
+Configure SNMP Manager On BMC With Out Of Range Port And Verify
+    [Documentation]  Configure SNMP Manager On BMC with out-of range port and verify.
+    [Tags]  Configure_SNMP_Manager_On_BMC_With_Out_Of_Range_Port_And_Verify
+    [Template]  Configure SNMP Manager On BMC
+
+    # SNMP manager IP  Port                  Scenario
+    ${SNMP_MGR1_IP}    ${out_of_range_port}  error
+
+Configure SNMP Manager On BMC With Alpha Port And Verify
+    [Documentation]  Configure SNMP Manager On BMC with alpha port and verify.
+    [Tags]  Configure_SNMP_Manager_On_BMC_With_Alpha_Port_And_Verify
+    [Template]  Configure SNMP Manager On BMC
+
+    # SNMP manager IP  Port           Scenario
+    ${SNMP_MGR1_IP}    ${alpha_port}  error
+
+Configure SNMP Manager On BMC With Negative Port And Verify
+    [Documentation]  Configure SNMP Manager On BMC with negative port and verify.
+    [Tags]  Configure_SNMP_Manager_On_BMC_With_Negative_Port_And_Verify
+    [Template]  Configure SNMP Manager On BMC
+
+    # SNMP manager IP  Port              Scenario
+    ${SNMP_MGR1_IP}    ${negative_port}  error
+
+Configure SNMP Manager On BMC With Empty Port And Verify
+    [Documentation]  Configure SNMP Manager On BMC with empty port and verify.
+    [Tags]  Configure_SNMP_Manager_On_BMC_With_Empty_Port_And_Verify
+    [Template]  Configure SNMP Manager On BMC
+
+    # SNMP manager IP  Port           Scenario
+    ${SNMP_MGR1_IP}    ${empty_port}  error
+
+Configure SNMP Manager On BMC With Out Of Range IP And Verify
+    [Documentation]  Configure SNMP Manager On BMC with out-of range IP and verify.
+    [Tags]  Configure_SNMP_Manager_On_BMC_With_Out_Of_Range_IP_And_Verify
+    [Template]  Configure SNMP Manager On BMC
+
+    # SNMP manager IP   Port                  Scenario
+    ${out_of_range_ip}  ${SNMP_DEFAULT_PORT}  error
+
+Configure Multiple SNMP Managers And Verify
+    [Documentation]  Configure multiple SNMP Managers And Verify.
+    [Tags]  Configure_Multiple_SNMP_Managers_And_Verify
+
+    Configure SNMP Manager On BMC  ${SNMP_MGR1_IP}  ${SNMP_DEFAULT_PORT}  Valid
+    Configure SNMP Manager On BMC  ${SNMP_MGR2_IP}  ${SNMP_DEFAULT_PORT}  Valid
+    Verify SNMP Manager  ${SNMP_MGR1_IP}  ${SNMP_DEFAULT_PORT}
+    Verify SNMP Manager  ${SNMP_MGR2_IP}  ${SNMP_DEFAULT_PORT}
+
+    Delete SNMP Manager And Object  ${SNMP_MGR1_IP}  ${SNMP_DEFAULT_PORT}
+    Delete SNMP Manager And Object  ${SNMP_MGR2_IP}  ${SNMP_DEFAULT_PORT}
+
+Configure Multiple SNMP Managers With Non Default Port And Verify
+    [Documentation]  Configure multiple SNMP Managers with non-default port And Verify.
+    [Tags]  Configure_Multiple_SNMP_Managers_With_Non_Default_Port_And_Verify
+
+    Configure SNMP Manager On BMC  ${SNMP_MGR1_IP}  ${NON_DEFAULT_PORT1}  Valid
+    Configure SNMP Manager On BMC  ${SNMP_MGR2_IP}  ${NON_DEFAULT_PORT1}  Valid
+    Verify SNMP Manager  ${SNMP_MGR1_IP}  ${NON_DEFAULT_PORT1}
+    Verify SNMP Manager  ${SNMP_MGR2_IP}  ${NON_DEFAULT_PORT1}
+
+    Delete SNMP Manager And Object  ${SNMP_MGR1_IP}  ${NON_DEFAULT_PORT1}
+    Delete SNMP Manager And Object  ${SNMP_MGR2_IP}  ${NON_DEFAULT_PORT1}
+
+Configure Multiple SNMP Managers With Different Ports And Verify
+    [Documentation]  Configure multiple SNMP Managers with different ports And Verify.
+    [Tags]  Configure_Multiple_SNMP_Managers_With_Different_Ports_And_Verify
+
+    Configure SNMP Manager On BMC  ${SNMP_MGR1_IP}  ${SNMP_DEFAULT_PORT}  Valid
+    Configure SNMP Manager On BMC  ${SNMP_MGR2_IP}  ${NON_DEFAULT_PORT1}  Valid
+    Configure SNMP Manager On BMC  ${SNMP_MGR3_IP}  ${NON_DEFAULT_PORT2}  Valid
+
+    Verify SNMP Manager  ${SNMP_MGR1_IP}  ${SNMP_DEFAULT_PORT}
+    Verify SNMP Manager  ${SNMP_MGR2_IP}  ${NON_DEFAULT_PORT1}
+    Verify SNMP Manager  ${SNMP_MGR3_IP}  ${NON_DEFAULT_PORT2}
+
+    Delete SNMP Manager And Object  ${SNMP_MGR1_IP}  ${SNMP_DEFAULT_PORT}
+    Delete SNMP Manager And Object  ${SNMP_MGR2_IP}  ${NON_DEFAULT_PORT1}
+    Delete SNMP Manager And Object  ${SNMP_MGR3_IP}  ${NON_DEFAULT_PORT2}
+
+Generate Error On BMC And Verify If Trap Is Sent
+    [Documentation]  Generate Error On BMC And Verify If Trap Is Sent.
+    [Tags]  Generate_Error_On_BMC_And_Verify_If_Trap_Is_Sent
+    [Setup]  Install Tarball
+    [Template]  Create Error On BMC And Verify If Trap Is Sent
+
+    # event_log                   expected_error
+    ${CMD_DEBUG_TRABALL_ERROR}    ${SNMP_TRAP_BMC_ERROR}
+
+Generate Error On BMC And Verify Trap On SNMP
+    [Documentation]  Generate error on bmc and verify trap on SNMP.
+    [Tags]  Generate_Error_On_BMC_And_Verify_Trap_On_SNMP
+    [Template]  Create Error On BMC And Verify If Trap Is Sent
+
+     # event_log                  expected_error
+     ${CMD_INTERNAL_FAILURE}      ${SNMP_TRAP_BMC_INTERNAL_FAILURE}
+     ${CMD_FRU_CALLOUT}           ${SNMP_TRAP_BMC_CALLOUT_ERROR}
+     ${CMD_INFORMATIONAL_ERROR}   ${SNMP_TRAP_BMC_INFORMATIONAL_ERROR}
+
+Configure SNMP Manager With Less Octet IP And Verify
+     [Documentation]  Configure SNMP manager on BMC with less octet IP and verify.
+     [Tags]  Configure_SNMP_Manager_With_Less_Octet_IP_And_Verify
+     [Template]  Configure SNMP Manager On BMC
+
+     # SNMP manager IP   Port                  Scenario
+     10.10.10            ${SNMP_DEFAULT_PORT}  error
+
+Verify SNMP SysUpTime
+    [Documentation]  Verify SNMP SysUpTime.
+    [Tags]  Verify_SNMP_SysUpTime
+
+    Generate Error And Verify System Up Time
+
+
+Verify SNMP SysUpTime On BMC Reboot
+    [Documentation]  Verify SNMP SysUpTime on BMC reboot.
+    [Tags]  Verify_SNMP_SysUpTime_On_BMC_Reboot
+
+    # Reboot BMC to reset system uptime.
+    OBMC Reboot (off)
+
+    ${uptime}=  Generate Error And Verify System Up Time
+
+    # Check if uptime is reset after reboot.
+    Should Be True  ${uptime} <= 1  msg=SNMP SysUpTime is not reset on reboot
+
+
+*** Keywords ***
+
+Create Error On BMC And Verify If Trap Is Sent
+    [Documentation]  Generate error on BMC and verify if trap is sent.
+    [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 On BMC  ${SNMP_MGR1_IP}  ${SNMP_DEFAULT_PORT}  Valid
+
+    Start SNMP Manager
+    BMC Execute Command  ${event_log}
+    SSHLibrary.Switch Connection  snmp_server
+    ${SNMP_LISTEN_OUT}=  Read  delay=1s
+    Delete SNMP Manager And Object  ${SNMP_MGR1_IP}  ${SNMP_DEFAULT_PORT}
+    SSHLibrary.Execute Command  sudo killall snmptrapd
+    ${lines} =  Split To Lines 	 ${SNMP_LISTEN_OUT}
+    ${trap_info}=  Get From List  ${lines}  -1
+    ${SNMP_TRAP} =  Split String  ${trap_info}  \t
+
+    Should Contain  ${SNMP_TRAP}[0]  DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks:
+    Should Be Equal  ${SNMP_TRAP}[1]  SNMPv2-MIB::snmpTrapOID.0 = OID: SNMPv2-SMI::enterprises.49871.1.0.0.1
+    Should Match Regexp  ${SNMP_TRAP}[2]  SNMPv2-SMI::enterprises.49871.1.0.1.1 = Gauge32: \[0-9]*
+    Should Match Regexp  ${SNMP_TRAP}[3]  SNMPv2-SMI::enterprises.49871.1.0.1.2 = Opaque: UInt64: \[0-9]*
+    Should Match Regexp  ${SNMP_TRAP}[4]  SNMPv2-SMI::enterprises.49871.1.0.1.3 = INTEGER: \[0-9]
+    Should Be Equal  ${SNMP_TRAP}[5]  SNMPv2-SMI::enterprises.49871.1.0.1.4 = STRING: "${expected_error}"
+
+    [Return]  ${SNMP_TRAP}
+
+
+Generate Error And Verify System Up Time
+    [Documentation]  Generate error and verify system up time.
+
+    # Get system uptime on BMC.
+    # Example output of uptime:
+    # (8055.79 15032.86)
+
+    ${cmd_output}   ${stderr}  ${rc}=  BMC Execute Command  cat /proc/uptime
+    @{times}=  Split String  ${cmd_output}
+
+    ${bmc_uptime_in_minutes}=  Evaluate  int(${times}[0])/60
+
+    ${trap}=  Create Error On BMC And Verify If Trap Is Sent
+
+    # Extract System up time from SNMP trap.
+    # Example - SNMP trap:
+    # DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (252367) 0:42:03.67
+    # SNMPv2-MIB::snmpTrapOID.0 = OID: SNMPv2-SMI::enterprises.49871.1.0.0.1
+    # SNMPv2-SMI::enterprises.49871.1.0.1.1 = Gauge32: 54
+    # SNMPv2-SMI::enterprises.49871.1.0.1.2 = Opaque: UInt64: 4622921648578756984
+    # SNMPv2-SMI::enterprises.49871.1.0.1.3 = INTEGER: 3
+    # SNMPv2-SMI::enterprises.49871.1.0.1.4 = STRING:
+
+    @{words}=  Split String  ${trap}[0]  =
+
+    ${timeticks}=  Fetch From Right  ${words}[1]  (
+    ${snmp_sysuptime}=  Fetch From Left  ${timeticks}  )
+
+    # SNMP SysUptime will be in milli seconds.
+    # Convert into minutes.
+    ${sysuptime_in_minutes}=  Evaluate  int(${snmp_sysuptime})/6000
+
+    Should Be Equal As Integers  ${bmc_uptime_in_minutes}  ${sysuptime_in_minutes}
+
+    [Return]  ${sysuptime_in_minutes}