xref: /openbmc/openbmc-test-automation/redfish/events/test_bmc_snmp_config.robot (revision 6fb70d98f2f1cb9273ba912deaa2cebe3c23ea86)
19e5626d2SGeorge Keishing*** Settings ***
29e5626d2SGeorge KeishingDocumentation  This testing requires special setup where SNMP trapd is
39e5626d2SGeorge Keishing...            configured and installed. For download, installation and
49e5626d2SGeorge Keishing...            configuration refer http://www.net-snmp.org/.
59e5626d2SGeorge Keishing
69e5626d2SGeorge KeishingResource        ../../lib/snmp/resource.robot
79e5626d2SGeorge KeishingResource        ../../lib/snmp/snmp_utils.robot
89e5626d2SGeorge KeishingResource        ../../lib/openbmc_ffdc.robot
99e5626d2SGeorge KeishingResource        ../../lib/logging_utils.robot
109e5626d2SGeorge Keishing
119e5626d2SGeorge KeishingLibrary         String
129e5626d2SGeorge KeishingLibrary         SSHLibrary
139e5626d2SGeorge Keishing
149e5626d2SGeorge KeishingTest Teardown   FFDC On Test Case Fail
159e5626d2SGeorge Keishing
16*6fb70d98SMatt FischerTest Tags       BMC_SNMP_Config
179e5626d2SGeorge Keishing
189e5626d2SGeorge Keishing*** Variables ***
199e5626d2SGeorge Keishing
209e5626d2SGeorge Keishing${CMD_INTERNAL_FAILURE}  busctl call xyz.openbmc_project.Logging /xyz/openbmc_project/logging
219e5626d2SGeorge Keishing...  xyz.openbmc_project.Logging.Create Create ssa{ss} xyz.openbmc_project.Common.Error.InternalFailure
229e5626d2SGeorge Keishing...  xyz.openbmc_project.Logging.Entry.Level.Error 0
239e5626d2SGeorge Keishing
249e5626d2SGeorge Keishing${CMD_FRU_CALLOUT}  busctl call xyz.openbmc_project.Logging /xyz/openbmc_project/logging
259e5626d2SGeorge Keishing...  xyz.openbmc_project.Logging.Create Create ssa{ss} xyz.openbmc_project.Common.Error.Timeout
269e5626d2SGeorge Keishing...  xyz.openbmc_project.Logging.Entry.Level.Error 2 "TIMEOUT_IN_MSEC" "5"
279e5626d2SGeorge Keishing...  "CALLOUT_INVENTORY_PATH" "/xyz/openbmc_project/inventory/system/chassis/motherboard"
289e5626d2SGeorge Keishing
299e5626d2SGeorge Keishing${CMD_INFORMATIONAL_ERROR}  busctl call xyz.openbmc_project.Logging /xyz/openbmc_project/logging
309e5626d2SGeorge Keishing...  xyz.openbmc_project.Logging.Create Create ssa{ss} xyz.openbmc_project.Common.Error.TestError2
319e5626d2SGeorge Keishing...  xyz.openbmc_project.Logging.Entry.Level.Informational 0
329e5626d2SGeorge Keishing
339e5626d2SGeorge Keishing${CMD_DEBUG_TRABALL_ERROR}=  /tmp/tarball/bin/logging-test -c AutoTestSimple
349e5626d2SGeorge Keishing${SNMP_TRAP_BMC_INTERNAL_FAILURE}  xyz.openbmc_project.Common.Error.InternalFailure
359e5626d2SGeorge Keishing${SNMP_TRAP_BMC_CALLOUT_ERROR}  xyz.openbmc_project.Common.Error.Timeout
369e5626d2SGeorge Keishing${SNMP_TRAP_BMC_INFORMATIONAL_ERROR}  xyz.openbmc_project.Common.Error.TestError2
379e5626d2SGeorge Keishing
389e5626d2SGeorge Keishing*** Test Cases ***
399e5626d2SGeorge KeishingConfigure SNMP Manager On BMC And Verify
409e5626d2SGeorge Keishing    [Documentation]  Configure SNMP Manager On BMC And Verify.
419e5626d2SGeorge Keishing    [Tags]  Configure_SNMP_Manager_On_BMC_And_Verify
429e5626d2SGeorge Keishing
439e5626d2SGeorge Keishing    Configure SNMP Manager On BMC  ${SNMP_MGR1_IP}  ${SNMP_DEFAULT_PORT}  Valid
449e5626d2SGeorge Keishing    Verify SNMP Manager  ${SNMP_MGR1_IP}  ${SNMP_DEFAULT_PORT}
459e5626d2SGeorge Keishing
469e5626d2SGeorge Keishing    Delete SNMP Manager And Object  ${SNMP_MGR1_IP}  ${SNMP_DEFAULT_PORT}
479e5626d2SGeorge Keishing
489e5626d2SGeorge KeishingConfigure SNMP Manager On BMC With Non Default Port And Verify
499e5626d2SGeorge Keishing    [Documentation]  Configure SNMP Manager On BMC And Verify.
509e5626d2SGeorge Keishing    [Tags]  Configure_SNMP_Manager_On_BMC_With_Non_Default_Port_And_Verify
519e5626d2SGeorge Keishing
529e5626d2SGeorge Keishing    Configure SNMP Manager On BMC  ${SNMP_MGR1_IP}  ${NON_DEFAULT_PORT1}  Valid
539e5626d2SGeorge Keishing    Verify SNMP Manager  ${SNMP_MGR1_IP}  ${NON_DEFAULT_PORT1}
549e5626d2SGeorge Keishing
559e5626d2SGeorge Keishing    Delete SNMP Manager And Object  ${SNMP_MGR1_IP}  ${NON_DEFAULT_PORT1}
569e5626d2SGeorge Keishing
579e5626d2SGeorge KeishingConfigure SNMP Manager On BMC With Out Of Range Port And Verify
589e5626d2SGeorge Keishing    [Documentation]  Configure SNMP Manager On BMC with out-of range port and verify.
599e5626d2SGeorge Keishing    [Tags]  Configure_SNMP_Manager_On_BMC_With_Out_Of_Range_Port_And_Verify
609e5626d2SGeorge Keishing    [Template]  Configure SNMP Manager On BMC
619e5626d2SGeorge Keishing
629e5626d2SGeorge Keishing    # SNMP manager IP  Port                  Scenario
639e5626d2SGeorge Keishing    ${SNMP_MGR1_IP}    ${out_of_range_port}  error
649e5626d2SGeorge Keishing
659e5626d2SGeorge KeishingConfigure SNMP Manager On BMC With Alpha Port And Verify
669e5626d2SGeorge Keishing    [Documentation]  Configure SNMP Manager On BMC with alpha port and verify.
679e5626d2SGeorge Keishing    [Tags]  Configure_SNMP_Manager_On_BMC_With_Alpha_Port_And_Verify
689e5626d2SGeorge Keishing    [Template]  Configure SNMP Manager On BMC
699e5626d2SGeorge Keishing
709e5626d2SGeorge Keishing    # SNMP manager IP  Port           Scenario
719e5626d2SGeorge Keishing    ${SNMP_MGR1_IP}    ${alpha_port}  error
729e5626d2SGeorge Keishing
739e5626d2SGeorge KeishingConfigure SNMP Manager On BMC With Negative Port And Verify
749e5626d2SGeorge Keishing    [Documentation]  Configure SNMP Manager On BMC with negative port and verify.
759e5626d2SGeorge Keishing    [Tags]  Configure_SNMP_Manager_On_BMC_With_Negative_Port_And_Verify
769e5626d2SGeorge Keishing    [Template]  Configure SNMP Manager On BMC
779e5626d2SGeorge Keishing
789e5626d2SGeorge Keishing    # SNMP manager IP  Port              Scenario
799e5626d2SGeorge Keishing    ${SNMP_MGR1_IP}    ${negative_port}  error
809e5626d2SGeorge Keishing
819e5626d2SGeorge KeishingConfigure SNMP Manager On BMC With Empty Port And Verify
829e5626d2SGeorge Keishing    [Documentation]  Configure SNMP Manager On BMC with empty port and verify.
839e5626d2SGeorge Keishing    [Tags]  Configure_SNMP_Manager_On_BMC_With_Empty_Port_And_Verify
849e5626d2SGeorge Keishing    [Template]  Configure SNMP Manager On BMC
859e5626d2SGeorge Keishing
869e5626d2SGeorge Keishing    # SNMP manager IP  Port           Scenario
879e5626d2SGeorge Keishing    ${SNMP_MGR1_IP}    ${empty_port}  error
889e5626d2SGeorge Keishing
899e5626d2SGeorge KeishingConfigure SNMP Manager On BMC With Out Of Range IP And Verify
909e5626d2SGeorge Keishing    [Documentation]  Configure SNMP Manager On BMC with out-of range IP and verify.
919e5626d2SGeorge Keishing    [Tags]  Configure_SNMP_Manager_On_BMC_With_Out_Of_Range_IP_And_Verify
929e5626d2SGeorge Keishing    [Template]  Configure SNMP Manager On BMC
939e5626d2SGeorge Keishing
949e5626d2SGeorge Keishing    # SNMP manager IP   Port                  Scenario
959e5626d2SGeorge Keishing    ${out_of_range_ip}  ${SNMP_DEFAULT_PORT}  error
969e5626d2SGeorge Keishing
979e5626d2SGeorge KeishingConfigure Multiple SNMP Managers And Verify
989e5626d2SGeorge Keishing    [Documentation]  Configure multiple SNMP Managers And Verify.
999e5626d2SGeorge Keishing    [Tags]  Configure_Multiple_SNMP_Managers_And_Verify
1009e5626d2SGeorge Keishing
1019e5626d2SGeorge Keishing    Configure SNMP Manager On BMC  ${SNMP_MGR1_IP}  ${SNMP_DEFAULT_PORT}  Valid
1029e5626d2SGeorge Keishing    Configure SNMP Manager On BMC  ${SNMP_MGR2_IP}  ${SNMP_DEFAULT_PORT}  Valid
1039e5626d2SGeorge Keishing    Verify SNMP Manager  ${SNMP_MGR1_IP}  ${SNMP_DEFAULT_PORT}
1049e5626d2SGeorge Keishing    Verify SNMP Manager  ${SNMP_MGR2_IP}  ${SNMP_DEFAULT_PORT}
1059e5626d2SGeorge Keishing
1069e5626d2SGeorge Keishing    Delete SNMP Manager And Object  ${SNMP_MGR1_IP}  ${SNMP_DEFAULT_PORT}
1079e5626d2SGeorge Keishing    Delete SNMP Manager And Object  ${SNMP_MGR2_IP}  ${SNMP_DEFAULT_PORT}
1089e5626d2SGeorge Keishing
1099e5626d2SGeorge KeishingConfigure Multiple SNMP Managers With Non Default Port And Verify
1109e5626d2SGeorge Keishing    [Documentation]  Configure multiple SNMP Managers with non-default port And Verify.
1119e5626d2SGeorge Keishing    [Tags]  Configure_Multiple_SNMP_Managers_With_Non_Default_Port_And_Verify
1129e5626d2SGeorge Keishing
1139e5626d2SGeorge Keishing    Configure SNMP Manager On BMC  ${SNMP_MGR1_IP}  ${NON_DEFAULT_PORT1}  Valid
1149e5626d2SGeorge Keishing    Configure SNMP Manager On BMC  ${SNMP_MGR2_IP}  ${NON_DEFAULT_PORT1}  Valid
1159e5626d2SGeorge Keishing    Verify SNMP Manager  ${SNMP_MGR1_IP}  ${NON_DEFAULT_PORT1}
1169e5626d2SGeorge Keishing    Verify SNMP Manager  ${SNMP_MGR2_IP}  ${NON_DEFAULT_PORT1}
1179e5626d2SGeorge Keishing
1189e5626d2SGeorge Keishing    Delete SNMP Manager And Object  ${SNMP_MGR1_IP}  ${NON_DEFAULT_PORT1}
1199e5626d2SGeorge Keishing    Delete SNMP Manager And Object  ${SNMP_MGR2_IP}  ${NON_DEFAULT_PORT1}
1209e5626d2SGeorge Keishing
1219e5626d2SGeorge KeishingConfigure Multiple SNMP Managers With Different Ports And Verify
1229e5626d2SGeorge Keishing    [Documentation]  Configure multiple SNMP Managers with different ports And Verify.
1239e5626d2SGeorge Keishing    [Tags]  Configure_Multiple_SNMP_Managers_With_Different_Ports_And_Verify
1249e5626d2SGeorge Keishing
1259e5626d2SGeorge Keishing    Configure SNMP Manager On BMC  ${SNMP_MGR1_IP}  ${SNMP_DEFAULT_PORT}  Valid
1269e5626d2SGeorge Keishing    Configure SNMP Manager On BMC  ${SNMP_MGR2_IP}  ${NON_DEFAULT_PORT1}  Valid
1279e5626d2SGeorge Keishing    Configure SNMP Manager On BMC  ${SNMP_MGR3_IP}  ${NON_DEFAULT_PORT2}  Valid
1289e5626d2SGeorge Keishing
1299e5626d2SGeorge Keishing    Verify SNMP Manager  ${SNMP_MGR1_IP}  ${SNMP_DEFAULT_PORT}
1309e5626d2SGeorge Keishing    Verify SNMP Manager  ${SNMP_MGR2_IP}  ${NON_DEFAULT_PORT1}
1319e5626d2SGeorge Keishing    Verify SNMP Manager  ${SNMP_MGR3_IP}  ${NON_DEFAULT_PORT2}
1329e5626d2SGeorge Keishing
1339e5626d2SGeorge Keishing    Delete SNMP Manager And Object  ${SNMP_MGR1_IP}  ${SNMP_DEFAULT_PORT}
1349e5626d2SGeorge Keishing    Delete SNMP Manager And Object  ${SNMP_MGR2_IP}  ${NON_DEFAULT_PORT1}
1359e5626d2SGeorge Keishing    Delete SNMP Manager And Object  ${SNMP_MGR3_IP}  ${NON_DEFAULT_PORT2}
1369e5626d2SGeorge Keishing
1379e5626d2SGeorge KeishingGenerate Error On BMC And Verify If Trap Is Sent
1389e5626d2SGeorge Keishing    [Documentation]  Generate Error On BMC And Verify If Trap Is Sent.
1399e5626d2SGeorge Keishing    [Tags]  Generate_Error_On_BMC_And_Verify_If_Trap_Is_Sent
1409e5626d2SGeorge Keishing    [Setup]  Install Tarball
1419e5626d2SGeorge Keishing    [Template]  Create Error On BMC And Verify If Trap Is Sent
1429e5626d2SGeorge Keishing
1439e5626d2SGeorge Keishing    # event_log                   expected_error
1449e5626d2SGeorge Keishing    ${CMD_DEBUG_TRABALL_ERROR}    ${SNMP_TRAP_BMC_ERROR}
1459e5626d2SGeorge Keishing
1469e5626d2SGeorge KeishingGenerate Error On BMC And Verify Trap On SNMP
1479e5626d2SGeorge Keishing    [Documentation]  Generate error on bmc and verify trap on SNMP.
1489e5626d2SGeorge Keishing    [Tags]  Generate_Error_On_BMC_And_Verify_Trap_On_SNMP
1499e5626d2SGeorge Keishing    [Template]  Create Error On BMC And Verify If Trap Is Sent
1509e5626d2SGeorge Keishing
1519e5626d2SGeorge Keishing     # event_log                  expected_error
1529e5626d2SGeorge Keishing     ${CMD_INTERNAL_FAILURE}      ${SNMP_TRAP_BMC_INTERNAL_FAILURE}
1539e5626d2SGeorge Keishing     ${CMD_FRU_CALLOUT}           ${SNMP_TRAP_BMC_CALLOUT_ERROR}
1549e5626d2SGeorge Keishing     ${CMD_INFORMATIONAL_ERROR}   ${SNMP_TRAP_BMC_INFORMATIONAL_ERROR}
1559e5626d2SGeorge Keishing
1569e5626d2SGeorge KeishingConfigure SNMP Manager With Less Octet IP And Verify
1579e5626d2SGeorge Keishing     [Documentation]  Configure SNMP manager on BMC with less octet IP and verify.
1589e5626d2SGeorge Keishing     [Tags]  Configure_SNMP_Manager_With_Less_Octet_IP_And_Verify
1599e5626d2SGeorge Keishing     [Template]  Configure SNMP Manager On BMC
1609e5626d2SGeorge Keishing
1619e5626d2SGeorge Keishing     # SNMP manager IP   Port                  Scenario
1629e5626d2SGeorge Keishing     10.10.10            ${SNMP_DEFAULT_PORT}  error
1639e5626d2SGeorge Keishing
1649e5626d2SGeorge KeishingVerify SNMP SysUpTime
1659e5626d2SGeorge Keishing    [Documentation]  Verify SNMP SysUpTime.
1669e5626d2SGeorge Keishing    [Tags]  Verify_SNMP_SysUpTime
1679e5626d2SGeorge Keishing
1689e5626d2SGeorge Keishing    Generate Error And Verify System Up Time
1699e5626d2SGeorge Keishing
1709e5626d2SGeorge Keishing
1719e5626d2SGeorge KeishingVerify SNMP SysUpTime On BMC Reboot
1729e5626d2SGeorge Keishing    [Documentation]  Verify SNMP SysUpTime on BMC reboot.
1739e5626d2SGeorge Keishing    [Tags]  Verify_SNMP_SysUpTime_On_BMC_Reboot
1749e5626d2SGeorge Keishing
1759e5626d2SGeorge Keishing    # Reboot BMC to reset system uptime.
1769e5626d2SGeorge Keishing    OBMC Reboot (off)
1779e5626d2SGeorge Keishing
1789e5626d2SGeorge Keishing    ${uptime}=  Generate Error And Verify System Up Time
1799e5626d2SGeorge Keishing
1809e5626d2SGeorge Keishing    # Check if uptime is reset after reboot.
1819e5626d2SGeorge Keishing    Should Be True  ${uptime} <= 1  msg=SNMP SysUpTime is not reset on reboot
1829e5626d2SGeorge Keishing
1839e5626d2SGeorge Keishing
1849e5626d2SGeorge Keishing*** Keywords ***
1859e5626d2SGeorge Keishing
1869e5626d2SGeorge KeishingCreate Error On BMC And Verify If Trap Is Sent
1879e5626d2SGeorge Keishing    [Documentation]  Generate error on BMC and verify if trap is sent.
1889e5626d2SGeorge Keishing    [Arguments]  ${event_log}=${CMD_INTERNAL_FAILURE}  ${expected_error}=${SNMP_TRAP_BMC_INTERNAL_FAILURE}
1899e5626d2SGeorge Keishing
1909e5626d2SGeorge Keishing    # Description of argument(s):
1919e5626d2SGeorge Keishing    # event_log                           Event logs to be created.
1929e5626d2SGeorge Keishing    # expected_error                      Expected error on SNMP.
1939e5626d2SGeorge Keishing
1949e5626d2SGeorge Keishing    Configure SNMP Manager On BMC  ${SNMP_MGR1_IP}  ${SNMP_DEFAULT_PORT}  Valid
1959e5626d2SGeorge Keishing
1969e5626d2SGeorge Keishing    Start SNMP Manager
1979e5626d2SGeorge Keishing    BMC Execute Command  ${event_log}
1989e5626d2SGeorge Keishing    SSHLibrary.Switch Connection  snmp_server
1999e5626d2SGeorge Keishing    ${SNMP_LISTEN_OUT}=  Read  delay=1s
2009e5626d2SGeorge Keishing    Delete SNMP Manager And Object  ${SNMP_MGR1_IP}  ${SNMP_DEFAULT_PORT}
2019e5626d2SGeorge Keishing    SSHLibrary.Execute Command  sudo killall snmptrapd
2029e5626d2SGeorge Keishing    ${lines} =  Split To Lines 	 ${SNMP_LISTEN_OUT}
2039e5626d2SGeorge Keishing    ${trap_info}=  Get From List  ${lines}  -1
2049e5626d2SGeorge Keishing    ${SNMP_TRAP} =  Split String  ${trap_info}  \t
2059e5626d2SGeorge Keishing
2069e5626d2SGeorge Keishing    Should Contain  ${SNMP_TRAP}[0]  DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks:
2079e5626d2SGeorge Keishing    Should Be Equal  ${SNMP_TRAP}[1]  SNMPv2-MIB::snmpTrapOID.0 = OID: SNMPv2-SMI::enterprises.49871.1.0.0.1
2089e5626d2SGeorge Keishing    Should Match Regexp  ${SNMP_TRAP}[2]  SNMPv2-SMI::enterprises.49871.1.0.1.1 = Gauge32: \[0-9]*
2099e5626d2SGeorge Keishing    Should Match Regexp  ${SNMP_TRAP}[3]  SNMPv2-SMI::enterprises.49871.1.0.1.2 = Opaque: UInt64: \[0-9]*
2109e5626d2SGeorge Keishing    Should Match Regexp  ${SNMP_TRAP}[4]  SNMPv2-SMI::enterprises.49871.1.0.1.3 = INTEGER: \[0-9]
2119e5626d2SGeorge Keishing    Should Be Equal  ${SNMP_TRAP}[5]  SNMPv2-SMI::enterprises.49871.1.0.1.4 = STRING: "${expected_error}"
2129e5626d2SGeorge Keishing
213409df05dSGeorge Keishing    RETURN  ${SNMP_TRAP}
2149e5626d2SGeorge Keishing
2159e5626d2SGeorge Keishing
2169e5626d2SGeorge KeishingGenerate Error And Verify System Up Time
2179e5626d2SGeorge Keishing    [Documentation]  Generate error and verify system up time.
2189e5626d2SGeorge Keishing
2199e5626d2SGeorge Keishing    # Get system uptime on BMC.
2209e5626d2SGeorge Keishing    # Example output of uptime:
2219e5626d2SGeorge Keishing    # (8055.79 15032.86)
2229e5626d2SGeorge Keishing
2239e5626d2SGeorge Keishing    ${cmd_output}   ${stderr}  ${rc}=  BMC Execute Command  cat /proc/uptime
2249e5626d2SGeorge Keishing    @{times}=  Split String  ${cmd_output}
2259e5626d2SGeorge Keishing
2269e5626d2SGeorge Keishing    ${bmc_uptime_in_minutes}=  Evaluate  int(${times}[0])/60
2279e5626d2SGeorge Keishing
2289e5626d2SGeorge Keishing    ${trap}=  Create Error On BMC And Verify If Trap Is Sent
2299e5626d2SGeorge Keishing
2309e5626d2SGeorge Keishing    # Extract System up time from SNMP trap.
2319e5626d2SGeorge Keishing    # Example - SNMP trap:
2329e5626d2SGeorge Keishing    # DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (252367) 0:42:03.67
2339e5626d2SGeorge Keishing    # SNMPv2-MIB::snmpTrapOID.0 = OID: SNMPv2-SMI::enterprises.49871.1.0.0.1
2349e5626d2SGeorge Keishing    # SNMPv2-SMI::enterprises.49871.1.0.1.1 = Gauge32: 54
2359e5626d2SGeorge Keishing    # SNMPv2-SMI::enterprises.49871.1.0.1.2 = Opaque: UInt64: 4622921648578756984
2369e5626d2SGeorge Keishing    # SNMPv2-SMI::enterprises.49871.1.0.1.3 = INTEGER: 3
2379e5626d2SGeorge Keishing    # SNMPv2-SMI::enterprises.49871.1.0.1.4 = STRING:
2389e5626d2SGeorge Keishing
2399e5626d2SGeorge Keishing    @{words}=  Split String  ${trap}[0]  =
2409e5626d2SGeorge Keishing
2419e5626d2SGeorge Keishing    ${timeticks}=  Fetch From Right  ${words}[1]  (
2429e5626d2SGeorge Keishing    ${snmp_sysuptime}=  Fetch From Left  ${timeticks}  )
2439e5626d2SGeorge Keishing
2449e5626d2SGeorge Keishing    # SNMP SysUptime will be in milli seconds.
2459e5626d2SGeorge Keishing    # Convert into minutes.
2469e5626d2SGeorge Keishing    ${sysuptime_in_minutes}=  Evaluate  int(${snmp_sysuptime})/6000
2479e5626d2SGeorge Keishing
2489e5626d2SGeorge Keishing    Should Be Equal As Integers  ${bmc_uptime_in_minutes}  ${sysuptime_in_minutes}
2499e5626d2SGeorge Keishing
250409df05dSGeorge Keishing    RETURN  ${sysuptime_in_minutes}
251