From 26318dc4b37cdc8352d07b477badd583d4567957 Mon Sep 17 00:00:00 2001 From: Tony Murray Date: Sat, 5 Nov 2022 14:43:54 -0500 Subject: [PATCH] Improve trap testing (#14546) * Improve trap testing Add helper log() to Trap Avoid saving to the database at all * style * Move all traps to $trap->log() * Update tests * Lint and style fixes * Use correct partial mock call * more style * Add docs * debug in ci * use the correct log function.................... * all, I guess * not the first?? * 3rd? * use event_id to order --- LibreNMS/Snmptrap/Dispatcher.php | 8 +- .../AdvaAccThresholdCrossingAlert.php | 9 +- .../Snmptrap/Handlers/AdvaAttributeChange.php | 141 ++- .../AdvaNetThresholdCrossingAlert.php | 9 +- .../Handlers/AdvaNetworkElementAlmTrap.php | 3 +- .../Snmptrap/Handlers/AdvaObjectCreation.php | 5 +- .../Snmptrap/Handlers/AdvaObjectDeletion.php | 9 +- .../Handlers/AdvaSnmpDyingGaspTrap.php | 3 +- .../Snmptrap/Handlers/AdvaStateChangeTrap.php | 7 +- LibreNMS/Snmptrap/Handlers/AdvaSysAlmTrap.php | 3 +- .../Handlers/AlechassisTrapsAlert.php | 5 +- .../Snmptrap/Handlers/Aos6CfgSavedTrap.php | 3 +- LibreNMS/Snmptrap/Handlers/Aos6DoSTrap.php | 3 +- .../Snmptrap/Handlers/Aos6HicServerTrap.php | 3 +- .../Aos6LbdStateChangeForAutoRecovery.php | 3 +- .../Handlers/Aos6LbdStateChangeToShutdown.php | 3 +- .../Handlers/Aos6StackMgrDuplicateSlot.php | 3 +- .../Handlers/Aos6StackMgrRoleChange.php | 3 +- .../Snmptrap/Handlers/Aos7portViolation.php | 3 +- .../Aos7portViolationNotification.php | 3 +- LibreNMS/Snmptrap/Handlers/Aos7stpNewRoot.php | 3 +- .../Handlers/Aos7stpRootPortChange.php | 3 +- LibreNMS/Snmptrap/Handlers/ApcOnBattery.php | 3 +- .../Snmptrap/Handlers/ApcPduNearOverload.php | 3 +- .../Handlers/ApcPduNearOverloadCleared.php | 3 +- .../Snmptrap/Handlers/ApcPduOutletOff.php | 3 +- LibreNMS/Snmptrap/Handlers/ApcPduOutletOn.php | 3 +- .../Snmptrap/Handlers/ApcPduOutletReboot.php | 3 +- LibreNMS/Snmptrap/Handlers/ApcPduOverload.php | 3 +- .../Handlers/ApcPduOverloadCleared.php | 3 +- .../Snmptrap/Handlers/ApcPowerRestored.php | 3 +- .../Snmptrap/Handlers/ApcSmartAvrReducing.php | 3 +- .../Handlers/ApcSmartAvrReducingOff.php | 3 +- .../Handlers/AuthenticationFailure.php | 3 +- .../Handlers/BgpBackwardTransition.php | 2 +- LibreNMS/Snmptrap/Handlers/BgpEstablished.php | 2 +- LibreNMS/Snmptrap/Handlers/BridgeNewRoot.php | 3 +- .../Handlers/BridgeTopologyChanged.php | 3 +- .../CiscoErrDisableInterfaceEvent.php | 5 +- .../Snmptrap/Handlers/CiscoMacViolation.php | 3 +- LibreNMS/Snmptrap/Handlers/ColdBoot.php | 3 +- LibreNMS/Snmptrap/Handlers/CpLowBattery.php | 3 +- .../Snmptrap/Handlers/CpPowerRestored.php | 3 +- LibreNMS/Snmptrap/Handlers/CpRtnDischarge.php | 3 +- .../Snmptrap/Handlers/CpRtnLowBattery.php | 3 +- .../Handlers/CpUpsBatteryNotPresent.php | 3 +- .../Snmptrap/Handlers/CpUpsChargerFailure.php | 3 +- .../Snmptrap/Handlers/CpUpsDiagFailed.php | 3 +- .../Snmptrap/Handlers/CpUpsDiagPassed.php | 3 +- .../Snmptrap/Handlers/CpUpsDischarged.php | 3 +- LibreNMS/Snmptrap/Handlers/CpUpsOnBattery.php | 3 +- LibreNMS/Snmptrap/Handlers/CpUpsOverTemp.php | 3 +- LibreNMS/Snmptrap/Handlers/CpUpsOverload.php | 3 +- .../Snmptrap/Handlers/CpUpsRebootStarted.php | 3 +- .../Handlers/CpUpsRtnChargerFailure.php | 3 +- .../Snmptrap/Handlers/CpUpsRtnDischarged.php | 3 +- .../Snmptrap/Handlers/CpUpsRtnOverTemp.php | 3 +- .../Snmptrap/Handlers/CpUpsRtnOverload.php | 3 +- LibreNMS/Snmptrap/Handlers/CpUpsSleeping.php | 3 +- .../Handlers/CpUpsStartBatteryTest.php | 3 +- LibreNMS/Snmptrap/Handlers/CpUpsTurnedOff.php | 3 +- LibreNMS/Snmptrap/Handlers/CpUpsWokeUp.php | 3 +- .../Handlers/EntityDatabaseConfigChanged.php | 3 +- .../Snmptrap/Handlers/EquipStatusTrap.php | 28 +- .../Snmptrap/Handlers/FailedUserLogin.php | 3 +- .../Snmptrap/Handlers/FgTrapAvOversize.php | 3 +- .../Snmptrap/Handlers/FgTrapIpsAnomaly.php | 3 +- .../Snmptrap/Handlers/FgTrapIpsPkgUpdate.php | 3 +- .../Snmptrap/Handlers/FgTrapIpsSignature.php | 3 +- .../Snmptrap/Handlers/FgTrapVpnTunDown.php | 3 +- LibreNMS/Snmptrap/Handlers/FgTrapVpnTunUp.php | 3 +- .../Handlers/FmTrapLogRateThreshold.php | 3 +- LibreNMS/Snmptrap/Handlers/HpFault.php | 9 +- .../Handlers/JnxBgpM2BackwardTransition.php | 2 +- .../Snmptrap/Handlers/JnxBgpM2Established.php | 2 +- LibreNMS/Snmptrap/Handlers/JnxCmCfgChange.php | 5 +- .../Snmptrap/Handlers/JnxDomAlarmCleared.php | 3 +- LibreNMS/Snmptrap/Handlers/JnxDomAlarmId.php | 5 +- LibreNMS/Snmptrap/Handlers/JnxDomAlarmSet.php | 3 +- .../Handlers/JnxDomLaneAlarmCleared.php | 2 +- .../Snmptrap/Handlers/JnxDomLaneAlarmId.php | 5 +- .../Snmptrap/Handlers/JnxDomLaneAlarmSet.php | 2 +- LibreNMS/Snmptrap/Handlers/JnxLdpLspDown.php | 3 +- LibreNMS/Snmptrap/Handlers/JnxLdpLspUp.php | 3 +- LibreNMS/Snmptrap/Handlers/JnxLdpSesDown.php | 2 +- LibreNMS/Snmptrap/Handlers/JnxLdpSesUp.php | 2 +- .../Handlers/JnxPowerSupplyFailure.php | 3 +- .../Snmptrap/Handlers/JnxPowerSupplyOk.php | 3 +- LibreNMS/Snmptrap/Handlers/JnxVpnIfDown.php | 3 +- LibreNMS/Snmptrap/Handlers/JnxVpnIfUp.php | 5 +- LibreNMS/Snmptrap/Handlers/JnxVpnPwDown.php | 3 +- LibreNMS/Snmptrap/Handlers/JnxVpnPwUp.php | 3 +- LibreNMS/Snmptrap/Handlers/LinkDown.php | 6 +- LibreNMS/Snmptrap/Handlers/LinkUp.php | 6 +- LibreNMS/Snmptrap/Handlers/LogTrap.php | 28 +- .../Snmptrap/Handlers/Mgnt2TrapNmsAlarm.php | 3 +- .../Snmptrap/Handlers/Mgnt2TrapNmsEvent.php | 3 +- .../Snmptrap/Handlers/OspfIfStateChange.php | 2 +- .../Snmptrap/Handlers/OspfNbrStateChange.php | 3 +- .../Snmptrap/Handlers/OspfTxRetransmit.php | 5 +- .../Snmptrap/Handlers/RuckusAssocTrap.php | 3 +- .../Snmptrap/Handlers/RuckusDiassocTrap.php | 3 +- LibreNMS/Snmptrap/Handlers/RuckusSetError.php | 3 +- LibreNMS/Snmptrap/Handlers/RuckusSzApConf.php | 3 +- .../Snmptrap/Handlers/RuckusSzApConnect.php | 3 +- .../Snmptrap/Handlers/RuckusSzApMiscEvent.php | 3 +- .../Snmptrap/Handlers/RuckusSzApReboot.php | 3 +- .../Handlers/RuckusSzClusterInMaintenance.php | 3 +- .../Handlers/RuckusSzClusterInService.php | 3 +- .../Snmptrap/Handlers/RuckusSzSeverity.php | 30 +- .../Snmptrap/Handlers/SnTrapUserLogin.php | 3 +- .../Snmptrap/Handlers/SnTrapUserLogout.php | 3 +- .../Snmptrap/Handlers/TrippliteAlarmAdded.php | 2 +- .../Handlers/TrippliteAlarmRemoved.php | 2 +- .../Snmptrap/Handlers/UpsTrapOnBattery.php | 2 +- .../Snmptrap/Handlers/UpsmgUtilityFailure.php | 2 +- .../Handlers/UpsmgUtilityRestored.php | 2 +- .../Handlers/VeeamBackupJobCompleted.php | 3 +- .../Snmptrap/Handlers/VeeamCdpRpoReport.php | 3 +- .../Handlers/VeeamLinuxFLRCopyToFinished.php | 3 +- .../Handlers/VeeamLinuxFLRCopyToStarted.php | 3 +- .../Handlers/VeeamLinuxFLRMountStarted.php | 3 +- .../VeeamLinuxFLRToOriginalFinished.php | 3 +- .../VeeamLinuxFLRToOriginalStarted.php | 3 +- .../Handlers/VeeamSobrOffloadFinished.php | 3 +- .../Handlers/VeeamVmBackupCompleted.php | 3 +- .../Handlers/VeeamWebDownloadFinished.php | 3 +- .../Handlers/VeeamWebDownloadStart.php | 3 +- .../Handlers/VeeamWinFLRCopyToFinished.php | 3 +- .../Handlers/VeeamWinFLRCopyToStarted.php | 3 +- .../Handlers/VeeamWinFLRMountStarted.php | 3 +- .../VeeamWinFLRToOriginalFinished.php | 3 +- .../Handlers/VeeamWinFLRToOriginalStarted.php | 3 +- .../Snmptrap/Handlers/VmwVmHBDetected.php | 3 +- LibreNMS/Snmptrap/Handlers/VmwVmHBLost.php | 3 +- .../Snmptrap/Handlers/VmwVmPoweredOff.php | 7 +- LibreNMS/Snmptrap/Handlers/VmwVmPoweredOn.php | 3 +- LibreNMS/Snmptrap/Handlers/VmwVmSuspended.php | 3 +- LibreNMS/Snmptrap/Handlers/WarmBoot.php | 3 +- LibreNMS/Snmptrap/Trap.php | 87 +- database/factories/DeviceFactory.php | 1 + doc/Developing/SNMP-Traps.md | 41 +- phpstan-baseline.neon | 1030 ----------------- tests/DBTestCase.php | 11 +- .../AdvaAccThresholdCrossingAlertTest.php | 85 +- .../SnmpTraps/AdvaAttributeChangeTest.php | 649 +++++------ .../SnmpTraps/AdvaDyingGaspTrapTest.php | 26 +- .../AdvaNetThresholdCrossingAlertTest.php | 80 +- .../AdvaNetworkElementAlmTrapTest.php | 108 +- .../SnmpTraps/AdvaObjectCreationTest.php | 46 +- .../SnmpTraps/AdvaObjectDeletionTest.php | 88 +- .../SnmpTraps/AdvaStateChangeTrapTest.php | 67 +- .../Feature/SnmpTraps/AdvaSysAlmTrapTest.php | 92 +- tests/Feature/SnmpTraps/ApcOnBatteryTest.php | 26 +- tests/Feature/SnmpTraps/ApcPduOutletTest.php | 67 +- .../Feature/SnmpTraps/ApcPduOverloadTest.php | 108 +- .../SnmpTraps/ApcPowerRestoredTest.php | 26 +- .../SnmpTraps/ApcSmartAvrReducingOffTest.php | 26 +- .../SnmpTraps/ApcSmartAvrReducingTest.php | 26 +- tests/Feature/SnmpTraps/BgpTrapTest.php | 57 +- .../CiscoErrDisableInterfaceEventTest.php | 51 +- .../SnmpTraps/CiscoMacViolationTest.php | 24 +- tests/Feature/SnmpTraps/CommonTrapTest.php | 154 +-- .../Feature/SnmpTraps/CyberPowerTrapsTest.php | 476 ++++---- .../SnmpTraps/FgTrapAvOversizeTest.php | 24 +- tests/Feature/SnmpTraps/FgTrapIpsTest.php | 59 +- tests/Feature/SnmpTraps/FgTrapVpnTunTest.php | 41 +- .../SnmpTraps/FmTrapLogRateThresholdTest.php | 25 +- tests/Feature/SnmpTraps/HpFaultTest.php | 69 +- tests/Feature/SnmpTraps/JnxBgpM2Test.php | 122 +- .../Feature/SnmpTraps/JnxCmCfgChangeTest.php | 44 +- tests/Feature/SnmpTraps/JnxDomAlarmTest.php | 41 +- .../Feature/SnmpTraps/JnxDomLaneAlarmTest.php | 63 +- tests/Feature/SnmpTraps/JnxLdpLspTest.php | 41 +- tests/Feature/SnmpTraps/JnxLdpSesTest.php | 59 +- .../Feature/SnmpTraps/JnxPowerSupplyTest.php | 46 +- tests/Feature/SnmpTraps/JnxVpnIfTest.php | 41 +- tests/Feature/SnmpTraps/JnxVpnPwTest.php | 41 +- .../SnmpTraps/MgmtTrapNmsAlarmTest.php | 127 +- .../SnmpTraps/MgmtTrapNmsEventTest.php | 119 +- .../SnmpTraps/NetgearFailedUserLoginTest.php | 46 +- .../SnmpTraps/OspfIfStateChangeTest.php | 141 +-- .../SnmpTraps/OspfNbrStateChangeTest.php | 70 +- .../SnmpTraps/OspfTxRetransmitTest.php | 42 +- tests/Feature/SnmpTraps/PortsTrapTest.php | 60 +- tests/Feature/SnmpTraps/RuckusEventTest.php | 67 +- .../SnmpTraps/RuckusSzClusterStateTest.php | 59 +- tests/Feature/SnmpTraps/RuckusSzEventTest.php | 156 ++- .../Feature/SnmpTraps/SnTrapUserAuthTest.php | 46 +- tests/Feature/SnmpTraps/SnmpTrapTestCase.php | 45 +- tests/Feature/SnmpTraps/TrippliteTrapTest.php | 48 +- .../SnmpTraps/UpsTrapOnBatteryTest.php | 30 +- .../SnmpTraps/UpsTrapsOnBatteryTest.php | 32 +- tests/Feature/SnmpTraps/VeeamTrapTest.php | 131 +-- tests/Feature/SnmpTraps/VmwHBTest.php | 44 +- tests/Feature/SnmpTraps/VmwPowerStateTest.php | 73 +- tests/Traits/RequiresDatabase.php | 38 + 197 files changed, 2349 insertions(+), 3870 deletions(-) create mode 100644 tests/Traits/RequiresDatabase.php diff --git a/LibreNMS/Snmptrap/Dispatcher.php b/LibreNMS/Snmptrap/Dispatcher.php index bc141ab1f3..6133361a1d 100644 --- a/LibreNMS/Snmptrap/Dispatcher.php +++ b/LibreNMS/Snmptrap/Dispatcher.php @@ -35,10 +35,10 @@ class Dispatcher /** * Instantiate the correct handler for this trap and call it's handle method */ - public static function handle(Trap $trap) + public static function handle(Trap $trap): bool { if (empty($trap->getDevice())) { - Log::warning('Could not find device for trap', ['trap_text' => $trap->getRaw()]); + Log::warning('Could not find device for trap', ['trap_text' => $trap->raw]); return false; } @@ -47,7 +47,7 @@ class Dispatcher // Even the TrapOid is not properly converted to text, so snmptrapd is probably not // configured with any MIBs (-M and/or -m). // LibreNMS snmptraps code cannot process received data. Let's inform the user. - Log::event('Misconfigured MIBS or MIBDIRS for snmptrapd, check https://docs.librenms.org/Extensions/SNMP-Trap-Handler/ : ' . $trap->getRaw(), $trap->getDevice(), 'system'); + Log::event('Misconfigured MIBS or MIBDIRS for snmptrapd, check https://docs.librenms.org/Extensions/SNMP-Trap-Handler/ : ' . $trap->raw, $trap->getDevice(), 'system'); return false; } @@ -62,7 +62,7 @@ class Dispatcher $logging = Config::get('snmptraps.eventlog', 'unhandled'); $detailed = Config::get('snmptraps.eventlog_detailed', false); if ($logging == 'all' || ($fallback && $logging == 'unhandled')) { - Log::event($trap->toString($detailed), $trap->getDevice(), 'trap'); + $trap->log($trap->toString($detailed)); } else { $rules = new AlertRules; $rules->runRules($trap->getDevice()->device_id); diff --git a/LibreNMS/Snmptrap/Handlers/AdvaAccThresholdCrossingAlert.php b/LibreNMS/Snmptrap/Handlers/AdvaAccThresholdCrossingAlert.php index 1d22be6016..82b6f22f70 100644 --- a/LibreNMS/Snmptrap/Handlers/AdvaAccThresholdCrossingAlert.php +++ b/LibreNMS/Snmptrap/Handlers/AdvaAccThresholdCrossingAlert.php @@ -31,7 +31,6 @@ use App\Models\Device; use Illuminate\Support\Str; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class AdvaAccThresholdCrossingAlert implements SnmptrapHandler { @@ -43,7 +42,7 @@ class AdvaAccThresholdCrossingAlert implements SnmptrapHandler * @param Trap $trap * @return void */ - public function handle(Device $device, Trap $trap) + public function handle(Device $device, Trap $trap): void { $interval = $trap->getOidData($trap->findOid('CM-PERFORMANCE-MIB::cmEthernetAccPortThresholdInterval')); $ifName = $trap->getOidData($trap->findOid('IF-MIB::ifName')); @@ -52,10 +51,10 @@ class AdvaAccThresholdCrossingAlert implements SnmptrapHandler $trap->getOidData($trap->findOid('CM-PERFORMANCE-MIB::cmEthernetAccPortThresholdVariable')) ); - Log::event("$ifName $thresholdMessage threshold exceeded for $interval", $device->device_id, 'trap', 2); + $trap->log("$ifName $thresholdMessage threshold exceeded for $interval"); } - public function getThresholdMessage($thresholdOid) + public function getThresholdMessage(string $thresholdOid): string { foreach ($this->getThresholds() as $oid => $descr) { if (Str::contains($thresholdOid, $oid)) { @@ -66,7 +65,7 @@ class AdvaAccThresholdCrossingAlert implements SnmptrapHandler return 'unknown'; } - public function getThresholds() + public function getThresholds(): array { return [ 'CM-PERFORMANCE-MIB::cmEthernetAccPortStatsUAS' => 'unavailable seconds', diff --git a/LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php b/LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php index 5e19223736..e8a4b1c57f 100644 --- a/LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php +++ b/LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php @@ -32,7 +32,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class AdvaAttributeChange implements SnmptrapHandler { @@ -44,164 +43,164 @@ class AdvaAttributeChange implements SnmptrapHandler * @param Trap $trap * @return void */ - public function handle(Device $device, Trap $trap) + public function handle(Device $device, Trap $trap): void { if ($trap->findOid('CM-SYSTEM-MIB::sysLog')) { - $this->handleSyslogChg($device, $trap); + $this->handleSyslogChg($trap); } elseif ($trap->findOid('CM-SYSTEM-MIB::aclEntry')) { - $this->handleAclChg($device, $trap); + $this->handleAclChg($trap); } elseif ($trap->findOid('CM-SYSTEM-MIB::securityBanner')) { - Log::event('MOTD/Banner modified', $device->device_id, 'trap', 2); + $trap->log('MOTD/Banner modified'); } elseif ($trap->findOid('CM-SYSTEM-MIB::sysTimeOfDayType')) { - $this->handleTimeSrcChg($device, $trap); + $this->handleTimeSrcChg($trap); } elseif ($trap->findOid('F3-TIMEZONE-MIB::f3TimeZone')) { - $this->handleTimeZoneChg($device, $trap); + $this->handleTimeZoneChg($trap); } elseif ($trap->findOid('CM-SYSTEM-MIB::ntp')) { - $this->handleNtpChg($device, $trap); + $this->handleNtpChg($trap); } elseif ($trap->findOid('CM-SECURITY-MIB::cmRemoteAuthServer')) { - $this->handleAuthSvrChg($device, $trap); + $this->handleAuthSvrChg($trap); } elseif ($trap->findOid('CM-ENTITY-MIB::ne')) { - $this->handleNeChg($device, $trap); + $this->handleNeChg($trap); } elseif ($trap->findOid('CM-ENTITY-MIB::ethernetNTEGE114ProCardSnmpDyingGaspEnabled')) { - $this->handleDyingGaspChg($device, $trap); + $this->handleDyingGaspChg($trap); } elseif ($trap->findOid('CM-FACILITY-MIB::cmEthernetNetPort')) { - $this->handleNetPortChg($device, $trap); + $this->handleNetPortChg($trap); } elseif ($trap->findOid('CM-FACILITY-MIB::cmEthernetAccPort')) { - $this->handleAccPortChg($device, $trap); + $this->handleAccPortChg($trap); } elseif ($trap->findOid('CM-FACILITY-MIB::cmFlow')) { - $this->handleFlowChg($device, $trap); + $this->handleFlowChg($trap); } elseif ($trap->findOid('F3-LAG-MIB')) { - $this->handleLagChg($device, $trap); + $this->handleLagChg($trap); } elseif ($trap->findOid('CM-FACILITY-MIB::cmQosFlow')) { - $this->handleQosFlowChg($device, $trap); + $this->handleQosFlowChg($trap); } elseif ($trap->findOid('CM-FACILITY-MIB::cmQosShaper')) { - $this->handleQosShaperChg($device, $trap); + $this->handleQosShaperChg($trap); } elseif ($trap->findOid('CM-FACILITY-MIB::cmAccPort')) { - $this->handleAccPortShaperChg($device, $trap); + $this->handleAccPortShaperChg($trap); } } - public static function handleSyslogChg($device, $trap) + public function handleSyslogChg(Trap $trap): void { $syslogEntry = substr($trap->findOid('CM-SYSTEM-MIB::sysLog'), -1); if ($trap->findOid('CM-SYSTEM-MIB::sysLogIpVersion')) { $ipVer = $trap->getOidData($trap->findOid('CM-SYSTEM-MIB::sysLogIpVersion')); - Log::event("Syslog server $syslogEntry IP version set to $ipVer", $device->device_id, 'trap', 2); + $trap->log("Syslog server $syslogEntry IP version set to $ipVer"); } if ($trap->findOid('CM-SYSTEM-MIB::sysLogIpAddress')) { $ipAddr = $trap->getOidData($trap->findOid('CM-SYSTEM-MIB::sysLogIpAddress')); - Log::event("Syslog server $syslogEntry IP address changed to $ipAddr", $device->device_id, 'trap', 2); + $trap->log("Syslog server $syslogEntry IP address changed to $ipAddr"); } if ($trap->findOid('CM-SYSTEM-MIB::sysLogIpv6Addr')) { $ip6Addr = $trap->getOidData($trap->findOid('CM-SYSTEM-MIB::sysLogIpv6Addr')); - Log::event("Syslog server $syslogEntry IP address changed to $ip6Addr", $device->device_id, 'trap', 2); + $trap->log("Syslog server $syslogEntry IP address changed to $ip6Addr"); } if ($trap->findOid('CM-SYSTEM-MIB::sysLogPort')) { $syslogPort = $trap->getOidData($trap->findOid('CM-SYSTEM-MIB::sysLogPort')); - Log::event("Syslog server $syslogEntry port changed to $syslogPort", $device->device_id, 'trap', 2); + $trap->log("Syslog server $syslogEntry port changed to $syslogPort"); } } - public static function handleAclChg($device, $trap) + public function handleAclChg(Trap $trap): void { $aclEntry = substr($trap->findOid('CM-SYSTEM-MIB::aclEntry'), -1); - Log::event("ACL $aclEntry modified", $device->device_id, 'trap', 2); + $trap->log("ACL $aclEntry modified"); } - public static function handleTimeSrcChg($device, $trap) + public function handleTimeSrcChg(Trap $trap): void { $timeSrc = $trap->getOidData($trap->findOid('CM-SYSTEM-MIB::sysTimeOfDayType')); - Log::event("Time source set to $timeSrc", $device->device_id, 'trap', 2); + $trap->log("Time source set to $timeSrc"); } - public static function handleTimeZoneChg($device, $trap) + public function handleTimeZoneChg(Trap $trap): void { $enabled = $trap->getOidData($trap->findOid('F3-TIMEZONE-MIB::f3TimeZoneDstControlEnabled')); if ('true' === $enabled && $trap->findOid('F3-TIMEZONE-MIB::f3TimeZoneDstControlEnabled')) { - Log::event('Daylight Savings Time enabled', $device->device_id, 'trap', 2); + $trap->log('Daylight Savings Time enabled'); } elseif ('false' === $enabled && $trap->findOid('F3-TIMEZONE-MIB::f3TimeZoneDstControlEnabled')) { - Log::event('Daylight Savings Time disabled', $device->device_id, 'trap', 2); + $trap->log('Daylight Savings Time disabled'); } if ($trap->findOid('F3-TIMEZONE-MIB::f3TimeZoneUtcOffset')) { $dstOffset = $trap->getOidData($trap->findOid('F3-TIMEZONE-MIB::f3TimeZoneUtcOffset')); - Log::event("UTC offset (timezone) change to $dstOffset", $device->device_id, 'trap', 2); + $trap->log("UTC offset (timezone) change to $dstOffset"); } } - public static function handleNtpChg($device, $trap) + public function handleNtpChg(Trap $trap): void { if ($trap->findOid('CM-SYSTEM-MIB::ntpPrimaryServer')) { $primaryIP = $trap->getOidData($trap->findOid('CM-SYSTEM-MIB::ntpPrimaryServer')); - Log::event("Primary NTP server IP changed to $primaryIP", $device->device_id, 'trap', 2); + $trap->log("Primary NTP server IP changed to $primaryIP"); } if ($trap->findOid('CM-SYSTEM-MIB::ntpBackupServer')) { $backupIP = $trap->getOidData($trap->findOid('CM-SYSTEM-MIB::ntpBackupServer')); - Log::event("Backup NTP server IP changed to $backupIP", $device->device_id, 'trap', 2); + $trap->log("Backup NTP server IP changed to $backupIP"); } } - public static function handleAuthSvrChg($device, $trap) + public function handleAuthSvrChg(Trap $trap): void { if ($trap->findOid('CM-SECURITY-MIB::cmRemoteAuthServerIpAddress')) { $serverEntry = substr($trap->findOid('CM-SECURITY-MIB::cmRemoteAuthServerIpAddress'), -1); $serverIP = $trap->getOidData($trap->findOid('CM-SECURITY-MIB::cmRemoteAuthServerIpAddress')); - Log::event("Authentication server $serverEntry IP changed to $serverIP", $device->device_id, 'trap', 2); + $trap->log("Authentication server $serverEntry IP changed to $serverIP"); } if ($trap->findOid('CM-SECURITY-MIB::cmRemoteAuthServerSecret')) { $serverEntry = substr($trap->findOid('CM-SECURITY-MIB::cmRemoteAuthServerSecret'), -1); - Log::event("Authentication server $serverEntry secret changed", $device->device_id, 'trap', 2); + $trap->log("Authentication server $serverEntry secret changed"); } if ($trap->findOid('CM-SECURITY-MIB::cmRemoteAuthServerEnabled')) { $serverEntry = substr($trap->findOid('CM-SECURITY-MIB::cmRemoteAuthServerEnabled'), -1); $serverEnable = $trap->getOidData($trap->findOid('CM-SECURITY-MIB::cmRemoteAuthServerEnabled')); if ('true' === $serverEnable) { - Log::event("Authentication server $serverEntry enabled", $device->device_id, 'trap', 2); + $trap->log("Authentication server $serverEntry enabled"); } else { - Log::event("Authentication server $serverEntry disabled", $device->device_id, 'trap', 2); + $trap->log("Authentication server $serverEntry disabled"); } } } - public static function handleNeChg($device, $trap) + public function handleNeChg(Trap $trap): void { if ($trap->findOid('CM-ENTITY-MIB::neName')) { $neName = $trap->getOidData($trap->findOid('CM-ENTITY-MIB::neName')); - Log::event("Network Element name changed to $neName", $device->device_id, 'trap', 2); + $trap->log("Network Element name changed to $neName"); } if ($trap->findOid('CM-ENTITY-MIB::neCmdPromptPrefix')) { $neCLI = $trap->getOidData($trap->findOid('CM-ENTITY-MIB::neCmdPromptPrefix')); - Log::event("Network Element prompt changed to $neCLI", $device->device_id, 'trap', 2); + $trap->log("Network Element prompt changed to $neCLI"); } } - public static function handleDyingGaspChg($device, $trap) + public function handleDyingGaspChg(Trap $trap): void { $nteSDGEnable = $trap->getOidData($trap->findOid('CM-ENTITY-MIB::ethernetNTEGE114ProCardSnmpDyingGaspEnabled')); if ('true' === $nteSDGEnable && $trap->findOid('CM-ENTITY-MIB::ethernetNTEGE114ProCardSnmpDyingGaspEnabled')) { - Log::event('SNMP Dying Gasp is enabled', $device->device_id, 'trap', 2); + $trap->log('SNMP Dying Gasp is enabled'); } elseif ('false' === $nteSDGEnable && $trap->findOid('CM-ENTITY-MIB::ethernetNTEGE114ProCardSnmpDyingGaspEnabled')) { - Log::event('SNMP Dying Gasp is disabled', $device->device_id, 'trap', 2); + $trap->log('SNMP Dying Gasp is disabled'); } } - public static function handleNetPortChg($device, $trap) + public function handleNetPortChg(Trap $trap): void { $netPort = substr($trap->findOid('CM-FACILITY-MIB::cmEthernetNetPort'), -7); $netPort = str_replace('.', '-', $netPort); $neDefMessage = false; if ($trap->findOid('CM-FACILITY-MIB::cmEthernetNetPortConfigSpeed')) { $netSpeed = $trap->getOidData($trap->findOid('CM-FACILITY-MIB::cmEthernetNetPortConfigSpeed')); - Log::event("Network Port $netPort changed speed to $netSpeed", $device->device_id, 'trap', 2); + $trap->log("Network Port $netPort changed speed to $netSpeed"); $neDefMessage = true; } if ($trap->findOid('CM-FACILITY-MIB::cmEthernetNetPortMediaType')) { $netMedia = $trap->getOidData($trap->findOid('CM-FACILITY-MIB::cmEthernetNetPortMediaType')); - Log::event("Network Port $netPort changed media to $netMedia", $device->device_id, 'trap', 2); + $trap->log("Network Port $netPort changed media to $netMedia"); $neDefMessage = true; } if ($trap->findOid('CM-FACILITY-MIB::cmEthernetNetPortMDIXType')) { $netMDIX = $trap->getOidData($trap->findOid('CM-FACILITY-MIB::cmEthernetNetPortMDIXType')); - Log::event("Network Port $netPort changed MDIX to $netMDIX", $device->device_id, 'trap', 2); + $trap->log("Network Port $netPort changed MDIX to $netMDIX"); $neDefMessage = true; } if ($trap->findOid('CM-FACILITY-MIB::cmEthernetNetPortAutoDiagEnabled')) { @@ -211,43 +210,43 @@ class AdvaAttributeChange implements SnmptrapHandler } else { $message = "Network Port $netPort AutoDiagnostic disabled"; } - Log::event($message, $device->device_id, 'trap', 2); + $trap->log($message); $neDefMessage = true; } if ($trap->findOid('CM-FACILITY-MIB::cmEthernetNetPortAdminState')) { $netAdminState = $trap->getOidData($trap->findOid('CM-FACILITY-MIB::cmEthernetNetPortAdminState')); - Log::event("Network Port $netPort administrative state changed to $netAdminState", $device->device_id, 'trap', 2); + $trap->log("Network Port $netPort administrative state changed to $netAdminState"); $neDefMessage = true; } if ($trap->findOid('CM-FACILITY-MIB::cmEthernetNetPortMTU')) { $netMTU = $trap->getOidData($trap->findOid('CM-FACILITY-MIB::cmEthernetNetPortMTU')); - Log::event("Network Port $netPort MTU changed to $netMTU bytes", $device->device_id, 'trap', 2); + $trap->log("Network Port $netPort MTU changed to $netMTU bytes"); $neDefMessage = true; } if ($neDefMessage === false) { /* Catch all other Access Port changes and give a generic message */ - Log::event("Network Port $netPort modified", $device->device_id, 'trap', 2); + $trap->log("Network Port $netPort modified"); } } - public static function handleAccPortChg($device, $trap) + public function handleAccPortChg(Trap $trap): void { $accPort = substr($trap->findOid('CM-FACILITY-MIB::cmEthernetAccPort'), -7); $accPort = str_replace('.', '-', $accPort); $accDefMessage = false; if ($trap->findOid('CM-FACILITY-MIB::cmEthernetAccPortConfigSpeed')) { $accSpeed = $trap->getOidData($trap->findOid('CM-FACILITY-MIB::cmEthernetAccPortConfigSpeed')); - Log::event("Access Port $accPort changed speed to $accSpeed", $device->device_id, 'trap', 2); + $trap->log("Access Port $accPort changed speed to $accSpeed"); $accDefMessage = true; } if ($trap->findOid('CM-FACILITY-MIB::cmEthernetAccPortMediaType')) { $accMedia = $trap->getOidData($trap->findOid('CM-FACILITY-MIB::cmEthernetAccPortMediaType')); - Log::event("Access Port $accPort changed media to $accMedia", $device->device_id, 'trap', 2); + $trap->log("Access Port $accPort changed media to $accMedia"); $accDefMessage = true; } if ($trap->findOid('CM-FACILITY-MIB::cmEthernetAccPortMDIXType')) { $accMDIX = $trap->getOidData($trap->findOid('CM-FACILITY-MIB::cmEthernetAccPortMDIXType')); - Log::event("Access Port $accPort changed MDIX to $accMDIX", $device->device_id, 'trap', 2); + $trap->log("Access Port $accPort changed MDIX to $accMDIX"); $accDefMessage = true; } if ($trap->findOid('CM-FACILITY-MIB::cmEthernetAccPortAutoDiagEnabled')) { @@ -257,56 +256,56 @@ class AdvaAttributeChange implements SnmptrapHandler } else { $message = "Access Port $accPort AutoDiagnostic disabled"; } - Log::event($message, $device->device_id, 'trap', 2); + $trap->log($message); $accDefMessage = true; } if ($trap->findOid('CM-FACILITY-MIB::cmEthernetAccPortAdminState')) { $accAdminState = $trap->getOidData($trap->findOid('CM-FACILITY-MIB::cmEthernetAccPortAdminState')); - Log::event("Access Port $accPort administrative state changed to $accAdminState", $device->device_id, 'trap', 2); + $trap->log("Access Port $accPort administrative state changed to $accAdminState"); $accDefMessage = true; } if ($trap->findOid('CM-FACILITY-MIB::cmEthernetAccPortMTU')) { $accMTU = $trap->getOidData($trap->findOid('CM-FACILITY-MIB::cmEthernetAccPortMTU')); - Log::event("Access Port $accPort MTU changed to $accMTU bytes", $device->device_id, 'trap', 2); + $trap->log("Access Port $accPort MTU changed to $accMTU bytes"); $accDefMessage = true; } if ($accDefMessage === false) { /* Catch all other Access Port changes and give a generic message */ - Log::event("Access Port $accPort modified", $device->device_id, 'trap', 2); + $trap->log("Access Port $accPort modified"); } } - public static function handleFlowChg($device, $trap) + public function handleFlowChg(Trap $trap): void { $flowID = substr($trap->findOid('CM-FACILITY-MIB::cmFlow'), -9); $flowID = str_replace('.', '-', $flowID); - Log::event("Access Flow $flowID modified", $device->device_id, 'trap', 2); + $trap->log("Access Flow $flowID modified"); } - public static function handleLagChg($device, $trap) + public function handleLagChg(Trap $trap): void { $lagID = substr($trap->findOid('F3-LAG-MIB::f3'), -1); - Log::event("LAG $lagID modified", $device->device_id, 'trap', 2); + $trap->log("LAG $lagID modified"); } - public static function handleQosFlowChg($device, $trap) + public function handleQosFlowChg(Trap $trap): void { $flowID = substr($trap->findOid('CM-FACILITY-MIB::cmQosFlow'), -13, 9); $flowID = str_replace('.', '-', $flowID); - Log::event("QoS on flow $flowID modified", $device->device_id, 'trap', 2); + $trap->log("QoS on flow $flowID modified"); } - public static function handleQosShaperChg($device, $trap) + public function handleQosShaperChg(Trap $trap): void { $flowID = substr($trap->findOid('CM-FACILITY-MIB::cmQosShaper'), -13, 9); $flowID = str_replace('.', '-', $flowID); - Log::event("QoS on flow $flowID modified", $device->device_id, 'trap', 2); + $trap->log("QoS on flow $flowID modified"); } - public static function handleAccPortShaperChg($device, $trap) + public function handleAccPortShaperChg(Trap $trap): void { $shaperID = substr($trap->findOid('CM-FACILITY-MIB::cmAccPort'), -9); $shaperID = str_replace('.', '-', $shaperID); - Log::event("Shaper modified on access port $shaperID modified", $device->device_id, 'trap', 2); + $trap->log("Shaper modified on access port $shaperID modified"); } } diff --git a/LibreNMS/Snmptrap/Handlers/AdvaNetThresholdCrossingAlert.php b/LibreNMS/Snmptrap/Handlers/AdvaNetThresholdCrossingAlert.php index c30d7e756c..c9ed2cabbc 100644 --- a/LibreNMS/Snmptrap/Handlers/AdvaNetThresholdCrossingAlert.php +++ b/LibreNMS/Snmptrap/Handlers/AdvaNetThresholdCrossingAlert.php @@ -31,7 +31,6 @@ use App\Models\Device; use Illuminate\Support\Str; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class AdvaNetThresholdCrossingAlert implements SnmptrapHandler { @@ -43,7 +42,7 @@ class AdvaNetThresholdCrossingAlert implements SnmptrapHandler * @param Trap $trap * @return void */ - public function handle(Device $device, Trap $trap) + public function handle(Device $device, Trap $trap): void { $interval = $trap->getOidData($trap->findOid('CM-PERFORMANCE-MIB::cmEthernetNetPortThresholdInterval')); $ifName = $trap->getOidData($trap->findOid('IF-MIB::ifName')); @@ -51,10 +50,10 @@ class AdvaNetThresholdCrossingAlert implements SnmptrapHandler $trap->getOidData($trap->findOid('CM-PERFORMANCE-MIB::cmEthernetNetPortThresholdVariable')) ); - Log::event("$ifName $threshMessage threshold exceeded for $interval", $device->device_id, 'trap', 2); + $trap->log("$ifName $threshMessage threshold exceeded for $interval"); } - public function getThresholdMessage($thresholdOid) + public function getThresholdMessage(string $thresholdOid): string { foreach ($this->getThresholds() as $oid => $descr) { if (Str::contains($thresholdOid, $oid)) { @@ -65,7 +64,7 @@ class AdvaNetThresholdCrossingAlert implements SnmptrapHandler return 'unknown'; } - public function getThresholds() + public function getThresholds(): array { return [ 'CM-PERFORMANCE-MIB::cmEthernetNetPortStatsUAS' => 'unavailable seconds', diff --git a/LibreNMS/Snmptrap/Handlers/AdvaNetworkElementAlmTrap.php b/LibreNMS/Snmptrap/Handlers/AdvaNetworkElementAlmTrap.php index e4f1319be8..24de54bef9 100644 --- a/LibreNMS/Snmptrap/Handlers/AdvaNetworkElementAlmTrap.php +++ b/LibreNMS/Snmptrap/Handlers/AdvaNetworkElementAlmTrap.php @@ -31,7 +31,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class AdvaNetworkElementAlmTrap implements SnmptrapHandler { @@ -66,6 +65,6 @@ class AdvaNetworkElementAlmTrap implements SnmptrapHandler $almDescr = $trap->getOidData($trap->findOid('CM-ALARM-MIB::cmNetworkElementAlmDescr')); $almObjName = $trap->getOidData($trap->findOid('CM-ALARM-MIB::cmNetworkElementAlmObjectName')); - Log::event("Alarming Element: $almObjName Description: $almDescr Severity: $alSeverity", $device->device_id, 'trap', $logSeverity); + $trap->log("Alarming Element: $almObjName Description: $almDescr Severity: $alSeverity", $logSeverity); } } diff --git a/LibreNMS/Snmptrap/Handlers/AdvaObjectCreation.php b/LibreNMS/Snmptrap/Handlers/AdvaObjectCreation.php index 28f982051e..407952886f 100644 --- a/LibreNMS/Snmptrap/Handlers/AdvaObjectCreation.php +++ b/LibreNMS/Snmptrap/Handlers/AdvaObjectCreation.php @@ -31,7 +31,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class AdvaObjectCreation implements SnmptrapHandler { @@ -47,10 +46,10 @@ class AdvaObjectCreation implements SnmptrapHandler { if ($trap_oid = $trap->findOid('CM-SECURITY-MIB::cmSecurityUserName')) { $UserName = $trap->getOidData($trap_oid); - Log::event("User object $UserName created", $device->device_id, 'trap', 2); + $trap->log("User object $UserName created"); } elseif ($trap_oid = $trap->findOid('F3-LAG-MIB::f3LagName')) { $lagID = substr($trap_oid, -1); - Log::event("LAG $lagID created", $device->device_id, 'trap', 2); + $trap->log("LAG $lagID created"); } } } diff --git a/LibreNMS/Snmptrap/Handlers/AdvaObjectDeletion.php b/LibreNMS/Snmptrap/Handlers/AdvaObjectDeletion.php index d640bd20c9..5ec2ac267d 100644 --- a/LibreNMS/Snmptrap/Handlers/AdvaObjectDeletion.php +++ b/LibreNMS/Snmptrap/Handlers/AdvaObjectDeletion.php @@ -31,7 +31,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class AdvaObjectDeletion implements SnmptrapHandler { @@ -47,17 +46,17 @@ class AdvaObjectDeletion implements SnmptrapHandler { if ($trap_oid = $trap->findOid('CM-SECURITY-MIB::cmSecurityUserName')) { $UserName = $trap->getOidData($trap_oid); - Log::event("User object $UserName deleted", $device->device_id, 'trap', 2); + $trap->log("User object $UserName deleted"); } elseif ($trap_oid = $trap->findOid('CM-FACILITY-MIB::cmFlowIndex')) { $flowID = str_replace('.', '-', substr($trap_oid, 29)); - Log::event("Flow $flowID deleted", $device->device_id, 'trap', 2); + $trap->log("Flow $flowID deleted"); } elseif ($trap_oid = $trap->findOid('F3-LAG-MIB::f3LagPortIndex')) { $lagPortID = $trap->getOidData($trap_oid); $lagID = str_replace('.', '-', substr($trap_oid, -5, 3)); - Log::event("LAG member port $lagPortID removed from LAG $lagID", $device->device_id, 'trap', 2); + $trap->log("LAG member port $lagPortID removed from LAG $lagID"); } elseif ($trap_oid = $trap->findOid('F3-LAG-MIB::f3LagIndex')) { $lagID = $trap->getOidData($trap_oid); - Log::event("LAG $lagID deleted", $device->device_id, 'trap', 2); + $trap->log("LAG $lagID deleted"); } } } diff --git a/LibreNMS/Snmptrap/Handlers/AdvaSnmpDyingGaspTrap.php b/LibreNMS/Snmptrap/Handlers/AdvaSnmpDyingGaspTrap.php index a5558fef37..915a054508 100644 --- a/LibreNMS/Snmptrap/Handlers/AdvaSnmpDyingGaspTrap.php +++ b/LibreNMS/Snmptrap/Handlers/AdvaSnmpDyingGaspTrap.php @@ -31,7 +31,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class AdvaSnmpDyingGaspTrap implements SnmptrapHandler { @@ -45,6 +44,6 @@ class AdvaSnmpDyingGaspTrap implements SnmptrapHandler */ public function handle(Device $device, Trap $trap) { - Log::event('Dying Gasp received', $device->device_id, 'trap', 5); + $trap->log('Dying Gasp received', 5); } } diff --git a/LibreNMS/Snmptrap/Handlers/AdvaStateChangeTrap.php b/LibreNMS/Snmptrap/Handlers/AdvaStateChangeTrap.php index aac6d3eadd..9e99d234a3 100644 --- a/LibreNMS/Snmptrap/Handlers/AdvaStateChangeTrap.php +++ b/LibreNMS/Snmptrap/Handlers/AdvaStateChangeTrap.php @@ -33,7 +33,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class AdvaStateChangeTrap implements SnmptrapHandler { @@ -51,18 +50,18 @@ class AdvaStateChangeTrap implements SnmptrapHandler $adminState = $trap->getOidData($trap_oid); $opState = $trap->getOidData($trap->findOid('CM-FACILITY-MIB::cmEthernetAccPortOperationalState')); $portName = $trap->getOidData($trap->findOid('IF-MIB::ifName')); - Log::event("Port state change: $portName Admin State: $adminState Operational State: $opState", $device->device_id, 'trap', 2); + $trap->log("Port state change: $portName Admin State: $adminState Operational State: $opState"); } elseif ($trap_oid = $trap->findOid('CM-FACILITY-MIB::cmFlowAdminState')) { $adminState = $trap->getOidData($trap_oid); $opState = $trap->getOidData($trap->findOid('CM-FACILITY-MIB::cmFlowOperationalState')); $flowID = substr($trap->findOid('CM-FACILITY-MIB::cmFlowAdminState'), 34); $flowID = str_replace('.', '-', $flowID); - Log::event("Flow state change: $flowID Admin State: $adminState Operational State: $opState", $device->device_id, 'trap', 2); + $trap->log("Flow state change: $flowID Admin State: $adminState Operational State: $opState"); } elseif ($trap_oid = $trap->findOid('CM-FACILITY-MIB::cmEthernetNetPortAdminState')) { $adminState = $trap->getOidData($trap_oid); $opState = $trap->getOidData($trap->findOid('CM-FACILITY-MIB::cmEthernetNetPortOperationalState')); $portName = $trap->getOidData($trap->findOid('IF-MIB::ifName')); - Log::event("Port state change: $portName Admin State: $adminState Operational State: $opState", $device->device_id, 'trap', 2); + $trap->log("Port state change: $portName Admin State: $adminState Operational State: $opState"); } } } diff --git a/LibreNMS/Snmptrap/Handlers/AdvaSysAlmTrap.php b/LibreNMS/Snmptrap/Handlers/AdvaSysAlmTrap.php index 99b9d9b96b..3e19ead746 100644 --- a/LibreNMS/Snmptrap/Handlers/AdvaSysAlmTrap.php +++ b/LibreNMS/Snmptrap/Handlers/AdvaSysAlmTrap.php @@ -31,7 +31,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class AdvaSysAlmTrap implements SnmptrapHandler { @@ -65,6 +64,6 @@ class AdvaSysAlmTrap implements SnmptrapHandler } $sysAlmDescr = $trap->getOidData($trap->findOid('CM-ALARM-MIB::cmSysAlmDescr')); - Log::event("System Alarm: $sysAlmDescr Status: $alSeverity", $device->device_id, 'trap', $logSeverity); + $trap->log("System Alarm: $sysAlmDescr Status: $alSeverity", $logSeverity); } } diff --git a/LibreNMS/Snmptrap/Handlers/AlechassisTrapsAlert.php b/LibreNMS/Snmptrap/Handlers/AlechassisTrapsAlert.php index 99ac12ef46..7ce3128586 100644 --- a/LibreNMS/Snmptrap/Handlers/AlechassisTrapsAlert.php +++ b/LibreNMS/Snmptrap/Handlers/AlechassisTrapsAlert.php @@ -33,7 +33,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class AlechassisTrapsAlert implements SnmptrapHandler { @@ -51,9 +50,9 @@ class AlechassisTrapsAlert implements SnmptrapHandler $descr_aos7 = $trap->getOidData($trap->findOid('ALCATEL-IND1-CHASSIS-MIB::chassisTrapsAlertDescr.0')); if (! empty($descr_aos6)) { - Log::event("$descr_aos6", $device->device_id, 'trap', 2); + $trap->log("$descr_aos6"); } elseif (! empty($descr_aos7)) { - Log::event("$descr_aos7", $device->device_id, 'trap', 2); + $trap->log("$descr_aos7"); } } } diff --git a/LibreNMS/Snmptrap/Handlers/Aos6CfgSavedTrap.php b/LibreNMS/Snmptrap/Handlers/Aos6CfgSavedTrap.php index 09f3be8d62..5e8e6e961f 100644 --- a/LibreNMS/Snmptrap/Handlers/Aos6CfgSavedTrap.php +++ b/LibreNMS/Snmptrap/Handlers/Aos6CfgSavedTrap.php @@ -33,7 +33,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class Aos6CfgSavedTrap implements SnmptrapHandler { @@ -48,6 +47,6 @@ class Aos6CfgSavedTrap implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $descr = $trap->getOidData($trap->findOid('ALCATEL-IND1-CONFIG-MGR-MIB::alcatelIND1ConfigMgrMIB.3.1.1')); - Log::event("$descr", $device->device_id, 'trap', 2); + $trap->log("$descr"); } } diff --git a/LibreNMS/Snmptrap/Handlers/Aos6DoSTrap.php b/LibreNMS/Snmptrap/Handlers/Aos6DoSTrap.php index 5e154d0e2f..aee46b35ec 100644 --- a/LibreNMS/Snmptrap/Handlers/Aos6DoSTrap.php +++ b/LibreNMS/Snmptrap/Handlers/Aos6DoSTrap.php @@ -33,7 +33,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class Aos6DoSTrap implements SnmptrapHandler { @@ -53,6 +52,6 @@ class Aos6DoSTrap implements SnmptrapHandler $slot = $trap->getOidData($trap->findOid('ALCATEL-IND1-IP-MIB::alaDoSSlot')); $port = $trap->getOidData($trap->findOid('ALCATEL-IND1-IP-MIB::alaDoSPort')); $mac = $trap->getOidData($trap->findOid('ALCATEL-IND1-IP-MIB::alaDoSMac')); - Log::event("There has been detected a Denial of Service (DoS) attack. Type of the attack is: $type. Number of attacks are: $detected. Slot where was received is: $slot. Source IP is: $ip. Mac address is: $mac.", $device->device_id, 'trap', 2); + $trap->log("There has been detected a Denial of Service (DoS) attack. Type of the attack is: $type. Number of attacks are: $detected. Slot where was received is: $slot. Source IP is: $ip. Mac address is: $mac."); } } diff --git a/LibreNMS/Snmptrap/Handlers/Aos6HicServerTrap.php b/LibreNMS/Snmptrap/Handlers/Aos6HicServerTrap.php index c2bfbac43b..ba2b529eba 100644 --- a/LibreNMS/Snmptrap/Handlers/Aos6HicServerTrap.php +++ b/LibreNMS/Snmptrap/Handlers/Aos6HicServerTrap.php @@ -33,7 +33,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class Aos6HicServerTrap implements SnmptrapHandler { @@ -48,6 +47,6 @@ class Aos6HicServerTrap implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $ip = $trap->getOidData($trap->findOid('ALCATEL-IND1-AAA-MIB::aaaHSvrIpAddress')); - Log::event("Radius server with the IP: $ip might be unreachable or recovered.", $device->device_id, 'trap', 2); + $trap->log("Radius server with the IP: $ip might be unreachable or recovered."); } } diff --git a/LibreNMS/Snmptrap/Handlers/Aos6LbdStateChangeForAutoRecovery.php b/LibreNMS/Snmptrap/Handlers/Aos6LbdStateChangeForAutoRecovery.php index d8f60d831c..30ca8d6e96 100644 --- a/LibreNMS/Snmptrap/Handlers/Aos6LbdStateChangeForAutoRecovery.php +++ b/LibreNMS/Snmptrap/Handlers/Aos6LbdStateChangeForAutoRecovery.php @@ -33,7 +33,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class Aos6LbdStateChangeForAutoRecovery implements SnmptrapHandler { @@ -51,6 +50,6 @@ class Aos6LbdStateChangeForAutoRecovery implements SnmptrapHandler $current = $trap->getOidData($trap->findOid('ALCATEL-IND1-LBD-MIB::alaLbdCurrentStateAutoRecovery')); $ifIndex = $trap->getOidData($trap->findOid('ALCATEL-IND1-LBD-MIB::alaLbdPortIfIndex')); $port = $device->ports()->where('ifIndex', $ifIndex)->first(); - Log::event("Loopback detection has been recovered on the port $port->ifDescr. Status of the port before was $before and now is $current.", $device->device_id, 'trap', 1); + $trap->log("Loopback detection has been recovered on the port $port->ifDescr. Status of the port before was $before and now is $current.", 1); } } diff --git a/LibreNMS/Snmptrap/Handlers/Aos6LbdStateChangeToShutdown.php b/LibreNMS/Snmptrap/Handlers/Aos6LbdStateChangeToShutdown.php index bb9736bcfa..750fa52ee8 100644 --- a/LibreNMS/Snmptrap/Handlers/Aos6LbdStateChangeToShutdown.php +++ b/LibreNMS/Snmptrap/Handlers/Aos6LbdStateChangeToShutdown.php @@ -33,7 +33,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class Aos6LbdStateChangeToShutdown implements SnmptrapHandler { @@ -52,6 +51,6 @@ class Aos6LbdStateChangeToShutdown implements SnmptrapHandler $ifDescr = $trap->getOidData($trap->findOid('IF-MIB::ifDescr')); $ifIndex = $trap->getOidData($trap->findOid('ALCATEL-IND1-LBD-MIB::alaLbdPortIfIndex')); $port = $device->ports()->where('ifIndex', $ifIndex)->first(); - Log::event("There has been a loop detected on the port $port->ifDescr. Status of the port before was $before and now is $current.", $device->device_id, 'trap', 5); + $trap->log("There has been a loop detected on the port $port->ifDescr. Status of the port before was $before and now is $current.", 5); } } diff --git a/LibreNMS/Snmptrap/Handlers/Aos6StackMgrDuplicateSlot.php b/LibreNMS/Snmptrap/Handlers/Aos6StackMgrDuplicateSlot.php index 6aec533ff8..093640d1f8 100644 --- a/LibreNMS/Snmptrap/Handlers/Aos6StackMgrDuplicateSlot.php +++ b/LibreNMS/Snmptrap/Handlers/Aos6StackMgrDuplicateSlot.php @@ -33,7 +33,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class Aos6StackMgrDuplicateSlot implements SnmptrapHandler { @@ -48,6 +47,6 @@ class Aos6StackMgrDuplicateSlot implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $slot_nr = $trap->getOidData($trap->findOid('ALCATEL-IND1-STACK-MANAGER-MIB::alaStackMgrSlotNINumber')); - Log::event("Stack member $slot_nr is duplicated.", $device->device_id, 'trap', 5); + $trap->log("Stack member $slot_nr is duplicated.", 5); } } diff --git a/LibreNMS/Snmptrap/Handlers/Aos6StackMgrRoleChange.php b/LibreNMS/Snmptrap/Handlers/Aos6StackMgrRoleChange.php index 38d543671a..5522b9fcc5 100644 --- a/LibreNMS/Snmptrap/Handlers/Aos6StackMgrRoleChange.php +++ b/LibreNMS/Snmptrap/Handlers/Aos6StackMgrRoleChange.php @@ -33,7 +33,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class Aos6StackMgrRoleChange implements SnmptrapHandler { @@ -49,6 +48,6 @@ class Aos6StackMgrRoleChange implements SnmptrapHandler { $p_nr = $trap->getOidData($trap->findOid('ALCATEL-IND1-STACK-MANAGER-MIB::alaStackMgrPrimary')); $s_nr = $trap->getOidData($trap->findOid('ALCATEL-IND1-STACK-MANAGER-MIB::alaStackMgrSecondary')); - Log::event("Stack management change.Primary unit of the stack is now chassis: $p_nr. Secondary unit of the stack is now chassis: $s_nr.", $device->device_id, 'trap', 2); + $trap->log("Stack management change.Primary unit of the stack is now chassis: $p_nr. Secondary unit of the stack is now chassis: $s_nr."); } } diff --git a/LibreNMS/Snmptrap/Handlers/Aos7portViolation.php b/LibreNMS/Snmptrap/Handlers/Aos7portViolation.php index 0af8eaaf7e..1d9e03b481 100644 --- a/LibreNMS/Snmptrap/Handlers/Aos7portViolation.php +++ b/LibreNMS/Snmptrap/Handlers/Aos7portViolation.php @@ -33,7 +33,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class Aos7portViolation implements SnmptrapHandler { @@ -52,6 +51,6 @@ class Aos7portViolation implements SnmptrapHandler $ifDescr = $trap->getOidData($trap->findOid('IF-MIB::ifDescr')); $ifIndex = $trap->getOidData($trap->findOid('IF-MIB::ifIndex')); $port = $device->ports()->where('ifIndex', $ifIndex)->first(); - Log::event("There has been a loop detected on the port $port->ifDescr. The source code of the violation is: $reason and the current status code is: $current.", $device->device_id, 'trap', 5); + $trap->log("There has been a loop detected on the port $port->ifDescr. The source code of the violation is: $reason and the current status code is: $current.", 5); } } diff --git a/LibreNMS/Snmptrap/Handlers/Aos7portViolationNotification.php b/LibreNMS/Snmptrap/Handlers/Aos7portViolationNotification.php index 5b2cebe527..bd9f3ff961 100644 --- a/LibreNMS/Snmptrap/Handlers/Aos7portViolationNotification.php +++ b/LibreNMS/Snmptrap/Handlers/Aos7portViolationNotification.php @@ -33,7 +33,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class Aos7portViolationNotification implements SnmptrapHandler { @@ -51,6 +50,6 @@ class Aos7portViolationNotification implements SnmptrapHandler $ifDescr = $trap->getOidData($trap->findOid('IF-MIB::ifDescr')); $ifIndex = $trap->getOidData($trap->findOid('IF-MIB::ifIndex')); $port = $device->ports()->where('ifIndex', $ifIndex)->first(); - Log::event("There has been a loop detected on the port $port->ifDescr. The current status code is: $reason.", $device->device_id, 'trap', 5); + $trap->log("There has been a loop detected on the port $port->ifDescr. The current status code is: $reason.", 5); } } diff --git a/LibreNMS/Snmptrap/Handlers/Aos7stpNewRoot.php b/LibreNMS/Snmptrap/Handlers/Aos7stpNewRoot.php index 1cbc7e30c3..9b492b728a 100644 --- a/LibreNMS/Snmptrap/Handlers/Aos7stpNewRoot.php +++ b/LibreNMS/Snmptrap/Handlers/Aos7stpNewRoot.php @@ -28,7 +28,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class Aos7stpNewRoot implements SnmptrapHandler { @@ -42,6 +41,6 @@ class Aos7stpNewRoot implements SnmptrapHandler */ public function handle(Device $device, Trap $trap) { - Log::event('SNMP Trap: Device ' . $device->displayName() . ' was elected as new root on one of its Spanning Tree Instances', $device->device_id, 'stp', 3); + $trap->log('SNMP Trap: Device ' . $device->displayName() . ' was elected as new root on one of its Spanning Tree Instances', 3, 'stp'); } } diff --git a/LibreNMS/Snmptrap/Handlers/Aos7stpRootPortChange.php b/LibreNMS/Snmptrap/Handlers/Aos7stpRootPortChange.php index 04db2c4e27..cd8a6c8faf 100644 --- a/LibreNMS/Snmptrap/Handlers/Aos7stpRootPortChange.php +++ b/LibreNMS/Snmptrap/Handlers/Aos7stpRootPortChange.php @@ -28,7 +28,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class Aos7stpRootPortChange implements SnmptrapHandler { @@ -42,6 +41,6 @@ class Aos7stpRootPortChange implements SnmptrapHandler */ public function handle(Device $device, Trap $trap) { - Log::event('SNMP Trap: A root port has changed for a spanning tree bridge. The root port is the port that offers the lowest cost path from this bridge to the root bridge.', $device->device_id, 'stp', 3); + $trap->log('SNMP Trap: A root port has changed for a spanning tree bridge. The root port is the port that offers the lowest cost path from this bridge to the root bridge.', 3, 'stp'); } } diff --git a/LibreNMS/Snmptrap/Handlers/ApcOnBattery.php b/LibreNMS/Snmptrap/Handlers/ApcOnBattery.php index 5c4037f0b6..b07194ff46 100644 --- a/LibreNMS/Snmptrap/Handlers/ApcOnBattery.php +++ b/LibreNMS/Snmptrap/Handlers/ApcOnBattery.php @@ -29,7 +29,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class ApcOnBattery implements SnmptrapHandler { @@ -44,6 +43,6 @@ class ApcOnBattery implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $message = $trap->getOidData($trap->findOid('PowerNet-MIB::mtrapargsString')); - Log::event($message, $device->device_id, 'trap', 4); + $trap->log($message, 4); } } diff --git a/LibreNMS/Snmptrap/Handlers/ApcPduNearOverload.php b/LibreNMS/Snmptrap/Handlers/ApcPduNearOverload.php index ed349e0391..087f4ff219 100644 --- a/LibreNMS/Snmptrap/Handlers/ApcPduNearOverload.php +++ b/LibreNMS/Snmptrap/Handlers/ApcPduNearOverload.php @@ -33,7 +33,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class ApcPduNearOverload implements SnmptrapHandler { @@ -51,6 +50,6 @@ class ApcPduNearOverload implements SnmptrapHandler $pdu_id = ApcTrapUtil::getPduIdentName($trap); $phase_num = ApcTrapUtil::getPduPhaseNum($trap); $alarm_str = ApcTrapUtil::getApcTrapString($trap); - Log::event("$pdu_id phase $phase_num $alarm_str", $device->device_id, 'trap', 4); + $trap->log("$pdu_id phase $phase_num $alarm_str", 4); } } diff --git a/LibreNMS/Snmptrap/Handlers/ApcPduNearOverloadCleared.php b/LibreNMS/Snmptrap/Handlers/ApcPduNearOverloadCleared.php index 2359c9425c..2ef1b569b0 100644 --- a/LibreNMS/Snmptrap/Handlers/ApcPduNearOverloadCleared.php +++ b/LibreNMS/Snmptrap/Handlers/ApcPduNearOverloadCleared.php @@ -33,7 +33,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class ApcPduNearOverloadCleared implements SnmptrapHandler { @@ -51,6 +50,6 @@ class ApcPduNearOverloadCleared implements SnmptrapHandler $pdu_id = ApcTrapUtil::getPduIdentName($trap); $phase_num = ApcTrapUtil::getPduPhaseNum($trap); $alarm_str = ApcTrapUtil::getApcTrapString($trap); - Log::event("$pdu_id phase $phase_num $alarm_str", $device->device_id, 'trap', 1); + $trap->log("$pdu_id phase $phase_num $alarm_str", 1); } } diff --git a/LibreNMS/Snmptrap/Handlers/ApcPduOutletOff.php b/LibreNMS/Snmptrap/Handlers/ApcPduOutletOff.php index f8769bd5ac..55bbc100e6 100644 --- a/LibreNMS/Snmptrap/Handlers/ApcPduOutletOff.php +++ b/LibreNMS/Snmptrap/Handlers/ApcPduOutletOff.php @@ -25,7 +25,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class ApcPduOutletOff implements SnmptrapHandler { @@ -40,6 +39,6 @@ class ApcPduOutletOff implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $outlet = $trap->getOidData($trap->findOid('PowerNet-MIB::mtrapargsInteger.0')); - Log::event("APC PDU: Outlet has turned off: $outlet", $device->device_id, 'trap', 4); + $trap->log("APC PDU: Outlet has turned off: $outlet", 4); } } diff --git a/LibreNMS/Snmptrap/Handlers/ApcPduOutletOn.php b/LibreNMS/Snmptrap/Handlers/ApcPduOutletOn.php index 90271eacc5..e5b086bb39 100644 --- a/LibreNMS/Snmptrap/Handlers/ApcPduOutletOn.php +++ b/LibreNMS/Snmptrap/Handlers/ApcPduOutletOn.php @@ -25,7 +25,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class ApcPduOutletOn implements SnmptrapHandler { @@ -40,6 +39,6 @@ class ApcPduOutletOn implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $outlet = $trap->getOidData($trap->findOid('PowerNet-MIB::mtrapargsInteger.0')); - Log::event("APC PDU: Outlet has been turned on: $outlet", $device->device_id, 'trap', 4); + $trap->log("APC PDU: Outlet has been turned on: $outlet", 4); } } diff --git a/LibreNMS/Snmptrap/Handlers/ApcPduOutletReboot.php b/LibreNMS/Snmptrap/Handlers/ApcPduOutletReboot.php index a10f6bce2a..b2ccc7dd25 100644 --- a/LibreNMS/Snmptrap/Handlers/ApcPduOutletReboot.php +++ b/LibreNMS/Snmptrap/Handlers/ApcPduOutletReboot.php @@ -25,7 +25,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class ApcPduOutletReboot implements SnmptrapHandler { @@ -40,6 +39,6 @@ class ApcPduOutletReboot implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $outlet = $trap->getOidData($trap->findOid('PowerNet-MIB::mtrapargsInteger.0')); - Log::event("APC PDU: Outlet has rebooted: $outlet", $device->device_id, 'trap', 4); + $trap->log("APC PDU: Outlet has rebooted: $outlet", 4); } } diff --git a/LibreNMS/Snmptrap/Handlers/ApcPduOverload.php b/LibreNMS/Snmptrap/Handlers/ApcPduOverload.php index 3668eed0fa..b1cd724f02 100644 --- a/LibreNMS/Snmptrap/Handlers/ApcPduOverload.php +++ b/LibreNMS/Snmptrap/Handlers/ApcPduOverload.php @@ -33,7 +33,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class ApcPduOverload implements SnmptrapHandler { @@ -51,6 +50,6 @@ class ApcPduOverload implements SnmptrapHandler $pdu_id = ApcTrapUtil::getPduIdentName($trap); $phase_num = ApcTrapUtil::getPduPhaseNum($trap); $alarm_str = ApcTrapUtil::getApcTrapString($trap); - Log::event("$pdu_id phase $phase_num $alarm_str", $device->device_id, 'trap', 5); + $trap->log("$pdu_id phase $phase_num $alarm_str", 5); } } diff --git a/LibreNMS/Snmptrap/Handlers/ApcPduOverloadCleared.php b/LibreNMS/Snmptrap/Handlers/ApcPduOverloadCleared.php index c45e72a9ee..972bfaa3a5 100644 --- a/LibreNMS/Snmptrap/Handlers/ApcPduOverloadCleared.php +++ b/LibreNMS/Snmptrap/Handlers/ApcPduOverloadCleared.php @@ -33,7 +33,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class ApcPduOverloadCleared implements SnmptrapHandler { @@ -51,6 +50,6 @@ class ApcPduOverloadCleared implements SnmptrapHandler $pdu_id = ApcTrapUtil::getPduIdentName($trap); $phase_num = ApcTrapUtil::getPduPhaseNum($trap); $alarm_str = ApcTrapUtil::getApcTrapString($trap); - Log::event("$pdu_id phase $phase_num $alarm_str", $device->device_id, 'trap', 1); + $trap->log("$pdu_id phase $phase_num $alarm_str", 1); } } diff --git a/LibreNMS/Snmptrap/Handlers/ApcPowerRestored.php b/LibreNMS/Snmptrap/Handlers/ApcPowerRestored.php index 35ae686ae9..7eda182356 100644 --- a/LibreNMS/Snmptrap/Handlers/ApcPowerRestored.php +++ b/LibreNMS/Snmptrap/Handlers/ApcPowerRestored.php @@ -29,7 +29,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class ApcPowerRestored implements SnmptrapHandler { @@ -44,6 +43,6 @@ class ApcPowerRestored implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $message = $trap->getOidData($trap->findOid('PowerNet-MIB::mtrapargsString')); - Log::event($message, $device->device_id, 'trap', 1); + $trap->log($message, 1); } } diff --git a/LibreNMS/Snmptrap/Handlers/ApcSmartAvrReducing.php b/LibreNMS/Snmptrap/Handlers/ApcSmartAvrReducing.php index 4cf436c987..ffe829ec76 100644 --- a/LibreNMS/Snmptrap/Handlers/ApcSmartAvrReducing.php +++ b/LibreNMS/Snmptrap/Handlers/ApcSmartAvrReducing.php @@ -29,7 +29,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class ApcSmartAvrReducing implements SnmptrapHandler { @@ -44,6 +43,6 @@ class ApcSmartAvrReducing implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $message = $trap->getOidData($trap->findOid('PowerNet-MIB::mtrapargsString')); - Log::event($message, $device->device_id, 'trap', 3); + $trap->log($message, 3); } } diff --git a/LibreNMS/Snmptrap/Handlers/ApcSmartAvrReducingOff.php b/LibreNMS/Snmptrap/Handlers/ApcSmartAvrReducingOff.php index b070948666..fdcbbbb219 100644 --- a/LibreNMS/Snmptrap/Handlers/ApcSmartAvrReducingOff.php +++ b/LibreNMS/Snmptrap/Handlers/ApcSmartAvrReducingOff.php @@ -29,7 +29,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class ApcSmartAvrReducingOff implements SnmptrapHandler { @@ -44,6 +43,6 @@ class ApcSmartAvrReducingOff implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $message = $trap->getOidData($trap->findOid('PowerNet-MIB::mtrapargsString')); - Log::event($message, $device->device_id, 'trap', 1); + $trap->log($message, 1); } } diff --git a/LibreNMS/Snmptrap/Handlers/AuthenticationFailure.php b/LibreNMS/Snmptrap/Handlers/AuthenticationFailure.php index 1a72919cec..1ef034e754 100644 --- a/LibreNMS/Snmptrap/Handlers/AuthenticationFailure.php +++ b/LibreNMS/Snmptrap/Handlers/AuthenticationFailure.php @@ -28,7 +28,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class AuthenticationFailure implements SnmptrapHandler { @@ -42,6 +41,6 @@ class AuthenticationFailure implements SnmptrapHandler */ public function handle(Device $device, Trap $trap) { - Log::event('SNMP Trap: Authentication Failure: ' . $device->displayName(), $device->device_id, 'auth', 3); + $trap->log('SNMP Trap: Authentication Failure: ' . $device->displayName(), 3, 'auth'); } } diff --git a/LibreNMS/Snmptrap/Handlers/BgpBackwardTransition.php b/LibreNMS/Snmptrap/Handlers/BgpBackwardTransition.php index 9674320e55..d8e994e586 100644 --- a/LibreNMS/Snmptrap/Handlers/BgpBackwardTransition.php +++ b/LibreNMS/Snmptrap/Handlers/BgpBackwardTransition.php @@ -56,7 +56,7 @@ class BgpBackwardTransition implements SnmptrapHandler $bgpPeer->bgpPeerState = $trap->getOidData($state_oid); if ($bgpPeer->isDirty('bgpPeerState')) { - \Log::event('SNMP Trap: BGP Down ' . $bgpPeer->bgpPeerIdentifier . ' ' . get_astext($bgpPeer->bgpPeerRemoteAs) . ' is now ' . $bgpPeer->bgpPeerState, $device->device_id, 'bgpPeer', 5, $bgpPeerIp); + $trap->log('SNMP Trap: BGP Down ' . $bgpPeer->bgpPeerIdentifier . ' ' . get_astext($bgpPeer->bgpPeerRemoteAs) . ' is now ' . $bgpPeer->bgpPeerState, 5, 'bgpPeer', $bgpPeerIp); } $bgpPeer->save(); diff --git a/LibreNMS/Snmptrap/Handlers/BgpEstablished.php b/LibreNMS/Snmptrap/Handlers/BgpEstablished.php index f93b9a0a5f..a6ec3b2a3a 100644 --- a/LibreNMS/Snmptrap/Handlers/BgpEstablished.php +++ b/LibreNMS/Snmptrap/Handlers/BgpEstablished.php @@ -56,7 +56,7 @@ class BgpEstablished implements SnmptrapHandler $bgpPeer->bgpPeerState = $trap->getOidData($state_oid); if ($bgpPeer->isDirty('bgpPeerState')) { - Log::event('SNMP Trap: BGP Up ' . $bgpPeer->bgpPeerIdentifier . ' ' . get_astext($bgpPeer->bgpPeerRemoteAs) . ' is now ' . $bgpPeer->bgpPeerState, $device->device_id, 'bgpPeer', 1, $bgpPeerIp); + $trap->log('SNMP Trap: BGP Up ' . $bgpPeer->bgpPeerIdentifier . ' ' . get_astext($bgpPeer->bgpPeerRemoteAs) . ' is now ' . $bgpPeer->bgpPeerState, 1, 'bgpPeer', $bgpPeerIp); } $bgpPeer->save(); diff --git a/LibreNMS/Snmptrap/Handlers/BridgeNewRoot.php b/LibreNMS/Snmptrap/Handlers/BridgeNewRoot.php index b070f87c82..6993d65b5d 100644 --- a/LibreNMS/Snmptrap/Handlers/BridgeNewRoot.php +++ b/LibreNMS/Snmptrap/Handlers/BridgeNewRoot.php @@ -25,7 +25,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class BridgeNewRoot implements SnmptrapHandler { @@ -39,6 +38,6 @@ class BridgeNewRoot implements SnmptrapHandler */ public function handle(Device $device, Trap $trap) { - Log::event('SNMP Trap: Device ' . $device->displayName() . ' was elected as new root on one of its Spanning Tree Instances', $device->device_id, 'stp', 3); + $trap->log('SNMP Trap: Device ' . $device->displayName() . ' was elected as new root on one of its Spanning Tree Instances', 3, 'stp'); } } diff --git a/LibreNMS/Snmptrap/Handlers/BridgeTopologyChanged.php b/LibreNMS/Snmptrap/Handlers/BridgeTopologyChanged.php index a4524d00a1..7255a2016a 100644 --- a/LibreNMS/Snmptrap/Handlers/BridgeTopologyChanged.php +++ b/LibreNMS/Snmptrap/Handlers/BridgeTopologyChanged.php @@ -25,7 +25,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class BridgeTopologyChanged implements SnmptrapHandler { @@ -39,6 +38,6 @@ class BridgeTopologyChanged implements SnmptrapHandler */ public function handle(Device $device, Trap $trap) { - Log::event('SNMP Trap: Topology of Spanning Tree Instance on device ' . $device->displayName() . ' was changed', $device->device_id, 'stp', 3); + $trap->log('SNMP Trap: Topology of Spanning Tree Instance on device ' . $device->displayName() . ' was changed', 3, 'stp'); } } diff --git a/LibreNMS/Snmptrap/Handlers/CiscoErrDisableInterfaceEvent.php b/LibreNMS/Snmptrap/Handlers/CiscoErrDisableInterfaceEvent.php index 52cd78ecf3..3f483cad30 100644 --- a/LibreNMS/Snmptrap/Handlers/CiscoErrDisableInterfaceEvent.php +++ b/LibreNMS/Snmptrap/Handlers/CiscoErrDisableInterfaceEvent.php @@ -28,7 +28,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class CiscoErrDisableInterfaceEvent implements SnmptrapHandler { @@ -48,10 +47,10 @@ class CiscoErrDisableInterfaceEvent implements SnmptrapHandler $cause = $trap->getOidData($trap->findOid('CISCO-ERR-DISABLE-MIB::cErrDisableIfStatusCause.' . $ifIndex[1] . '.0')); if (! $port) { - Log::event('SNMP TRAP: ' . $cause . ' error detected on unknown port. Either ifIndex is not found in the trap, or it does not match a port on this device.', $device->device_id, 'trap', 4); + $trap->log('SNMP TRAP: ' . $cause . ' error detected on unknown port. Either ifIndex is not found in the trap, or it does not match a port on this device.', 4); return; } - Log::event('SNMP TRAP: ' . $cause . ' error detected on ' . $port->ifName . ' (Description: ' . $port->ifDescr . '). ' . $port->ifName . ' in err-disable state.', $device->device_id, 'trap', 4); + $trap->log('SNMP TRAP: ' . $cause . ' error detected on ' . $port->ifName . ' (Description: ' . $port->ifDescr . '). ' . $port->ifName . ' in err-disable state.', 4); } } diff --git a/LibreNMS/Snmptrap/Handlers/CiscoMacViolation.php b/LibreNMS/Snmptrap/Handlers/CiscoMacViolation.php index 65c788793b..ac94528488 100644 --- a/LibreNMS/Snmptrap/Handlers/CiscoMacViolation.php +++ b/LibreNMS/Snmptrap/Handlers/CiscoMacViolation.php @@ -28,7 +28,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class CiscoMacViolation implements SnmptrapHandler { @@ -45,6 +44,6 @@ class CiscoMacViolation implements SnmptrapHandler $ifName = $trap->getOidData($trap->findOid('IF-MIB::ifName')); $mac = $trap->getOidData($trap->findOid('CISCO-PORT-SECURITY-MIB::cpsIfSecureLastMacAddress')); - Log::event("SNMP Trap: Secure MAC Address Violation on port $ifName. Last MAC address: $mac", $device->device_id, 'trap', 4); + $trap->log("SNMP Trap: Secure MAC Address Violation on port $ifName. Last MAC address: $mac", 4); } } diff --git a/LibreNMS/Snmptrap/Handlers/ColdBoot.php b/LibreNMS/Snmptrap/Handlers/ColdBoot.php index 6551f7c8ae..8231329c3d 100644 --- a/LibreNMS/Snmptrap/Handlers/ColdBoot.php +++ b/LibreNMS/Snmptrap/Handlers/ColdBoot.php @@ -25,7 +25,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class ColdBoot implements SnmptrapHandler { @@ -39,6 +38,6 @@ class ColdBoot implements SnmptrapHandler */ public function handle(Device $device, Trap $trap) { - Log::event('SNMP Trap: Device ' . $device->displayName() . ' cold booted', $device->device_id, 'reboot', 4); + $trap->log('SNMP Trap: Device ' . $device->displayName() . ' cold booted', 4, 'reboot'); } } diff --git a/LibreNMS/Snmptrap/Handlers/CpLowBattery.php b/LibreNMS/Snmptrap/Handlers/CpLowBattery.php index aa4978aba7..e0308c02a3 100644 --- a/LibreNMS/Snmptrap/Handlers/CpLowBattery.php +++ b/LibreNMS/Snmptrap/Handlers/CpLowBattery.php @@ -30,7 +30,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class CpLowBattery implements SnmptrapHandler { @@ -45,6 +44,6 @@ class CpLowBattery implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $battery = CyberPowerUtil::getMessage($trap); - Log::event("$battery", $device->device_id, 'trap', 4); + $trap->log("$battery", 4); } } diff --git a/LibreNMS/Snmptrap/Handlers/CpPowerRestored.php b/LibreNMS/Snmptrap/Handlers/CpPowerRestored.php index 33de94a90d..225a8def1d 100644 --- a/LibreNMS/Snmptrap/Handlers/CpPowerRestored.php +++ b/LibreNMS/Snmptrap/Handlers/CpPowerRestored.php @@ -30,7 +30,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class CpPowerRestored implements SnmptrapHandler { @@ -45,6 +44,6 @@ class CpPowerRestored implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $power = CyberPowerUtil::getMessage($trap); - Log::event("$power", $device->device_id, 'trap', 1); + $trap->log("$power", 1); } } diff --git a/LibreNMS/Snmptrap/Handlers/CpRtnDischarge.php b/LibreNMS/Snmptrap/Handlers/CpRtnDischarge.php index f01d945c80..8a879bf893 100644 --- a/LibreNMS/Snmptrap/Handlers/CpRtnDischarge.php +++ b/LibreNMS/Snmptrap/Handlers/CpRtnDischarge.php @@ -30,7 +30,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class CpRtnDischarge implements SnmptrapHandler { @@ -45,6 +44,6 @@ class CpRtnDischarge implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $returnInfo = CyberPowerUtil::getMessage($trap); - Log::event("$returnInfo", $device->device_id, 'trap', 1); + $trap->log("$returnInfo", 1); } } diff --git a/LibreNMS/Snmptrap/Handlers/CpRtnLowBattery.php b/LibreNMS/Snmptrap/Handlers/CpRtnLowBattery.php index 85d6fd5027..26194069dc 100644 --- a/LibreNMS/Snmptrap/Handlers/CpRtnLowBattery.php +++ b/LibreNMS/Snmptrap/Handlers/CpRtnLowBattery.php @@ -30,7 +30,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class CpRtnLowBattery implements SnmptrapHandler { @@ -45,6 +44,6 @@ class CpRtnLowBattery implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $battery = CyberPowerUtil::getMessage($trap); - Log::event("$battery", $device->device_id, 'trap', 1); + $trap->log("$battery", 1); } } diff --git a/LibreNMS/Snmptrap/Handlers/CpUpsBatteryNotPresent.php b/LibreNMS/Snmptrap/Handlers/CpUpsBatteryNotPresent.php index 5ee59afabc..dec0d461a3 100644 --- a/LibreNMS/Snmptrap/Handlers/CpUpsBatteryNotPresent.php +++ b/LibreNMS/Snmptrap/Handlers/CpUpsBatteryNotPresent.php @@ -30,7 +30,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class CpUpsBatteryNotPresent implements SnmptrapHandler { @@ -45,6 +44,6 @@ class CpUpsBatteryNotPresent implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $status = CyberPowerUtil::getMessage($trap); - Log::event("$status", $device->device_id, 'trap', 2); + $trap->log("$status"); } } diff --git a/LibreNMS/Snmptrap/Handlers/CpUpsChargerFailure.php b/LibreNMS/Snmptrap/Handlers/CpUpsChargerFailure.php index 1fd9974004..b67849b08b 100644 --- a/LibreNMS/Snmptrap/Handlers/CpUpsChargerFailure.php +++ b/LibreNMS/Snmptrap/Handlers/CpUpsChargerFailure.php @@ -30,7 +30,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class CpUpsChargerFailure implements SnmptrapHandler { @@ -45,6 +44,6 @@ class CpUpsChargerFailure implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $chargeInfo = CyberPowerUtil::getMessage($trap); - Log::event("$chargeInfo", $device->device_id, 'trap', 4); + $trap->log("$chargeInfo", 4); } } diff --git a/LibreNMS/Snmptrap/Handlers/CpUpsDiagFailed.php b/LibreNMS/Snmptrap/Handlers/CpUpsDiagFailed.php index 30384ad9bb..b2aae91b6c 100644 --- a/LibreNMS/Snmptrap/Handlers/CpUpsDiagFailed.php +++ b/LibreNMS/Snmptrap/Handlers/CpUpsDiagFailed.php @@ -30,7 +30,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class CpUpsDiagFailed implements SnmptrapHandler { @@ -45,6 +44,6 @@ class CpUpsDiagFailed implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $diagInfo = CyberPowerUtil::getMessage($trap); - Log::event("$diagInfo", $device->device_id, 'trap', 5); + $trap->log("$diagInfo", 5); } } diff --git a/LibreNMS/Snmptrap/Handlers/CpUpsDiagPassed.php b/LibreNMS/Snmptrap/Handlers/CpUpsDiagPassed.php index 4df9e1a232..baae3b653e 100644 --- a/LibreNMS/Snmptrap/Handlers/CpUpsDiagPassed.php +++ b/LibreNMS/Snmptrap/Handlers/CpUpsDiagPassed.php @@ -30,7 +30,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class CpUpsDiagPassed implements SnmptrapHandler { @@ -45,6 +44,6 @@ class CpUpsDiagPassed implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $diagInfo = CyberPowerUtil::getMessage($trap); - Log::event("$diagInfo", $device->device_id, 'trap', 2); + $trap->log("$diagInfo"); } } diff --git a/LibreNMS/Snmptrap/Handlers/CpUpsDischarged.php b/LibreNMS/Snmptrap/Handlers/CpUpsDischarged.php index 41d67da9b1..7f18680b9d 100644 --- a/LibreNMS/Snmptrap/Handlers/CpUpsDischarged.php +++ b/LibreNMS/Snmptrap/Handlers/CpUpsDischarged.php @@ -30,7 +30,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class CpUpsDischarged implements SnmptrapHandler { @@ -45,6 +44,6 @@ class CpUpsDischarged implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $dischargeInfo = CyberPowerUtil::getMessage($trap); - Log::event("$dischargeInfo", $device->device_id, 'trap', 2); + $trap->log("$dischargeInfo"); } } diff --git a/LibreNMS/Snmptrap/Handlers/CpUpsOnBattery.php b/LibreNMS/Snmptrap/Handlers/CpUpsOnBattery.php index a489fec46c..c652213b2a 100644 --- a/LibreNMS/Snmptrap/Handlers/CpUpsOnBattery.php +++ b/LibreNMS/Snmptrap/Handlers/CpUpsOnBattery.php @@ -30,7 +30,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class CpUpsOnBattery implements SnmptrapHandler { @@ -45,6 +44,6 @@ class CpUpsOnBattery implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $battery = CyberPowerUtil::getMessage($trap); - Log::event("$battery", $device->device_id, 'trap', 4); + $trap->log("$battery", 4); } } diff --git a/LibreNMS/Snmptrap/Handlers/CpUpsOverTemp.php b/LibreNMS/Snmptrap/Handlers/CpUpsOverTemp.php index 310ea8e1e3..8cb746ae36 100644 --- a/LibreNMS/Snmptrap/Handlers/CpUpsOverTemp.php +++ b/LibreNMS/Snmptrap/Handlers/CpUpsOverTemp.php @@ -30,7 +30,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class CpUpsOverTemp implements SnmptrapHandler { @@ -45,6 +44,6 @@ class CpUpsOverTemp implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $temp = CyberPowerUtil::getMessage($trap); - Log::event("$temp", $device->device_id, 'trap', 5); + $trap->log("$temp", 5); } } diff --git a/LibreNMS/Snmptrap/Handlers/CpUpsOverload.php b/LibreNMS/Snmptrap/Handlers/CpUpsOverload.php index e7579120dd..5ecb6dc303 100644 --- a/LibreNMS/Snmptrap/Handlers/CpUpsOverload.php +++ b/LibreNMS/Snmptrap/Handlers/CpUpsOverload.php @@ -30,7 +30,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class CpUpsOverload implements SnmptrapHandler { @@ -45,6 +44,6 @@ class CpUpsOverload implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $overload = CyberPowerUtil::getMessage($trap); - Log::event("$overload", $device->device_id, 'trap', 5); + $trap->log("$overload", 5); } } diff --git a/LibreNMS/Snmptrap/Handlers/CpUpsRebootStarted.php b/LibreNMS/Snmptrap/Handlers/CpUpsRebootStarted.php index 5939a1b0af..b167b008fa 100644 --- a/LibreNMS/Snmptrap/Handlers/CpUpsRebootStarted.php +++ b/LibreNMS/Snmptrap/Handlers/CpUpsRebootStarted.php @@ -30,7 +30,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class CpUpsRebootStarted implements SnmptrapHandler { @@ -45,6 +44,6 @@ class CpUpsRebootStarted implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $status = CyberPowerUtil::getMessage($trap); - Log::event("$status", $device->device_id, 'trap', 4); + $trap->log("$status", 4); } } diff --git a/LibreNMS/Snmptrap/Handlers/CpUpsRtnChargerFailure.php b/LibreNMS/Snmptrap/Handlers/CpUpsRtnChargerFailure.php index d3ea57612d..be7eb0b890 100644 --- a/LibreNMS/Snmptrap/Handlers/CpUpsRtnChargerFailure.php +++ b/LibreNMS/Snmptrap/Handlers/CpUpsRtnChargerFailure.php @@ -30,7 +30,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class CpUpsRtnChargerFailure implements SnmptrapHandler { @@ -45,6 +44,6 @@ class CpUpsRtnChargerFailure implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $chargeInfo = CyberPowerUtil::getMessage($trap); - Log::event("$chargeInfo", $device->device_id, 'trap', 1); + $trap->log("$chargeInfo", 1); } } diff --git a/LibreNMS/Snmptrap/Handlers/CpUpsRtnDischarged.php b/LibreNMS/Snmptrap/Handlers/CpUpsRtnDischarged.php index a81b124a70..ed007da109 100644 --- a/LibreNMS/Snmptrap/Handlers/CpUpsRtnDischarged.php +++ b/LibreNMS/Snmptrap/Handlers/CpUpsRtnDischarged.php @@ -30,7 +30,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class CpUpsRtnDischarged implements SnmptrapHandler { @@ -45,6 +44,6 @@ class CpUpsRtnDischarged implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $dischargeInfo = CyberPowerUtil::getMessage($trap); - Log::event("$dischargeInfo", $device->device_id, 'trap', 2); + $trap->log("$dischargeInfo"); } } diff --git a/LibreNMS/Snmptrap/Handlers/CpUpsRtnOverTemp.php b/LibreNMS/Snmptrap/Handlers/CpUpsRtnOverTemp.php index f1c5a455a9..23302a717f 100644 --- a/LibreNMS/Snmptrap/Handlers/CpUpsRtnOverTemp.php +++ b/LibreNMS/Snmptrap/Handlers/CpUpsRtnOverTemp.php @@ -30,7 +30,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class CpUpsRtnOverTemp implements SnmptrapHandler { @@ -45,6 +44,6 @@ class CpUpsRtnOverTemp implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $temp = CyberPowerUtil::getMessage($trap); - Log::event("$temp", $device->device_id, 'trap', 1); + $trap->log("$temp", 1); } } diff --git a/LibreNMS/Snmptrap/Handlers/CpUpsRtnOverload.php b/LibreNMS/Snmptrap/Handlers/CpUpsRtnOverload.php index d95a28d390..49c11329e7 100644 --- a/LibreNMS/Snmptrap/Handlers/CpUpsRtnOverload.php +++ b/LibreNMS/Snmptrap/Handlers/CpUpsRtnOverload.php @@ -30,7 +30,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class CpUpsRtnOverload implements SnmptrapHandler { @@ -45,6 +44,6 @@ class CpUpsRtnOverload implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $overload = CyberPowerUtil::getMessage($trap); - Log::event("$overload", $device->device_id, 'trap', 1); + $trap->log("$overload", 1); } } diff --git a/LibreNMS/Snmptrap/Handlers/CpUpsSleeping.php b/LibreNMS/Snmptrap/Handlers/CpUpsSleeping.php index 1f7a8bcc20..11ce7aad4c 100644 --- a/LibreNMS/Snmptrap/Handlers/CpUpsSleeping.php +++ b/LibreNMS/Snmptrap/Handlers/CpUpsSleeping.php @@ -30,7 +30,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class CpUpsSleeping implements SnmptrapHandler { @@ -45,6 +44,6 @@ class CpUpsSleeping implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $status = CyberPowerUtil::getMessage($trap); - Log::event("$status", $device->device_id, 'trap', 4); + $trap->log("$status", 4); } } diff --git a/LibreNMS/Snmptrap/Handlers/CpUpsStartBatteryTest.php b/LibreNMS/Snmptrap/Handlers/CpUpsStartBatteryTest.php index 5024dc1af0..b39bb11363 100644 --- a/LibreNMS/Snmptrap/Handlers/CpUpsStartBatteryTest.php +++ b/LibreNMS/Snmptrap/Handlers/CpUpsStartBatteryTest.php @@ -30,7 +30,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class CpUpsStartBatteryTest implements SnmptrapHandler { @@ -45,6 +44,6 @@ class CpUpsStartBatteryTest implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $battTestInfo = CyberPowerUtil::getMessage($trap); - Log::event("$battTestInfo", $device->device_id, 'trap', 2); + $trap->log("$battTestInfo"); } } diff --git a/LibreNMS/Snmptrap/Handlers/CpUpsTurnedOff.php b/LibreNMS/Snmptrap/Handlers/CpUpsTurnedOff.php index ca68ade9e4..17f6059dc7 100644 --- a/LibreNMS/Snmptrap/Handlers/CpUpsTurnedOff.php +++ b/LibreNMS/Snmptrap/Handlers/CpUpsTurnedOff.php @@ -30,7 +30,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class CpUpsTurnedOff implements SnmptrapHandler { @@ -45,6 +44,6 @@ class CpUpsTurnedOff implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $status = CyberPowerUtil::getMessage($trap); - Log::event("$status", $device->device_id, 'trap', 4); + $trap->log("$status", 4); } } diff --git a/LibreNMS/Snmptrap/Handlers/CpUpsWokeUp.php b/LibreNMS/Snmptrap/Handlers/CpUpsWokeUp.php index 7a98a19e0a..04380699d6 100644 --- a/LibreNMS/Snmptrap/Handlers/CpUpsWokeUp.php +++ b/LibreNMS/Snmptrap/Handlers/CpUpsWokeUp.php @@ -30,7 +30,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class CpUpsWokeUp implements SnmptrapHandler { @@ -45,6 +44,6 @@ class CpUpsWokeUp implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $status = CyberPowerUtil::getMessage($trap); - Log::event("$status", $device->device_id, 'trap', 1); + $trap->log("$status", 1); } } diff --git a/LibreNMS/Snmptrap/Handlers/EntityDatabaseConfigChanged.php b/LibreNMS/Snmptrap/Handlers/EntityDatabaseConfigChanged.php index 87089b4df2..520d71f2d8 100644 --- a/LibreNMS/Snmptrap/Handlers/EntityDatabaseConfigChanged.php +++ b/LibreNMS/Snmptrap/Handlers/EntityDatabaseConfigChanged.php @@ -25,7 +25,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class EntityDatabaseConfigChanged implements SnmptrapHandler { @@ -39,6 +38,6 @@ class EntityDatabaseConfigChanged implements SnmptrapHandler */ public function handle(Device $device, Trap $trap) { - Log::event('SNMP Trap: Configuration of Entity Database on device ' . $device->displayName() . ' was changed', $device->device_id, 'system', 3); + $trap->log('SNMP Trap: Configuration of Entity Database on device ' . $device->displayName() . ' was changed', 3, 'system'); } } diff --git a/LibreNMS/Snmptrap/Handlers/EquipStatusTrap.php b/LibreNMS/Snmptrap/Handlers/EquipStatusTrap.php index 673d69808a..aa9d4b610a 100644 --- a/LibreNMS/Snmptrap/Handlers/EquipStatusTrap.php +++ b/LibreNMS/Snmptrap/Handlers/EquipStatusTrap.php @@ -28,7 +28,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class EquipStatusTrap implements SnmptrapHandler { @@ -40,29 +39,22 @@ class EquipStatusTrap implements SnmptrapHandler * @param Trap $trap * @return void */ - public function handle(Device $device, Trap $trap) + public function handle(Device $device, Trap $trap): void { $state = $trap->getOidData('EQUIPMENT-MIB::equipStatus.0'); $severity = $this->getSeverity($state); - Log::event('SNMP Trap: Equipment Status ' . $state, $device->device_id, 'state', $severity); + $trap->log('SNMP Trap: Equipment Status ' . $state, $severity, 'state'); } - private function getSeverity($state) + private function getSeverity(string $state): int { - $severity_map = [ - 'warning' => 4, - 'major' => 4, - '5' => 4, - '3' => 4, - 'critical' => 5, - '4' => 5, - 'minor' => 3, - '2' => 3, - 'nonAlarmed' => 1, - '1' => 1, - ]; - - return $severity_map[$state] ?? 0; + return match ($state) { + 'warning', '3', 'major', '5' => 4, + 'critical', '4' => 5, + 'minor', '2' => 3, + 'nonAlarmed', '1' => 1, + default => 0, + }; } } diff --git a/LibreNMS/Snmptrap/Handlers/FailedUserLogin.php b/LibreNMS/Snmptrap/Handlers/FailedUserLogin.php index f3d88349c6..e456aea034 100644 --- a/LibreNMS/Snmptrap/Handlers/FailedUserLogin.php +++ b/LibreNMS/Snmptrap/Handlers/FailedUserLogin.php @@ -25,7 +25,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class FailedUserLogin implements SnmptrapHandler { @@ -39,6 +38,6 @@ class FailedUserLogin implements SnmptrapHandler */ public function handle(Device $device, Trap $trap) { - Log::event('SNMP Trap: Failed User Login: ' . $device->displayName(), $device->device_id, 'auth', 4); + $trap->log('SNMP Trap: Failed User Login: ' . $device->displayName(), 4, 'auth'); } } diff --git a/LibreNMS/Snmptrap/Handlers/FgTrapAvOversize.php b/LibreNMS/Snmptrap/Handlers/FgTrapAvOversize.php index 935f4e6d81..75159b3d08 100644 --- a/LibreNMS/Snmptrap/Handlers/FgTrapAvOversize.php +++ b/LibreNMS/Snmptrap/Handlers/FgTrapAvOversize.php @@ -31,7 +31,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class FgTrapAvOversize implements SnmptrapHandler { @@ -45,6 +44,6 @@ class FgTrapAvOversize implements SnmptrapHandler */ public function handle(Device $device, Trap $trap) { - Log::event("$device->hostname received a file that exceeds proxy buffer, skipping AV scan", $device->device_id, 'trap', 2); + $trap->log("$device->hostname received a file that exceeds proxy buffer, skipping AV scan"); } } diff --git a/LibreNMS/Snmptrap/Handlers/FgTrapIpsAnomaly.php b/LibreNMS/Snmptrap/Handlers/FgTrapIpsAnomaly.php index e3eda3a289..68dcc7350d 100644 --- a/LibreNMS/Snmptrap/Handlers/FgTrapIpsAnomaly.php +++ b/LibreNMS/Snmptrap/Handlers/FgTrapIpsAnomaly.php @@ -30,7 +30,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class FgTrapIpsAnomaly implements SnmptrapHandler { @@ -46,6 +45,6 @@ class FgTrapIpsAnomaly implements SnmptrapHandler { $srcIp = $trap->getOidData($trap->findOid('FORTINET-FORTIGATE-MIB::fgIpsTrapSrcIp')); $proto = $trap->getOidData($trap->findOid('FORTINET-FORTIGATE-MIB::fgIpsTrapSigMsg')); - Log::event("DDoS prevention triggered. Source: $srcIp Protocol: $proto", $device->device_id, 'trap', 4); + $trap->log("DDoS prevention triggered. Source: $srcIp Protocol: $proto", 4); } } diff --git a/LibreNMS/Snmptrap/Handlers/FgTrapIpsPkgUpdate.php b/LibreNMS/Snmptrap/Handlers/FgTrapIpsPkgUpdate.php index cde3a70ea4..db61c99523 100644 --- a/LibreNMS/Snmptrap/Handlers/FgTrapIpsPkgUpdate.php +++ b/LibreNMS/Snmptrap/Handlers/FgTrapIpsPkgUpdate.php @@ -30,7 +30,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class FgTrapIpsPkgUpdate implements SnmptrapHandler { @@ -44,6 +43,6 @@ class FgTrapIpsPkgUpdate implements SnmptrapHandler */ public function handle(Device $device, Trap $trap) { - Log::event("IPS package updated on $device->hostname", $device->device_id, 'trap', 2); + $trap->log("IPS package updated on $device->hostname"); } } diff --git a/LibreNMS/Snmptrap/Handlers/FgTrapIpsSignature.php b/LibreNMS/Snmptrap/Handlers/FgTrapIpsSignature.php index 9590265494..092d9729a1 100644 --- a/LibreNMS/Snmptrap/Handlers/FgTrapIpsSignature.php +++ b/LibreNMS/Snmptrap/Handlers/FgTrapIpsSignature.php @@ -30,7 +30,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class FgTrapIpsSignature implements SnmptrapHandler { @@ -47,6 +46,6 @@ class FgTrapIpsSignature implements SnmptrapHandler $srcIp = $trap->getOidData($trap->findOid('FORTINET-FORTIGATE-MIB::fgIpsTrapSrcIp')); $sigNum = $trap->getOidData($trap->findOid('FORTINET-FORTIGATE-MIB::fgIpsTrapSigId')); $sigName = $trap->getOidData($trap->findOid('FORTINET-FORTIGATE-MIB::fgIpsTrapSigMsg')); - Log::event("IPS signature $sigName detected from $srcIp with Fortiguard ID $sigNum", $device->device_id, 'trap', 4); + $trap->log("IPS signature $sigName detected from $srcIp with Fortiguard ID $sigNum", 4); } } diff --git a/LibreNMS/Snmptrap/Handlers/FgTrapVpnTunDown.php b/LibreNMS/Snmptrap/Handlers/FgTrapVpnTunDown.php index cf8e5352ea..7054e8c130 100644 --- a/LibreNMS/Snmptrap/Handlers/FgTrapVpnTunDown.php +++ b/LibreNMS/Snmptrap/Handlers/FgTrapVpnTunDown.php @@ -30,7 +30,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class FgTrapVpnTunDown implements SnmptrapHandler { @@ -46,6 +45,6 @@ class FgTrapVpnTunDown implements SnmptrapHandler { $remoteGw = $trap->getOidData($trap->findOid('FORTIGATE-MIB::fgVpnTrapRemoteGateway')); $tunName = $trap->getOidData($trap->findOid('FORTIGATE-MIB::fgVpnTrapPhase1Name')); - Log::event("VPN tunnel $tunName to $remoteGw is down", $device->device_id, 'trap', 3); + $trap->log("VPN tunnel $tunName to $remoteGw is down", 3); } } diff --git a/LibreNMS/Snmptrap/Handlers/FgTrapVpnTunUp.php b/LibreNMS/Snmptrap/Handlers/FgTrapVpnTunUp.php index f7fce760db..983c08b74a 100644 --- a/LibreNMS/Snmptrap/Handlers/FgTrapVpnTunUp.php +++ b/LibreNMS/Snmptrap/Handlers/FgTrapVpnTunUp.php @@ -30,7 +30,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class FgTrapVpnTunUp implements SnmptrapHandler { @@ -46,6 +45,6 @@ class FgTrapVpnTunUp implements SnmptrapHandler { $remoteGw = $trap->getOidData($trap->findOid('FORTIGATE-MIB::fgVpnTrapRemoteGateway')); $tunName = $trap->getOidData($trap->findOid('FORTIGATE-MIB::fgVpnTrapPhase1Name')); - Log::event("VPN tunnel $tunName to $remoteGw is up", $device->device_id, 'trap', 1); + $trap->log("VPN tunnel $tunName to $remoteGw is up", 1); } } diff --git a/LibreNMS/Snmptrap/Handlers/FmTrapLogRateThreshold.php b/LibreNMS/Snmptrap/Handlers/FmTrapLogRateThreshold.php index 1346d3b6b7..d53c147c77 100644 --- a/LibreNMS/Snmptrap/Handlers/FmTrapLogRateThreshold.php +++ b/LibreNMS/Snmptrap/Handlers/FmTrapLogRateThreshold.php @@ -31,7 +31,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class FmTrapLogRateThreshold implements SnmptrapHandler { @@ -47,6 +46,6 @@ class FmTrapLogRateThreshold implements SnmptrapHandler { $logRate = $trap->getOidData($trap->findOid('FORTINET-FORTIMANAGER-FORTIANALYZER-MIB::fmLogRate')); $logThresh = $trap->getOidData($trap->findOid('FORTINET-FORTIMANAGER-FORTIANALYZER-MIB::fmLogRateThreshold')); - Log::event("Recommended log rate exceeded. Current Rate: $logRate Recommended Rate: $logThresh", $device->device_id, 'trap', 3); + $trap->log("Recommended log rate exceeded. Current Rate: $logRate Recommended Rate: $logThresh", 3); } } diff --git a/LibreNMS/Snmptrap/Handlers/HpFault.php b/LibreNMS/Snmptrap/Handlers/HpFault.php index 5eeef42db6..38faf51e27 100644 --- a/LibreNMS/Snmptrap/Handlers/HpFault.php +++ b/LibreNMS/Snmptrap/Handlers/HpFault.php @@ -5,7 +5,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class HpFault implements SnmptrapHandler { @@ -22,16 +21,16 @@ class HpFault implements SnmptrapHandler $type = $trap->getOidData($trap->findOid('HP-ICF-FAULT-FINDER-MIB::hpicfFfLogFaultType')); switch ($type) { case 'badXcvr': - Log::event('Fault - CRC Error ' . $trap->getOidData($trap->findOid('HP-ICF-FAULT-FINDER-MIB::hpicfFfFaultInfoURL')), $device->device_id, $type, 4); + $trap->log('Fault - CRC Error ' . $trap->getOidData($trap->findOid('HP-ICF-FAULT-FINDER-MIB::hpicfFfFaultInfoURL')), 4, $type); break; case 'badCable': - Log::event('Fault - Bad Cable ' . $trap->getOidData($trap->findOid('HP-ICF-FAULT-FINDER-MIB::hpicfFfFaultInfoURL')), $device->device_id, $type, 4); + $trap->log('Fault - Bad Cable ' . $trap->getOidData($trap->findOid('HP-ICF-FAULT-FINDER-MIB::hpicfFfFaultInfoURL')), 4, $type); break; case 'bcastStorm': - Log::event('Fault - Broadcaststorm ' . $trap->getOidData($trap->findOid('HP-ICF-FAULT-FINDER-MIB::hpicfFfFaultInfoURL')), $device->device_id, $type, 5); + $trap->log('Fault - Broadcaststorm ' . $trap->getOidData($trap->findOid('HP-ICF-FAULT-FINDER-MIB::hpicfFfFaultInfoURL')), 5, $type); break; default: - Log::event('Fault - Unhandled ' . $trap->getOidData($trap->findOid('HP-ICF-FAULT-FINDER-MIB::hpicfFfFaultInfoURL')), $device->device_id, $type, 2); + $trap->log('Fault - Unhandled ' . $trap->getOidData($trap->findOid('HP-ICF-FAULT-FINDER-MIB::hpicfFfFaultInfoURL')), 2, $type); break; } } diff --git a/LibreNMS/Snmptrap/Handlers/JnxBgpM2BackwardTransition.php b/LibreNMS/Snmptrap/Handlers/JnxBgpM2BackwardTransition.php index c283b0d6ec..5edb93e742 100644 --- a/LibreNMS/Snmptrap/Handlers/JnxBgpM2BackwardTransition.php +++ b/LibreNMS/Snmptrap/Handlers/JnxBgpM2BackwardTransition.php @@ -61,7 +61,7 @@ class JnxBgpM2BackwardTransition implements SnmptrapHandler $bgpPeer->bgpPeerState = $peerState; if ($bgpPeer->isDirty('bgpPeerState')) { - Log::event("BGP Peer $peerAddr is now in the $peerState state", $device->device_id, 'trap', 5); + $trap->log("BGP Peer $peerAddr is now in the $peerState state", 5); } $bgpPeer->save(); diff --git a/LibreNMS/Snmptrap/Handlers/JnxBgpM2Established.php b/LibreNMS/Snmptrap/Handlers/JnxBgpM2Established.php index aba807e36d..460a87f3b5 100644 --- a/LibreNMS/Snmptrap/Handlers/JnxBgpM2Established.php +++ b/LibreNMS/Snmptrap/Handlers/JnxBgpM2Established.php @@ -57,7 +57,7 @@ class JnxBgpM2Established implements SnmptrapHandler $bgpPeer->bgpPeerState = $peerState; if ($bgpPeer->isDirty('bgpPeerState')) { - Log::event("BGP Peer $peerAddr is now in the $peerState state", $device->device_id, 'trap', 1); + $trap->log("BGP Peer $peerAddr is now in the $peerState state", 1); } $bgpPeer->save(); diff --git a/LibreNMS/Snmptrap/Handlers/JnxCmCfgChange.php b/LibreNMS/Snmptrap/Handlers/JnxCmCfgChange.php index 98e2842e60..bd5734713a 100644 --- a/LibreNMS/Snmptrap/Handlers/JnxCmCfgChange.php +++ b/LibreNMS/Snmptrap/Handlers/JnxCmCfgChange.php @@ -33,7 +33,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class JnxCmCfgChange implements SnmptrapHandler { @@ -51,9 +50,9 @@ class JnxCmCfgChange implements SnmptrapHandler $user = $trap->getOidData($trap->findOid('JUNIPER-CFGMGMT-MIB::jnxCmCfgChgEventUser')); $changeTime = $trap->getOidData($trap->findOid('JUNIPER-CFGMGMT-MIB::jnxCmCfgChgEventDate')); if ($source == 'other' && $user == 'root') { - Log::event("Config rolled back at $changeTime", $device->device_id, 'trap', 2); + $trap->log("Config rolled back at $changeTime"); } else { - Log::event("Config modified by $user from $source at $changeTime", $device->device_id, 'trap', 2); + $trap->log("Config modified by $user from $source at $changeTime"); } } } diff --git a/LibreNMS/Snmptrap/Handlers/JnxDomAlarmCleared.php b/LibreNMS/Snmptrap/Handlers/JnxDomAlarmCleared.php index 9352a79093..9653d4eb3c 100644 --- a/LibreNMS/Snmptrap/Handlers/JnxDomAlarmCleared.php +++ b/LibreNMS/Snmptrap/Handlers/JnxDomAlarmCleared.php @@ -28,7 +28,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class JnxDomAlarmCleared implements SnmptrapHandler { @@ -45,6 +44,6 @@ class JnxDomAlarmCleared implements SnmptrapHandler $currentAlarm = $trap->getOidData($trap->findOid('JUNIPER-DOM-MIB::jnxDomCurrentAlarms')); $ifDescr = $trap->getOidData($trap->findOid('IF-MIB::ifDescr')); $alarmList = JnxDomAlarmId::getAlarms($currentAlarm); - Log::event("DOM alarm cleared for interface $ifDescr. Cleared alarm(s): $alarmList", $device->device_id, 'trap', 1); + $trap->log("DOM alarm cleared for interface $ifDescr. Cleared alarm(s): $alarmList", 1); } } diff --git a/LibreNMS/Snmptrap/Handlers/JnxDomAlarmId.php b/LibreNMS/Snmptrap/Handlers/JnxDomAlarmId.php index fea58a1d24..8f852b675e 100644 --- a/LibreNMS/Snmptrap/Handlers/JnxDomAlarmId.php +++ b/LibreNMS/Snmptrap/Handlers/JnxDomAlarmId.php @@ -31,7 +31,7 @@ namespace LibreNMS\Snmptrap\Handlers; class JnxDomAlarmId { - public static function getAlarms($currentAlarm) + public static function getAlarms(string $currentAlarm): string { $alarmBin = preg_split( '//', @@ -72,8 +72,7 @@ class JnxDomAlarmId } $index++; } - $message = implode(', ', $descr); - return $message; + return implode(', ', $descr); } } diff --git a/LibreNMS/Snmptrap/Handlers/JnxDomAlarmSet.php b/LibreNMS/Snmptrap/Handlers/JnxDomAlarmSet.php index c85eedf585..6ce13d48a6 100644 --- a/LibreNMS/Snmptrap/Handlers/JnxDomAlarmSet.php +++ b/LibreNMS/Snmptrap/Handlers/JnxDomAlarmSet.php @@ -28,7 +28,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class JnxDomAlarmSet implements SnmptrapHandler { @@ -45,6 +44,6 @@ class JnxDomAlarmSet implements SnmptrapHandler $currentAlarm = $trap->getOidData($trap->findOid('JUNIPER-DOM-MIB::jnxDomCurrentAlarms')); $ifDescr = $trap->getOidData($trap->findOid('IF-MIB::ifDescr')); $alarmList = JnxDomAlarmId::getAlarms($currentAlarm); - Log::event("DOM alarm set for interface $ifDescr. Current alarm(s): $alarmList", $device->device_id, 'trap', 5); + $trap->log("DOM alarm set for interface $ifDescr. Current alarm(s): $alarmList", 5); } } diff --git a/LibreNMS/Snmptrap/Handlers/JnxDomLaneAlarmCleared.php b/LibreNMS/Snmptrap/Handlers/JnxDomLaneAlarmCleared.php index 07d0e47558..95887f7a3d 100644 --- a/LibreNMS/Snmptrap/Handlers/JnxDomLaneAlarmCleared.php +++ b/LibreNMS/Snmptrap/Handlers/JnxDomLaneAlarmCleared.php @@ -56,6 +56,6 @@ class JnxDomLaneAlarmCleared implements SnmptrapHandler return; } - Log::event("DOM lane alarm cleared on interface $port->ifDescr lane $lane. Current alarm(s): $alarmList", $device->device_id, 'trap', 1); + $trap->log("DOM lane alarm cleared on interface $port->ifDescr lane $lane. Current alarm(s): $alarmList", 1); } } diff --git a/LibreNMS/Snmptrap/Handlers/JnxDomLaneAlarmId.php b/LibreNMS/Snmptrap/Handlers/JnxDomLaneAlarmId.php index 6dea8d028c..6119fe2473 100644 --- a/LibreNMS/Snmptrap/Handlers/JnxDomLaneAlarmId.php +++ b/LibreNMS/Snmptrap/Handlers/JnxDomLaneAlarmId.php @@ -31,7 +31,7 @@ namespace LibreNMS\Snmptrap\Handlers; class JnxDomLaneAlarmId { - public static function getLaneAlarms($currentAlarm) + public static function getLaneAlarms(string $currentAlarm): string { $alarmBin = preg_split( '//', @@ -59,8 +59,7 @@ class JnxDomLaneAlarmId } $index++; } - $message = implode(', ', $descr); - return $message; + return implode(', ', $descr); } } diff --git a/LibreNMS/Snmptrap/Handlers/JnxDomLaneAlarmSet.php b/LibreNMS/Snmptrap/Handlers/JnxDomLaneAlarmSet.php index 42a3716dee..0cfad2c075 100644 --- a/LibreNMS/Snmptrap/Handlers/JnxDomLaneAlarmSet.php +++ b/LibreNMS/Snmptrap/Handlers/JnxDomLaneAlarmSet.php @@ -54,6 +54,6 @@ class JnxDomLaneAlarmSet implements SnmptrapHandler return; } - Log::event("DOM lane alarm on interface $port->ifDescr lane $lane. Current alarm(s): $alarmList", $device->device_id, 'trap', 5); + $trap->log("DOM lane alarm on interface $port->ifDescr lane $lane. Current alarm(s): $alarmList", 5); } } diff --git a/LibreNMS/Snmptrap/Handlers/JnxLdpLspDown.php b/LibreNMS/Snmptrap/Handlers/JnxLdpLspDown.php index a9d3724b4b..92f81ece65 100644 --- a/LibreNMS/Snmptrap/Handlers/JnxLdpLspDown.php +++ b/LibreNMS/Snmptrap/Handlers/JnxLdpLspDown.php @@ -28,7 +28,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class JnxLdpLspDown implements SnmptrapHandler { @@ -47,6 +46,6 @@ class JnxLdpLspDown implements SnmptrapHandler $reason = $trap->getOidData($trap->findOid('JUNIPER-LDP-MIB::jnxLdpLspDownReason')); $instanceName = $trap->getOidData($trap->findOid('JUNIPER-LDP-MIB::jnxLdpInstanceName')); - Log::event("LDP session $instanceName from $routerID to $lspForward has gone down due to $reason", $device->device_id, 'trap', 4); + $trap->log("LDP session $instanceName from $routerID to $lspForward has gone down due to $reason", 4); } } diff --git a/LibreNMS/Snmptrap/Handlers/JnxLdpLspUp.php b/LibreNMS/Snmptrap/Handlers/JnxLdpLspUp.php index dd5d268f6e..d16afe92c9 100644 --- a/LibreNMS/Snmptrap/Handlers/JnxLdpLspUp.php +++ b/LibreNMS/Snmptrap/Handlers/JnxLdpLspUp.php @@ -28,7 +28,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class JnxLdpLspUp implements SnmptrapHandler { @@ -46,6 +45,6 @@ class JnxLdpLspUp implements SnmptrapHandler $routerID = $trap->getOidData($trap->findOid('JUNIPER-LDP-MIB::jnxLdpRtrid')); $instanceName = $trap->getOidData($trap->findOid('JUNIPER-LDP-MIB::jnxLdpInstanceName')); - Log::event("LDP session $instanceName from $routerID to $lspForward is now up.", $device->device_id, 'trap', 1); + $trap->log("LDP session $instanceName from $routerID to $lspForward is now up.", 1); } } diff --git a/LibreNMS/Snmptrap/Handlers/JnxLdpSesDown.php b/LibreNMS/Snmptrap/Handlers/JnxLdpSesDown.php index b72a42bef4..7d82b4406d 100644 --- a/LibreNMS/Snmptrap/Handlers/JnxLdpSesDown.php +++ b/LibreNMS/Snmptrap/Handlers/JnxLdpSesDown.php @@ -53,6 +53,6 @@ class JnxLdpSesDown implements SnmptrapHandler return; } - Log::event("LDP session on interface $port->ifDescr is $state due to $reason", $device->device_id, 'trap', 4); + $trap->log("LDP session on interface $port->ifDescr is $state due to $reason", 4); } } diff --git a/LibreNMS/Snmptrap/Handlers/JnxLdpSesUp.php b/LibreNMS/Snmptrap/Handlers/JnxLdpSesUp.php index 395587adb0..65e0560f5b 100644 --- a/LibreNMS/Snmptrap/Handlers/JnxLdpSesUp.php +++ b/LibreNMS/Snmptrap/Handlers/JnxLdpSesUp.php @@ -52,6 +52,6 @@ class JnxLdpSesUp implements SnmptrapHandler return; } - Log::event("LDP session on interface $port->ifDescr is $state", $device->device_id, 'trap', 1); + $trap->log("LDP session on interface $port->ifDescr is $state", 1); } } diff --git a/LibreNMS/Snmptrap/Handlers/JnxPowerSupplyFailure.php b/LibreNMS/Snmptrap/Handlers/JnxPowerSupplyFailure.php index dc17137238..615727faf6 100644 --- a/LibreNMS/Snmptrap/Handlers/JnxPowerSupplyFailure.php +++ b/LibreNMS/Snmptrap/Handlers/JnxPowerSupplyFailure.php @@ -28,7 +28,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class JnxPowerSupplyFailure implements SnmptrapHandler { @@ -44,6 +43,6 @@ class JnxPowerSupplyFailure implements SnmptrapHandler { $powerSupply = $trap->getOidData($trap->findOid('JUNIPER-MIB::jnxContentsDescr')); $state = $trap->getOidData($trap->findOid('JUNIPER-MIB::jnxOperatingState')); - Log::event("Power Supply $powerSupply is $state", $device->device_id, 'trap', 5); + $trap->log("Power Supply $powerSupply is $state", 5); } } diff --git a/LibreNMS/Snmptrap/Handlers/JnxPowerSupplyOk.php b/LibreNMS/Snmptrap/Handlers/JnxPowerSupplyOk.php index 133ba398ee..dec85cf275 100644 --- a/LibreNMS/Snmptrap/Handlers/JnxPowerSupplyOk.php +++ b/LibreNMS/Snmptrap/Handlers/JnxPowerSupplyOk.php @@ -28,7 +28,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class JnxPowerSupplyOk implements SnmptrapHandler { @@ -43,6 +42,6 @@ class JnxPowerSupplyOk implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $powerSupply = $trap->getOidData($trap->findOid('JUNIPER-MIB::jnxContentsDescr')); - Log::event("Power Supply $powerSupply is OK", $device->device_id, 'trap', 1); + $trap->log("Power Supply $powerSupply is OK", 1); } } diff --git a/LibreNMS/Snmptrap/Handlers/JnxVpnIfDown.php b/LibreNMS/Snmptrap/Handlers/JnxVpnIfDown.php index d0014ba82f..09b04c552a 100644 --- a/LibreNMS/Snmptrap/Handlers/JnxVpnIfDown.php +++ b/LibreNMS/Snmptrap/Handlers/JnxVpnIfDown.php @@ -28,7 +28,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class JnxVpnIfDown implements SnmptrapHandler { @@ -45,6 +44,6 @@ class JnxVpnIfDown implements SnmptrapHandler $vpnType = $trap->getOidData($trap->findOid('JUNIPER-VPN-MIB::jnxVpnIfVpnType')); $vpnName = $trap->getOidData($trap->findOid('JUNIPER-VPN-MIB::jnxVpnIfVpnName')); - Log::event("$vpnType on interface $vpnName has gone down", $device->device_id, 'trap', 4); + $trap->log("$vpnType on interface $vpnName has gone down", 4); } } diff --git a/LibreNMS/Snmptrap/Handlers/JnxVpnIfUp.php b/LibreNMS/Snmptrap/Handlers/JnxVpnIfUp.php index 025985b476..f2cc10cab0 100644 --- a/LibreNMS/Snmptrap/Handlers/JnxVpnIfUp.php +++ b/LibreNMS/Snmptrap/Handlers/JnxVpnIfUp.php @@ -28,7 +28,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class JnxVpnIfUp implements SnmptrapHandler { @@ -47,9 +46,9 @@ class JnxVpnIfUp implements SnmptrapHandler if (substr($vpnName, 0, 6) === 'vt/lsi') { $vpnDevice = substr($vpnName, 7, 15); - Log::event("$vpnType to device $vpnDevice is now connected", $device->device_id, 'trap', 1); + $trap->log("$vpnType to device $vpnDevice is now connected", 1); } else { - Log::event("$vpnType on interface $vpnName is now connected", $device->device_id, 'trap', 1); + $trap->log("$vpnType on interface $vpnName is now connected", 1); } } } diff --git a/LibreNMS/Snmptrap/Handlers/JnxVpnPwDown.php b/LibreNMS/Snmptrap/Handlers/JnxVpnPwDown.php index 143adb7c12..08ebae6db0 100644 --- a/LibreNMS/Snmptrap/Handlers/JnxVpnPwDown.php +++ b/LibreNMS/Snmptrap/Handlers/JnxVpnPwDown.php @@ -28,7 +28,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class JnxVpnPwDown implements SnmptrapHandler { @@ -45,6 +44,6 @@ class JnxVpnPwDown implements SnmptrapHandler $vpnType = $trap->getOidData($trap->findOid('JUNIPER-VPN-MIB::jnxVpnPwVpnType')); $vpnName = $trap->getOidData($trap->findOid('JUNIPER-VPN-MIB::jnxVpnPwVpnName')); - Log::event("$vpnType on a pseudowire belonging to $vpnName has gone down", $device->device_id, 'trap', 4); + $trap->log("$vpnType on a pseudowire belonging to $vpnName has gone down", 4); } } diff --git a/LibreNMS/Snmptrap/Handlers/JnxVpnPwUp.php b/LibreNMS/Snmptrap/Handlers/JnxVpnPwUp.php index 00acd22cd5..bbda1bf1fa 100644 --- a/LibreNMS/Snmptrap/Handlers/JnxVpnPwUp.php +++ b/LibreNMS/Snmptrap/Handlers/JnxVpnPwUp.php @@ -28,7 +28,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class JnxVpnPwUp implements SnmptrapHandler { @@ -45,6 +44,6 @@ class JnxVpnPwUp implements SnmptrapHandler $vpnType = $trap->getOidData($trap->findOid('JUNIPER-VPN-MIB::jnxVpnPwVpnType')); $vpnName = $trap->getOidData($trap->findOid('JUNIPER-VPN-MIB::jnxVpnPwVpnName')); - Log::event("$vpnType on a pseudowire belonging to $vpnName is now connected", $device->device_id, 'trap', 1); + $trap->log("$vpnType on a pseudowire belonging to $vpnName is now connected", 1); } } diff --git a/LibreNMS/Snmptrap/Handlers/LinkDown.php b/LibreNMS/Snmptrap/Handlers/LinkDown.php index 5f1ba110f5..ebf204946e 100644 --- a/LibreNMS/Snmptrap/Handlers/LinkDown.php +++ b/LibreNMS/Snmptrap/Handlers/LinkDown.php @@ -58,14 +58,14 @@ class LinkDown implements SnmptrapHandler if ($trapAdminStatus) { $port->ifAdminStatus = $trapAdminStatus; } - Log::event("SNMP Trap: linkDown $port->ifAdminStatus/$port->ifOperStatus " . $port->ifDescr, $device->device_id, 'interface', 5, $port->port_id); + $trap->log("SNMP Trap: linkDown $port->ifAdminStatus/$port->ifOperStatus " . $port->ifDescr, 5, 'interface', $port->port_id); if ($port->isDirty('ifAdminStatus')) { - Log::event("Interface Disabled : $port->ifDescr (TRAP)", $device->device_id, 'interface', 3, $port->port_id); + $trap->log("Interface Disabled : $port->ifDescr (TRAP)", 3, 'interface', $port->port_id); } if ($port->isDirty('ifOperStatus')) { - Log::event("Interface went Down : $port->ifDescr (TRAP)", $device->device_id, 'interface', 5, $port->port_id); + $trap->log("Interface went Down : $port->ifDescr (TRAP)", 5, 'interface', $port->port_id); } $port->save(); diff --git a/LibreNMS/Snmptrap/Handlers/LinkUp.php b/LibreNMS/Snmptrap/Handlers/LinkUp.php index 9cf85c2b98..d1aa28efea 100644 --- a/LibreNMS/Snmptrap/Handlers/LinkUp.php +++ b/LibreNMS/Snmptrap/Handlers/LinkUp.php @@ -55,14 +55,14 @@ class LinkUp implements SnmptrapHandler $port->ifOperStatus = $trap->getOidData("IF-MIB::ifOperStatus.$ifIndex") ?: 'up'; $port->ifAdminStatus = $trap->getOidData("IF-MIB::ifAdminStatus.$ifIndex") ?: 'up'; // If we receive LinkUp trap, we can safely assume that the ifAdminStatus is also up. - Log::event("SNMP Trap: linkUp $port->ifAdminStatus/$port->ifOperStatus " . $port->ifDescr, $device->device_id, 'interface', 1, $port->port_id); + $trap->log("SNMP Trap: linkUp $port->ifAdminStatus/$port->ifOperStatus " . $port->ifDescr, 1, 'interface', $port->port_id); if ($port->isDirty('ifAdminStatus')) { - Log::event("Interface Enabled : $port->ifDescr (TRAP)", $device->device_id, 'interface', 3, $port->port_id); + $trap->log("Interface Enabled : $port->ifDescr (TRAP)", 3, 'interface', $port->port_id); } if ($port->isDirty('ifOperStatus')) { - Log::event("Interface went Up : $port->ifDescr (TRAP)", $device->device_id, 'interface', 1, $port->port_id); + $trap->log("Interface went Up : $port->ifDescr (TRAP)", 1, 'interface', $port->port_id); } $port->save(); diff --git a/LibreNMS/Snmptrap/Handlers/LogTrap.php b/LibreNMS/Snmptrap/Handlers/LogTrap.php index 760305400b..43dbe53d77 100644 --- a/LibreNMS/Snmptrap/Handlers/LogTrap.php +++ b/LibreNMS/Snmptrap/Handlers/LogTrap.php @@ -28,7 +28,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class LogTrap implements SnmptrapHandler { @@ -40,7 +39,7 @@ class LogTrap implements SnmptrapHandler * @param Trap $trap * @return void */ - public function handle(Device $device, Trap $trap) + public function handle(Device $device, Trap $trap): void { $index = $trap->findOid('LOG-MIB::logIndex'); $index = $trap->getOidData($index); @@ -52,24 +51,17 @@ class LogTrap implements SnmptrapHandler $state = $trap->getOidData('LOG-MIB::logEquipStatusV2.' . $index); $severity = $this->getSeverity($state); - Log::event('SNMP Trap: Log ' . $logName . ' ' . $logEvent . ' ' . $logPC . ' ' . $logAI . ' ' . $state, $device->device_id, 'log', $severity); + $trap->log('SNMP Trap: Log ' . $logName . ' ' . $logEvent . ' ' . $logPC . ' ' . $logAI . ' ' . $state, $severity, 'log'); } - private function getSeverity($state) + private function getSeverity(string $state): int { - $severity_map = [ - 'warning' => 4, - 'major' => 4, - '5' => 4, - '3' => 4, - 'critical' => 5, - '4' => 5, - 'minor' => 3, - '2' => 3, - 'nonAlarmed' => 1, - '1' => 1, - ]; - - return $severity_map[$state] ?? 0; + return match ($state) { + 'warning', '3', 'major', '5' => 4, + 'critical', '4' => 5, + 'minor', '2' => 3, + 'nonAlarmed', '1' => 1, + default => 0, + }; } } diff --git a/LibreNMS/Snmptrap/Handlers/Mgnt2TrapNmsAlarm.php b/LibreNMS/Snmptrap/Handlers/Mgnt2TrapNmsAlarm.php index 682a60841b..efa61703d8 100644 --- a/LibreNMS/Snmptrap/Handlers/Mgnt2TrapNmsAlarm.php +++ b/LibreNMS/Snmptrap/Handlers/Mgnt2TrapNmsAlarm.php @@ -30,7 +30,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class Mgnt2TrapNmsAlarm implements SnmptrapHandler { @@ -94,6 +93,6 @@ class Mgnt2TrapNmsAlarm implements SnmptrapHandler break; } - Log::event($msg, $device->device_id, 'trap', $severity); + $trap->log($msg, $severity); } } diff --git a/LibreNMS/Snmptrap/Handlers/Mgnt2TrapNmsEvent.php b/LibreNMS/Snmptrap/Handlers/Mgnt2TrapNmsEvent.php index c595f5c6bc..17669dad26 100644 --- a/LibreNMS/Snmptrap/Handlers/Mgnt2TrapNmsEvent.php +++ b/LibreNMS/Snmptrap/Handlers/Mgnt2TrapNmsEvent.php @@ -30,7 +30,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class Mgnt2TrapNmsEvent implements SnmptrapHandler { @@ -62,6 +61,6 @@ class Mgnt2TrapNmsEvent implements SnmptrapHandler } else { $msg = "Event on slot $slot, $sourcePm Reason: $logReason"; } - Log::event($msg, $device->device_id, 'trap', 2); + $trap->log($msg); } } diff --git a/LibreNMS/Snmptrap/Handlers/OspfIfStateChange.php b/LibreNMS/Snmptrap/Handlers/OspfIfStateChange.php index eb2635aac4..dbd48d599d 100644 --- a/LibreNMS/Snmptrap/Handlers/OspfIfStateChange.php +++ b/LibreNMS/Snmptrap/Handlers/OspfIfStateChange.php @@ -85,7 +85,7 @@ class OspfIfStateChange implements SnmptrapHandler break; } - Log::event("OSPF interface $port->ifName is $ospfPort->ospfIfState", $device->device_id, 'trap', $severity); + $trap->log("OSPF interface $port->ifName is $ospfPort->ospfIfState", $severity); $ospfPort->save(); } diff --git a/LibreNMS/Snmptrap/Handlers/OspfNbrStateChange.php b/LibreNMS/Snmptrap/Handlers/OspfNbrStateChange.php index 516810e922..73990abbfc 100644 --- a/LibreNMS/Snmptrap/Handlers/OspfNbrStateChange.php +++ b/LibreNMS/Snmptrap/Handlers/OspfNbrStateChange.php @@ -31,7 +31,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class OspfNbrStateChange implements SnmptrapHandler { @@ -58,7 +57,7 @@ class OspfNbrStateChange implements SnmptrapHandler $severity = 5; } - Log::event("OSPF neighbor $ospfNbrIpAddr changed state to $ospfNbr->ospfNbrState", $device->device_id, 'trap', $severity); + $trap->log("OSPF neighbor $ospfNbrIpAddr changed state to $ospfNbr->ospfNbrState", $severity); $ospfNbr->save(); } diff --git a/LibreNMS/Snmptrap/Handlers/OspfTxRetransmit.php b/LibreNMS/Snmptrap/Handlers/OspfTxRetransmit.php index 724258920d..d7fbae4657 100755 --- a/LibreNMS/Snmptrap/Handlers/OspfTxRetransmit.php +++ b/LibreNMS/Snmptrap/Handlers/OspfTxRetransmit.php @@ -28,7 +28,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class OspfTxRetransmit implements SnmptrapHandler { @@ -50,11 +49,11 @@ class OspfTxRetransmit implements SnmptrapHandler $ospfLsdbLsid = $trap->getOidData($trap->findOid('OSPF-MIB::ospfLsdbLsid')); if ($ospfPacketType != 'lsUpdate') { - Log::event('SNMP TRAP: ' . $device->displayName() . "(Router ID: $ospfRouterId) sent a $ospfPacketType packet to $ospfNbrRtrId.", $device->device_id, 'trap', 2); + $trap->log('SNMP TRAP: ' . $device->displayName() . "(Router ID: $ospfRouterId) sent a $ospfPacketType packet to $ospfNbrRtrId."); return; } - Log::event('SNMP Trap: OSPFTxRetransmit trap recieved from ' . $device->displayName() . "(Router ID: $ospfRouterId). A $ospfPacketType packet was sent to $ospfNbrRtrId. LSType: $ospfLsdbType, route ID: $ospfLsdbLsid, originating from $ospfLsdbRouterId.", $device->device_id, 'trap', 2); + $trap->log('SNMP Trap: OSPFTxRetransmit trap received from ' . $device->displayName() . "(Router ID: $ospfRouterId). A $ospfPacketType packet was sent to $ospfNbrRtrId. LSType: $ospfLsdbType, route ID: $ospfLsdbLsid, originating from $ospfLsdbRouterId."); } } diff --git a/LibreNMS/Snmptrap/Handlers/RuckusAssocTrap.php b/LibreNMS/Snmptrap/Handlers/RuckusAssocTrap.php index 5befe2b9f0..ab5d3812cb 100644 --- a/LibreNMS/Snmptrap/Handlers/RuckusAssocTrap.php +++ b/LibreNMS/Snmptrap/Handlers/RuckusAssocTrap.php @@ -31,7 +31,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class RuckusAssocTrap implements SnmptrapHandler { @@ -47,6 +46,6 @@ class RuckusAssocTrap implements SnmptrapHandler { $macRaw = $trap->getOidData($trap->findOid('RUCKUS-EVENT-MIB::ruckusEventClientMacAddr')); $mac = substr($macRaw, 0, 17); - Log::event("Client $mac associated", $device->device_id, 'trap', 2); + $trap->log("Client $mac associated"); } } diff --git a/LibreNMS/Snmptrap/Handlers/RuckusDiassocTrap.php b/LibreNMS/Snmptrap/Handlers/RuckusDiassocTrap.php index c74278e915..a9105777c7 100644 --- a/LibreNMS/Snmptrap/Handlers/RuckusDiassocTrap.php +++ b/LibreNMS/Snmptrap/Handlers/RuckusDiassocTrap.php @@ -31,7 +31,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class RuckusDiassocTrap implements SnmptrapHandler { @@ -47,6 +46,6 @@ class RuckusDiassocTrap implements SnmptrapHandler { $macRaw = $trap->getOidData($trap->findOid('RUCKUS-EVENT-MIB::ruckusEventClientMacAddr')); $mac = substr($macRaw, 0, 17); - Log::event("Client $mac disassociated", $device->device_id, 'trap', 2); + $trap->log("Client $mac disassociated"); } } diff --git a/LibreNMS/Snmptrap/Handlers/RuckusSetError.php b/LibreNMS/Snmptrap/Handlers/RuckusSetError.php index 7a0e5f1fdd..e6de623e11 100644 --- a/LibreNMS/Snmptrap/Handlers/RuckusSetError.php +++ b/LibreNMS/Snmptrap/Handlers/RuckusSetError.php @@ -31,7 +31,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class RuckusSetError implements SnmptrapHandler { @@ -47,6 +46,6 @@ class RuckusSetError implements SnmptrapHandler { $errorOidDirty = $trap->getOidData($trap->findOid('RUCKUS-EVENT-MIB::ruckusEventSetErrorOID')); $errorOid = substr($errorOidDirty, 43); - Log::event("SNMP set error on oid $errorOid", $device->device_id, 'trap', 2); + $trap->log("SNMP set error on oid $errorOid"); } } diff --git a/LibreNMS/Snmptrap/Handlers/RuckusSzApConf.php b/LibreNMS/Snmptrap/Handlers/RuckusSzApConf.php index f9ee1f504d..e02ad03330 100644 --- a/LibreNMS/Snmptrap/Handlers/RuckusSzApConf.php +++ b/LibreNMS/Snmptrap/Handlers/RuckusSzApConf.php @@ -32,7 +32,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class RuckusSzApConf implements SnmptrapHandler { @@ -49,6 +48,6 @@ class RuckusSzApConf implements SnmptrapHandler $location = $trap->getOidData($trap->findOid('RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPLocation')); $configId = $trap->getOidData($trap->findOid('RUCKUS-SZ-EVENT-MIB::ruckusSZAPConfigID')); $severity = RuckusSzSeverity::getSeverity($trap->getOidData($trap->findOid('RUCKUS-SZ-EVENT-MIB::ruckusSZEventSeverity'))); - Log::event("AP at location $location configuration updated with config-id $configId", $device->device_id, 'trap', $severity); + $trap->log("AP at location $location configuration updated with config-id $configId", $severity); } } diff --git a/LibreNMS/Snmptrap/Handlers/RuckusSzApConnect.php b/LibreNMS/Snmptrap/Handlers/RuckusSzApConnect.php index 9d6050dff2..124ba7b254 100644 --- a/LibreNMS/Snmptrap/Handlers/RuckusSzApConnect.php +++ b/LibreNMS/Snmptrap/Handlers/RuckusSzApConnect.php @@ -31,7 +31,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class RuckusSzApConnect implements SnmptrapHandler { @@ -48,6 +47,6 @@ class RuckusSzApConnect implements SnmptrapHandler $location = $trap->getOidData($trap->findOid('RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPLocation')); $reason = $trap->getOidData($trap->findOid('RUCKUS-SZ-EVENT-MIB::ruckusSZEventReason')); $severity = RuckusSzSeverity::getSeverity($trap->getOidData($trap->findOid('RUCKUS-SZ-EVENT-MIB::ruckusSZEventSeverity'))); - Log::event("AP at location $location has connected to the SmartZone with reason $reason", $device->device_id, 'trap', $severity); + $trap->log("AP at location $location has connected to the SmartZone with reason $reason", $severity); } } diff --git a/LibreNMS/Snmptrap/Handlers/RuckusSzApMiscEvent.php b/LibreNMS/Snmptrap/Handlers/RuckusSzApMiscEvent.php index 552eda2c39..772d036fbb 100644 --- a/LibreNMS/Snmptrap/Handlers/RuckusSzApMiscEvent.php +++ b/LibreNMS/Snmptrap/Handlers/RuckusSzApMiscEvent.php @@ -31,7 +31,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class RuckusSzApMiscEvent implements SnmptrapHandler { @@ -47,6 +46,6 @@ class RuckusSzApMiscEvent implements SnmptrapHandler { $severity = RuckusSzSeverity::getSeverity($trap->getOidData($trap->findOid('RUCKUS-SZ-EVENT-MIB::ruckusSZEventSeverity'))); $eventDescr = $trap->getOidData($trap->findOid('RUCKUS-SZ-EVENT-MIB::ruckusSZEventDescription')); - Log::event("AP event: $eventDescr", $device->device_id, 'trap', $severity); + $trap->log("AP event: $eventDescr", $severity); } } diff --git a/LibreNMS/Snmptrap/Handlers/RuckusSzApReboot.php b/LibreNMS/Snmptrap/Handlers/RuckusSzApReboot.php index 0a8ca54575..13987cda49 100644 --- a/LibreNMS/Snmptrap/Handlers/RuckusSzApReboot.php +++ b/LibreNMS/Snmptrap/Handlers/RuckusSzApReboot.php @@ -31,7 +31,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class RuckusSzApReboot implements SnmptrapHandler { @@ -48,6 +47,6 @@ class RuckusSzApReboot implements SnmptrapHandler $location = $trap->getOidData($trap->findOid('RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPLocation')); $reason = $trap->getOidData($trap->findOid('RUCKUS-SZ-EVENT-MIB::ruckusSZEventReason')); $severity = RuckusSzSeverity::getSeverity($trap->getOidData($trap->findOid('RUCKUS-SZ-EVENT-MIB::ruckusSZEventSeverity'))); - Log::event("AP at site $location rebooted with reason $reason", $device->device_id, 'trap', $severity); + $trap->log("AP at site $location rebooted with reason $reason", $severity); } } diff --git a/LibreNMS/Snmptrap/Handlers/RuckusSzClusterInMaintenance.php b/LibreNMS/Snmptrap/Handlers/RuckusSzClusterInMaintenance.php index 36a7fcbb2a..78fee7bfe9 100644 --- a/LibreNMS/Snmptrap/Handlers/RuckusSzClusterInMaintenance.php +++ b/LibreNMS/Snmptrap/Handlers/RuckusSzClusterInMaintenance.php @@ -34,7 +34,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class RuckusSzClusterInMaintenance implements SnmptrapHandler { @@ -49,6 +48,6 @@ class RuckusSzClusterInMaintenance implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $clusterName = $trap->getOidData($trap->findOid('RUCKUS-SZ-EVENT-MIB::ruckusSZClusterName')); - Log::event("Smartzone cluster $clusterName state changed to maintenance", $device->device_id, 'trap', 3); + $trap->log("Smartzone cluster $clusterName state changed to maintenance", 3); } } diff --git a/LibreNMS/Snmptrap/Handlers/RuckusSzClusterInService.php b/LibreNMS/Snmptrap/Handlers/RuckusSzClusterInService.php index 8c0f3b086b..abc2aee965 100644 --- a/LibreNMS/Snmptrap/Handlers/RuckusSzClusterInService.php +++ b/LibreNMS/Snmptrap/Handlers/RuckusSzClusterInService.php @@ -31,7 +31,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class RuckusSzClusterInService implements SnmptrapHandler { @@ -46,6 +45,6 @@ class RuckusSzClusterInService implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $clusterName = $trap->getOidData($trap->findOid('RUCKUS-SZ-EVENT-MIB::ruckusSZClusterName')); - Log::event("Smartzone cluster $clusterName is now in service", $device->device_id, 'trap', 2); + $trap->log("Smartzone cluster $clusterName is now in service"); } } diff --git a/LibreNMS/Snmptrap/Handlers/RuckusSzSeverity.php b/LibreNMS/Snmptrap/Handlers/RuckusSzSeverity.php index b3dc891570..9ec1eb0121 100644 --- a/LibreNMS/Snmptrap/Handlers/RuckusSzSeverity.php +++ b/LibreNMS/Snmptrap/Handlers/RuckusSzSeverity.php @@ -30,29 +30,13 @@ namespace LibreNMS\Snmptrap\Handlers; class RuckusSzSeverity { - public static function getSeverity($severity) + public static function getSeverity(string $severity): int { - switch ($severity) { - case 'Critical': - $severityNum = 5; - break; - case 'Major': - $severityNum = 4; - break; - case 'Minor': - $severityNum = 4; - break; - case 'Warning': - $severityNum = 3; - break; - case 'Informational': - $severityNum = 2; - break; - default: - $severityNum = 2; - break; - } - - return $severityNum; + return match ($severity) { + 'Critical' => 5, + 'Major', 'Minor' => 4, + 'Warning' => 3, + default => 2 // Informational + }; } } diff --git a/LibreNMS/Snmptrap/Handlers/SnTrapUserLogin.php b/LibreNMS/Snmptrap/Handlers/SnTrapUserLogin.php index 6a4aef888e..c810f5ec9f 100644 --- a/LibreNMS/Snmptrap/Handlers/SnTrapUserLogin.php +++ b/LibreNMS/Snmptrap/Handlers/SnTrapUserLogin.php @@ -27,7 +27,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class SnTrapUserLogin implements SnmptrapHandler { @@ -42,6 +41,6 @@ class SnTrapUserLogin implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $message = $trap->getOidData($trap->findOid('FOUNDRY-SN-AGENT-MIB::snAgGblTrapMessage.0')); - Log::event("$message", $device->device_id, 'trap', 2); + $trap->log("$message"); } } diff --git a/LibreNMS/Snmptrap/Handlers/SnTrapUserLogout.php b/LibreNMS/Snmptrap/Handlers/SnTrapUserLogout.php index db6a25d077..8c7c4995b9 100644 --- a/LibreNMS/Snmptrap/Handlers/SnTrapUserLogout.php +++ b/LibreNMS/Snmptrap/Handlers/SnTrapUserLogout.php @@ -27,7 +27,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class SnTrapUserLogout implements SnmptrapHandler { @@ -42,6 +41,6 @@ class SnTrapUserLogout implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $message = $trap->getOidData($trap->findOid('FOUNDRY-SN-AGENT-MIB::snAgGblTrapMessage.0')); - Log::event("$message", $device->device_id, 'trap', 2); + $trap->log("$message"); } } diff --git a/LibreNMS/Snmptrap/Handlers/TrippliteAlarmAdded.php b/LibreNMS/Snmptrap/Handlers/TrippliteAlarmAdded.php index 6c9ef11c52..fbbb1e67df 100644 --- a/LibreNMS/Snmptrap/Handlers/TrippliteAlarmAdded.php +++ b/LibreNMS/Snmptrap/Handlers/TrippliteAlarmAdded.php @@ -33,6 +33,6 @@ class TrippliteAlarmAdded extends Tripplite implements SnmptrapHandler { public function handle(Device $device, Trap $trap) { - \Log::event($this->describe($trap), $device->device_id, 'trap', $this->getSeverity($trap)); + $trap->log($this->describe($trap), $this->getSeverity($trap)); } } diff --git a/LibreNMS/Snmptrap/Handlers/TrippliteAlarmRemoved.php b/LibreNMS/Snmptrap/Handlers/TrippliteAlarmRemoved.php index 51a8089ed8..bc2f44ff11 100644 --- a/LibreNMS/Snmptrap/Handlers/TrippliteAlarmRemoved.php +++ b/LibreNMS/Snmptrap/Handlers/TrippliteAlarmRemoved.php @@ -33,6 +33,6 @@ class TrippliteAlarmRemoved extends Tripplite implements SnmptrapHandler { public function handle(Device $device, Trap $trap) { - \Log::event($this->describe($trap), $device->device_id, 'trap', $this->getSeverity($trap)); + $trap->log($this->describe($trap), $this->getSeverity($trap)); } } diff --git a/LibreNMS/Snmptrap/Handlers/UpsTrapOnBattery.php b/LibreNMS/Snmptrap/Handlers/UpsTrapOnBattery.php index e42b885f37..c33a4d57b2 100644 --- a/LibreNMS/Snmptrap/Handlers/UpsTrapOnBattery.php +++ b/LibreNMS/Snmptrap/Handlers/UpsTrapOnBattery.php @@ -44,7 +44,7 @@ class UpsTrapOnBattery implements SnmptrapHandler { $min_remaining = (int) Str::before($trap->getOidData($trap->findOid('UPS-MIB::upsEstimatedMinutesRemaining')), ' '); $sec_time = (int) Str::before($trap->getOidData($trap->findOid('UPS-MIB::upsSecondsOnBattery')), ' '); - Log::event("UPS running on battery for $sec_time seconds. Estimated $min_remaining minutes remaining", $device->device_id, 'trap', 5); + $trap->log("UPS running on battery for $sec_time seconds. Estimated $min_remaining minutes remaining", 5); $sensor_remaining = $device->sensors()->where('sensor_index', '200')->where('sensor_type', 'rfc1628')->first(); if (! $sensor_remaining) { Log::warning("Snmptrap upsTrapOnBattery: Could not find matching sensor \'Estimated battery time remaining\' for device: " . $device->hostname); diff --git a/LibreNMS/Snmptrap/Handlers/UpsmgUtilityFailure.php b/LibreNMS/Snmptrap/Handlers/UpsmgUtilityFailure.php index b0dc0d8704..971550f77f 100644 --- a/LibreNMS/Snmptrap/Handlers/UpsmgUtilityFailure.php +++ b/LibreNMS/Snmptrap/Handlers/UpsmgUtilityFailure.php @@ -50,6 +50,6 @@ class UpsmgUtilityFailure implements SnmptrapHandler } $sensor->sensor_current = 1; $sensor->save(); - Log::event('UPS power failed, state sensor ' . $sensor->sensor_descr . ' has changed to ' . $sensor->sensor_current . '.', $device->device_id, 'Power', 5); + $trap->log('UPS power failed, state sensor ' . $sensor->sensor_descr . ' has changed to ' . $sensor->sensor_current . '.', 5, 'Power'); } } diff --git a/LibreNMS/Snmptrap/Handlers/UpsmgUtilityRestored.php b/LibreNMS/Snmptrap/Handlers/UpsmgUtilityRestored.php index f37dc7a699..a039701722 100644 --- a/LibreNMS/Snmptrap/Handlers/UpsmgUtilityRestored.php +++ b/LibreNMS/Snmptrap/Handlers/UpsmgUtilityRestored.php @@ -48,6 +48,6 @@ class UpsmgUtilityRestored implements SnmptrapHandler } $sensor->sensor_current = 2; $sensor->save(); - Log::event('UPS power restored, state sensor ' . $sensor->sensor_descr . ' has changed to ' . $sensor->sensor_current . '.', $device->device_id, 'Power', 1); + $trap->log('UPS power restored, state sensor ' . $sensor->sensor_descr . ' has changed to ' . $sensor->sensor_current . '.', 1, 'Power'); } } diff --git a/LibreNMS/Snmptrap/Handlers/VeeamBackupJobCompleted.php b/LibreNMS/Snmptrap/Handlers/VeeamBackupJobCompleted.php index 88f5e42065..f37af67227 100644 --- a/LibreNMS/Snmptrap/Handlers/VeeamBackupJobCompleted.php +++ b/LibreNMS/Snmptrap/Handlers/VeeamBackupJobCompleted.php @@ -5,7 +5,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class VeeamBackupJobCompleted implements SnmptrapHandler { @@ -24,6 +23,6 @@ class VeeamBackupJobCompleted implements SnmptrapHandler $result = $trap->getOidData('VEEAM-MIB::backupJobResult'); $color = ['Success' => 1, 'Warning' => 4, 'Failed' => 5]; - Log::event('SNMP Trap: Backup Job ' . $result . ' - ' . $name . ' - ' . $comment, $device->device_id, 'backup', $color[$result]); + $trap->log('SNMP Trap: Backup Job ' . $result . ' - ' . $name . ' - ' . $comment, $color[$result], 'backup'); } } diff --git a/LibreNMS/Snmptrap/Handlers/VeeamCdpRpoReport.php b/LibreNMS/Snmptrap/Handlers/VeeamCdpRpoReport.php index 110296a903..29109dc8d0 100644 --- a/LibreNMS/Snmptrap/Handlers/VeeamCdpRpoReport.php +++ b/LibreNMS/Snmptrap/Handlers/VeeamCdpRpoReport.php @@ -5,7 +5,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class VeeamCdpRpoReport implements SnmptrapHandler { @@ -24,6 +23,6 @@ class VeeamCdpRpoReport implements SnmptrapHandler $result = $trap->getOidData('VEEAM-MIB::cdpRpoStatus'); $color = ['Success' => 1, 'Warning' => 4, 'Failed' => 5]; - Log::event('SNMP Trap: CDP policy RPO status change' . $result . ' - ' . $policy_name . ' ' . $vm_name, $device->device_id, 'policy', $color[$result]); + $trap->log('SNMP Trap: CDP policy RPO status change' . $result . ' - ' . $policy_name . ' ' . $vm_name, $color[$result], 'policy'); } } diff --git a/LibreNMS/Snmptrap/Handlers/VeeamLinuxFLRCopyToFinished.php b/LibreNMS/Snmptrap/Handlers/VeeamLinuxFLRCopyToFinished.php index b83633a0c9..3054f636a1 100644 --- a/LibreNMS/Snmptrap/Handlers/VeeamLinuxFLRCopyToFinished.php +++ b/LibreNMS/Snmptrap/Handlers/VeeamLinuxFLRCopyToFinished.php @@ -5,7 +5,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class VeeamLinuxFLRCopyToFinished implements SnmptrapHandler { @@ -27,6 +26,6 @@ class VeeamLinuxFLRCopyToFinished implements SnmptrapHandler $result = $trap->getOidData('VEEAM-MIB::transferStatus'); $color = ['Success' => 1, 'Warning' => 4, 'Failed' => 5]; - Log::event('SNMP Trap: FLR job ' . $result . ' - ' . $vm_name . ' - ' . $initiator_name . ' ' . $target_host . ' ' . $target_dir . ' Time taken: ' . $time, $device->device_id, 'backup', $color[$result]); + $trap->log('SNMP Trap: FLR job ' . $result . ' - ' . $vm_name . ' - ' . $initiator_name . ' ' . $target_host . ' ' . $target_dir . ' Time taken: ' . $time, $color[$result], 'backup'); } } diff --git a/LibreNMS/Snmptrap/Handlers/VeeamLinuxFLRCopyToStarted.php b/LibreNMS/Snmptrap/Handlers/VeeamLinuxFLRCopyToStarted.php index f4f828a921..6e09864855 100644 --- a/LibreNMS/Snmptrap/Handlers/VeeamLinuxFLRCopyToStarted.php +++ b/LibreNMS/Snmptrap/Handlers/VeeamLinuxFLRCopyToStarted.php @@ -5,7 +5,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class VeeamLinuxFLRCopyToStarted implements SnmptrapHandler { @@ -24,6 +23,6 @@ class VeeamLinuxFLRCopyToStarted implements SnmptrapHandler $target_host = $trap->getOidData('VEEAM-MIB::targetHost'); $target_dir = $trap->getOidData('VEEAM-MIB::targetDir'); - Log::event('SNMP Trap: FLR job started - ' . $vm_name . ' - ' . $initiator_name . ' ' . $target_dir . ' ' . $target_host, $device->device_id, 'backup', 2); + $trap->log('SNMP Trap: FLR job started - ' . $vm_name . ' - ' . $initiator_name . ' ' . $target_dir . ' ' . $target_host, 2, 'backup'); } } diff --git a/LibreNMS/Snmptrap/Handlers/VeeamLinuxFLRMountStarted.php b/LibreNMS/Snmptrap/Handlers/VeeamLinuxFLRMountStarted.php index 2817249100..b0fdd01ec6 100644 --- a/LibreNMS/Snmptrap/Handlers/VeeamLinuxFLRMountStarted.php +++ b/LibreNMS/Snmptrap/Handlers/VeeamLinuxFLRMountStarted.php @@ -5,7 +5,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class VeeamLinuxFLRMountStarted implements SnmptrapHandler { @@ -22,6 +21,6 @@ class VeeamLinuxFLRMountStarted implements SnmptrapHandler $initiator_name = $trap->getOidData('VEEAM-MIB::initiatorName'); $vm_name = $trap->getOidData('VEEAM-MIB::vmName'); - Log::event('SNMP Trap: FLR job started - ' . $vm_name . ' - ' . $initiator_name, $device->device_id, 'backup', 2); + $trap->log('SNMP Trap: FLR job started - ' . $vm_name . ' - ' . $initiator_name, 2, 'backup'); } } diff --git a/LibreNMS/Snmptrap/Handlers/VeeamLinuxFLRToOriginalFinished.php b/LibreNMS/Snmptrap/Handlers/VeeamLinuxFLRToOriginalFinished.php index 635612c9c1..1e230c1d86 100644 --- a/LibreNMS/Snmptrap/Handlers/VeeamLinuxFLRToOriginalFinished.php +++ b/LibreNMS/Snmptrap/Handlers/VeeamLinuxFLRToOriginalFinished.php @@ -5,7 +5,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class VeeamLinuxFLRToOriginalFinished implements SnmptrapHandler { @@ -25,6 +24,6 @@ class VeeamLinuxFLRToOriginalFinished implements SnmptrapHandler $result = $trap->getOidData('VEEAM-MIB::transferStatus'); $color = ['Success' => 1, 'Warning' => 4, 'Failed' => 5]; - Log::event('SNMP Trap: FLR job ' . $result . ' - ' . $vm_name . ' - ' . $initiator_name . ' Time taken: ' . $time, $device->device_id, 'backup', $color[$result]); + $trap->log('SNMP Trap: FLR job ' . $result . ' - ' . $vm_name . ' - ' . $initiator_name . ' Time taken: ' . $time, $color[$result], 'backup'); } } diff --git a/LibreNMS/Snmptrap/Handlers/VeeamLinuxFLRToOriginalStarted.php b/LibreNMS/Snmptrap/Handlers/VeeamLinuxFLRToOriginalStarted.php index 074198e921..5a8587ba8e 100644 --- a/LibreNMS/Snmptrap/Handlers/VeeamLinuxFLRToOriginalStarted.php +++ b/LibreNMS/Snmptrap/Handlers/VeeamLinuxFLRToOriginalStarted.php @@ -5,7 +5,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class VeeamLinuxFLRToOriginalStarted implements SnmptrapHandler { @@ -22,6 +21,6 @@ class VeeamLinuxFLRToOriginalStarted implements SnmptrapHandler $initiator_name = $trap->getOidData('VEEAM-MIB::initiatorName'); $vm_name = $trap->getOidData('VEEAM-MIB::vmName'); - Log::event('SNMP Trap: FLR job started - ' . $vm_name . ' - ' . $initiator_name, $device->device_id, 'backup', 2); + $trap->log('SNMP Trap: FLR job started - ' . $vm_name . ' - ' . $initiator_name, 2, 'backup'); } } diff --git a/LibreNMS/Snmptrap/Handlers/VeeamSobrOffloadFinished.php b/LibreNMS/Snmptrap/Handlers/VeeamSobrOffloadFinished.php index 971dbe1b80..af5e5c13db 100644 --- a/LibreNMS/Snmptrap/Handlers/VeeamSobrOffloadFinished.php +++ b/LibreNMS/Snmptrap/Handlers/VeeamSobrOffloadFinished.php @@ -5,7 +5,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class VeeamSobrOffloadFinished implements SnmptrapHandler { @@ -23,6 +22,6 @@ class VeeamSobrOffloadFinished implements SnmptrapHandler $result = $trap->getOidData('VEEAM-MIB::repositoryStatus'); $color = ['Success' => 1, 'Warning' => 4, 'Failed' => 5]; - Log::event('SNMP Trap: Scale-out offload job ' . $result . ' - ' . $name, $device->device_id, 'backup', $color[$result]); + $trap->log('SNMP Trap: Scale-out offload job ' . $result . ' - ' . $name, $color[$result], 'backup'); } } diff --git a/LibreNMS/Snmptrap/Handlers/VeeamVmBackupCompleted.php b/LibreNMS/Snmptrap/Handlers/VeeamVmBackupCompleted.php index eafe8e5f65..2245407a2c 100644 --- a/LibreNMS/Snmptrap/Handlers/VeeamVmBackupCompleted.php +++ b/LibreNMS/Snmptrap/Handlers/VeeamVmBackupCompleted.php @@ -5,7 +5,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class VeeamVmBackupCompleted implements SnmptrapHandler { @@ -25,6 +24,6 @@ class VeeamVmBackupCompleted implements SnmptrapHandler $result = $trap->getOidData('VEEAM-MIB::vmBackupResult'); $color = ['Success' => 1, 'Warning' => 4, 'Failed' => 5]; - Log::event('SNMP Trap: VM backup ' . $result . ' - ' . $vm_name . ' Job: ' . $job_name . ' - ' . $comment, $device->device_id, 'backup', $color[$result]); + $trap->log('SNMP Trap: VM backup ' . $result . ' - ' . $vm_name . ' Job: ' . $job_name . ' - ' . $comment, $color[$result], 'backup'); } } diff --git a/LibreNMS/Snmptrap/Handlers/VeeamWebDownloadFinished.php b/LibreNMS/Snmptrap/Handlers/VeeamWebDownloadFinished.php index 47eb59587d..4edd6f7d6b 100644 --- a/LibreNMS/Snmptrap/Handlers/VeeamWebDownloadFinished.php +++ b/LibreNMS/Snmptrap/Handlers/VeeamWebDownloadFinished.php @@ -5,7 +5,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class VeeamWebDownloadFinished implements SnmptrapHandler { @@ -24,6 +23,6 @@ class VeeamWebDownloadFinished implements SnmptrapHandler $result = $trap->getOidData('VEEAM-MIB::transferStatus'); $color = ['Success' => 1, 'Warning' => 4, 'Failed' => 5]; - Log::event('SNMP Trap: 1 click FLR job ' . $result . ' - ' . $vm_name . ' - ' . $initiator_name, $device->device_id, 'backup', $color[$result]); + $trap->log('SNMP Trap: 1 click FLR job ' . $result . ' - ' . $vm_name . ' - ' . $initiator_name, $color[$result], 'backup'); } } diff --git a/LibreNMS/Snmptrap/Handlers/VeeamWebDownloadStart.php b/LibreNMS/Snmptrap/Handlers/VeeamWebDownloadStart.php index 18e00a2cc9..e96835f85c 100644 --- a/LibreNMS/Snmptrap/Handlers/VeeamWebDownloadStart.php +++ b/LibreNMS/Snmptrap/Handlers/VeeamWebDownloadStart.php @@ -5,7 +5,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class VeeamWebDownloadStart implements SnmptrapHandler { @@ -22,6 +21,6 @@ class VeeamWebDownloadStart implements SnmptrapHandler $initiator_name = $trap->getOidData('VEEAM-MIB::initiatorName'); $vm_name = $trap->getOidData('VEEAM-MIB::vmName'); - Log::event('SNMP Trap: 1 click FLR job started - ' . $vm_name . ' - ' . $initiator_name, $device->device_id, 'backup', 2); + $trap->log('SNMP Trap: 1 click FLR job started - ' . $vm_name . ' - ' . $initiator_name, 2, 'backup'); } } diff --git a/LibreNMS/Snmptrap/Handlers/VeeamWinFLRCopyToFinished.php b/LibreNMS/Snmptrap/Handlers/VeeamWinFLRCopyToFinished.php index 280569efd2..b231167908 100644 --- a/LibreNMS/Snmptrap/Handlers/VeeamWinFLRCopyToFinished.php +++ b/LibreNMS/Snmptrap/Handlers/VeeamWinFLRCopyToFinished.php @@ -5,7 +5,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class VeeamWinFLRCopyToFinished implements SnmptrapHandler { @@ -25,6 +24,6 @@ class VeeamWinFLRCopyToFinished implements SnmptrapHandler $result = $trap->getOidData('VEEAM-MIB::transferStatus'); $color = ['Success' => 1, 'Warning' => 4, 'Failed' => 5]; - Log::event('SNMP Trap: FLR job ' . $result . ' - ' . $vm_name . ' - ' . $initiator_name . ' ' . $target_dir, $device->device_id, 'backup', $color[$result]); + $trap->log('SNMP Trap: FLR job ' . $result . ' - ' . $vm_name . ' - ' . $initiator_name . ' ' . $target_dir, $color[$result], 'backup'); } } diff --git a/LibreNMS/Snmptrap/Handlers/VeeamWinFLRCopyToStarted.php b/LibreNMS/Snmptrap/Handlers/VeeamWinFLRCopyToStarted.php index dfb86ea5c9..90bc90d887 100644 --- a/LibreNMS/Snmptrap/Handlers/VeeamWinFLRCopyToStarted.php +++ b/LibreNMS/Snmptrap/Handlers/VeeamWinFLRCopyToStarted.php @@ -5,7 +5,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class VeeamWinFLRCopyToStarted implements SnmptrapHandler { @@ -23,6 +22,6 @@ class VeeamWinFLRCopyToStarted implements SnmptrapHandler $vm_name = $trap->getOidData('VEEAM-MIB::vmName'); $target_dir = $trap->getOidData('VEEAM-MIB::targetDir'); - Log::event('SNMP Trap: FLR job started - ' . $vm_name . ' - ' . $initiator_name . ' - ' . $target_dir, $device->device_id, 'backup', 2); + $trap->log('SNMP Trap: FLR job started - ' . $vm_name . ' - ' . $initiator_name . ' - ' . $target_dir, 2, 'backup'); } } diff --git a/LibreNMS/Snmptrap/Handlers/VeeamWinFLRMountStarted.php b/LibreNMS/Snmptrap/Handlers/VeeamWinFLRMountStarted.php index 8c7a1a7f51..c88f3b60cb 100644 --- a/LibreNMS/Snmptrap/Handlers/VeeamWinFLRMountStarted.php +++ b/LibreNMS/Snmptrap/Handlers/VeeamWinFLRMountStarted.php @@ -5,7 +5,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class VeeamWinFLRMountStarted implements SnmptrapHandler { @@ -22,6 +21,6 @@ class VeeamWinFLRMountStarted implements SnmptrapHandler $initiator_name = $trap->getOidData('VEEAM-MIB::initiatorName'); $vm_name = $trap->getOidData('VEEAM-MIB::vmName'); - Log::event('SNMP Trap: FLR job started - ' . $vm_name . ' - ' . $initiator_name, $device->device_id, 'backup', 2); + $trap->log('SNMP Trap: FLR job started - ' . $vm_name . ' - ' . $initiator_name, 2, 'backup'); } } diff --git a/LibreNMS/Snmptrap/Handlers/VeeamWinFLRToOriginalFinished.php b/LibreNMS/Snmptrap/Handlers/VeeamWinFLRToOriginalFinished.php index 6b8839ace4..2f52cad4ff 100644 --- a/LibreNMS/Snmptrap/Handlers/VeeamWinFLRToOriginalFinished.php +++ b/LibreNMS/Snmptrap/Handlers/VeeamWinFLRToOriginalFinished.php @@ -5,7 +5,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class VeeamWinFLRToOriginalFinished implements SnmptrapHandler { @@ -24,6 +23,6 @@ class VeeamWinFLRToOriginalFinished implements SnmptrapHandler $result = $trap->getOidData('VEEAM-MIB::transferStatus'); $color = ['Success' => 1, 'Warning' => 4, 'Failed' => 5]; - Log::event('SNMP Trap: FLR job started - ' . $vm_name . ' - ' . $initiator_name, $device->device_id, 'backup', $color[$result]); + $trap->log('SNMP Trap: FLR job started - ' . $vm_name . ' - ' . $initiator_name, $color[$result], 'backup'); } } diff --git a/LibreNMS/Snmptrap/Handlers/VeeamWinFLRToOriginalStarted.php b/LibreNMS/Snmptrap/Handlers/VeeamWinFLRToOriginalStarted.php index e744300cae..c2faaaaa50 100644 --- a/LibreNMS/Snmptrap/Handlers/VeeamWinFLRToOriginalStarted.php +++ b/LibreNMS/Snmptrap/Handlers/VeeamWinFLRToOriginalStarted.php @@ -5,7 +5,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class VeeamWinFLRToOriginalStarted implements SnmptrapHandler { @@ -22,6 +21,6 @@ class VeeamWinFLRToOriginalStarted implements SnmptrapHandler $initiator_name = $trap->getOidData('VEEAM-MIB::initiatorName'); $vm_name = $trap->getOidData('VEEAM-MIB::vmName'); - Log::event('SNMP Trap: FLR job started - ' . $vm_name . ' - ' . $initiator_name, $device->device_id, 'backup', 2); + $trap->log('SNMP Trap: FLR job started - ' . $vm_name . ' - ' . $initiator_name, 2, 'backup'); } } diff --git a/LibreNMS/Snmptrap/Handlers/VmwVmHBDetected.php b/LibreNMS/Snmptrap/Handlers/VmwVmHBDetected.php index 20316e78b3..8c3e54e7f8 100644 --- a/LibreNMS/Snmptrap/Handlers/VmwVmHBDetected.php +++ b/LibreNMS/Snmptrap/Handlers/VmwVmHBDetected.php @@ -33,7 +33,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class VmwVmHBDetected implements SnmptrapHandler { @@ -48,6 +47,6 @@ class VmwVmHBDetected implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $vmGuestName = VmwTrapUtil::getGuestName($trap); - Log::event("Heartbeat from guest $vmGuestName detected", $device->device_id, 'trap', 1); + $trap->log("Heartbeat from guest $vmGuestName detected", 1); } } diff --git a/LibreNMS/Snmptrap/Handlers/VmwVmHBLost.php b/LibreNMS/Snmptrap/Handlers/VmwVmHBLost.php index 81a26735e6..0e681e857c 100644 --- a/LibreNMS/Snmptrap/Handlers/VmwVmHBLost.php +++ b/LibreNMS/Snmptrap/Handlers/VmwVmHBLost.php @@ -32,7 +32,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class VmwVmHBLost implements SnmptrapHandler { @@ -47,6 +46,6 @@ class VmwVmHBLost implements SnmptrapHandler public function handle(Device $device, Trap $trap) { $vmGuestName = VmwTrapUtil::getGuestName($trap); - Log::event("Heartbeat from guest $vmGuestName lost", $device->device_id, 'trap', 4); + $trap->log("Heartbeat from guest $vmGuestName lost", 4); } } diff --git a/LibreNMS/Snmptrap/Handlers/VmwVmPoweredOff.php b/LibreNMS/Snmptrap/Handlers/VmwVmPoweredOff.php index ec409ef6d0..cf4c8af908 100644 --- a/LibreNMS/Snmptrap/Handlers/VmwVmPoweredOff.php +++ b/LibreNMS/Snmptrap/Handlers/VmwVmPoweredOff.php @@ -31,7 +31,6 @@ use App\Models\Device; use LibreNMS\Enum\PowerState; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class VmwVmPoweredOff implements SnmptrapHandler { @@ -47,11 +46,11 @@ class VmwVmPoweredOff implements SnmptrapHandler { $vmGuestName = VmwTrapUtil::getGuestName($trap); + /** @var \App\Models\Vminfo $vminfo */ $vminfo = $device->vminfo()->where('vmwVmDisplayName', $vmGuestName)->first(); $vminfo->vmwVmState = PowerState::OFF; - - Log::event("Guest $vmGuestName was powered off", $device->device_id, 'trap', 2); - $vminfo->save(); + + $trap->log("Guest $vmGuestName was powered off"); } } diff --git a/LibreNMS/Snmptrap/Handlers/VmwVmPoweredOn.php b/LibreNMS/Snmptrap/Handlers/VmwVmPoweredOn.php index ffb2c39763..ed55cf0748 100644 --- a/LibreNMS/Snmptrap/Handlers/VmwVmPoweredOn.php +++ b/LibreNMS/Snmptrap/Handlers/VmwVmPoweredOn.php @@ -31,7 +31,6 @@ use App\Models\Device; use LibreNMS\Enum\PowerState; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class VmwVmPoweredOn implements SnmptrapHandler { @@ -50,7 +49,7 @@ class VmwVmPoweredOn implements SnmptrapHandler $vminfo = $device->vminfo()->where('vmwVmDisplayName', $vmGuestName)->first(); $vminfo->vmwVmState = PowerState::ON; - Log::event("Guest $vmGuestName was powered on", $device->device_id, 'trap', 2); + $trap->log("Guest $vmGuestName was powered on"); $vminfo->save(); } diff --git a/LibreNMS/Snmptrap/Handlers/VmwVmSuspended.php b/LibreNMS/Snmptrap/Handlers/VmwVmSuspended.php index 1eee51d3d1..dcf3093594 100644 --- a/LibreNMS/Snmptrap/Handlers/VmwVmSuspended.php +++ b/LibreNMS/Snmptrap/Handlers/VmwVmSuspended.php @@ -31,7 +31,6 @@ use App\Models\Device; use LibreNMS\Enum\PowerState; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class VmwVmSuspended implements SnmptrapHandler { @@ -50,7 +49,7 @@ class VmwVmSuspended implements SnmptrapHandler $vminfo = $device->vminfo()->where('vmwVmDisplayName', $vmGuestName)->first(); $vminfo->vmwVmState = PowerState::SUSPENDED; - Log::event("Guest $vmGuestName has been suspended", $device->device_id, 'trap', 2); + $trap->log("Guest $vmGuestName has been suspended"); $vminfo->save(); } diff --git a/LibreNMS/Snmptrap/Handlers/WarmBoot.php b/LibreNMS/Snmptrap/Handlers/WarmBoot.php index 401782514a..844b852a44 100644 --- a/LibreNMS/Snmptrap/Handlers/WarmBoot.php +++ b/LibreNMS/Snmptrap/Handlers/WarmBoot.php @@ -25,7 +25,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class WarmBoot implements SnmptrapHandler { @@ -39,6 +38,6 @@ class WarmBoot implements SnmptrapHandler */ public function handle(Device $device, Trap $trap) { - Log::event('SNMP Trap: Device ' . $device->displayName() . ' warm booted', $device->device_id, 'reboot', 4); + $trap->log('SNMP Trap: Device ' . $device->displayName() . ' warm booted', 4, 'reboot'); } } diff --git a/LibreNMS/Snmptrap/Trap.php b/LibreNMS/Snmptrap/Trap.php index bb57228d02..aafc8ed8df 100644 --- a/LibreNMS/Snmptrap/Trap.php +++ b/LibreNMS/Snmptrap/Trap.php @@ -28,43 +28,34 @@ namespace LibreNMS\Snmptrap; use App\Models\Device; use Illuminate\Support\Collection; use Illuminate\Support\Str; +use LibreNMS\Enum\Alert; use LibreNMS\Util\IP; class Trap { - protected $raw; - protected $hostname; - protected $ip; - - protected $device; - - /** @var Collection */ - protected $oid_data; + public readonly string $raw; + public readonly string $hostname; + public readonly ?string $ip; + protected Collection $oid_data; + protected ?Device $device = null; /** * Construct a trap from raw trap text - * - * @param string $trap */ - public function __construct($trap) + public function __construct(string $trap) { $this->raw = $trap; - $this->parse(); - } - protected function parse() - { - $lines = explode(PHP_EOL, trim($this->raw)); + $lines = explode(PHP_EOL, trim($trap)); $this->hostname = array_shift($lines); $line = array_shift($lines); - if ($line && preg_match('/\[([0-9.:a-fA-F]+)\]/', $line, $matches)) { - $this->ip = $matches[1]; - } + preg_match('/\[([0-9.:a-fA-F]+)]/', $line, $matches); + $this->ip = $matches[1] ?? ''; // parse the oid data - $this->oid_data = collect($lines)->mapWithKeys(function ($line) { + $this->oid_data = (new Collection($lines))->mapWithKeys(function ($line) { [$oid, $data] = explode(' ', $line, 2); return [$oid => trim($data, '"')]; @@ -77,11 +68,11 @@ class Trap * @param string|string[] $search * @return string */ - public function findOid($search) + public function findOid(array|string $search): string { return $this->oid_data->keys()->first(function ($oid) use ($search) { return Str::contains($oid, $search); - }); + }, ''); } /** @@ -90,22 +81,19 @@ class Trap * @param string|string[] $search * @return array */ - public function findOids($search) + public function findOids(array|string $search): array { return $this->oid_data->keys()->filter(function ($oid) use ($search) { return Str::contains($oid, $search); })->all(); } - public function getOidData($oid) + public function getOidData(string $oid): string { - return $this->oid_data->get($oid); + return $this->oid_data->get($oid, ''); } - /** - * @return Device|null - */ - public function getDevice() + public function getDevice(): ?Device { if (is_null($this->device) && IP::isValid($this->ip)) { $this->device = Device::findByHostname($this->hostname) ?: Device::findByIp($this->ip); @@ -114,45 +102,18 @@ class Trap return $this->device; } - /** - * @return string - */ - public function getHostname() - { - return $this->hostname; - } - - /** - * @return string - */ - public function getIp() - { - return $this->ip; - } - - /** - * @return string - */ - public function getTrapOid() + public function getTrapOid(): string { return $this->getOidData('SNMPv2-MIB::snmpTrapOID.0'); } - /** - * @return string - */ - public function getRaw() - { - return $this->raw; - } - /** * Render the Trap for debugging purpose * * @param bool $detailed * @return string */ - public function toString($detailed = false) + public function toString(bool $detailed = false): string { if ($detailed) { return $this->getTrapOid() . "\n" . json_encode($this->oid_data->reject(function ($value, $key) { @@ -160,6 +121,14 @@ class Trap })->all()); } - return '' . $this->getTrapOid(); + return $this->getTrapOid(); + } + + /** + * Log this trap in the eventlog with the given message + */ + public function log(string $message, int $severity = Alert::INFO, string $type = 'trap', int|null|string $reference = null): void + { + \Log::event($message, $this->getDevice(), $type, $severity, $reference); } } diff --git a/database/factories/DeviceFactory.php b/database/factories/DeviceFactory.php index e0e57e5430..44307f6b4d 100644 --- a/database/factories/DeviceFactory.php +++ b/database/factories/DeviceFactory.php @@ -45,6 +45,7 @@ class DeviceFactory extends Factory 'wireless', 'workstation', ]), + 'sysDescr' => $this->faker->text(64), 'status' => $status = random_int(0, 1), 'status_reason' => $status == 0 ? $this->faker->randomElement(['snmp', 'icmp']) : '', // allow invalid states? ]; diff --git a/doc/Developing/SNMP-Traps.md b/doc/Developing/SNMP-Traps.md index 31f01c90f7..086426fbc8 100644 --- a/doc/Developing/SNMP-Traps.md +++ b/doc/Developing/SNMP-Traps.md @@ -41,7 +41,6 @@ namespace LibreNMS\Snmptrap\Handlers; use App\Models\Device; use LibreNMS\Interfaces\SnmptrapHandler; use LibreNMS\Snmptrap\Trap; -use Log; class ColdBoot implements SnmptrapHandler { @@ -55,13 +54,13 @@ class ColdBoot implements SnmptrapHandler */ public function handle(Device $device, Trap $trap) { - Log::event('SNMP Trap: Device ' . $device->displayName() . ' cold booted', $device->device_id, 'reboot', 4); + $trap->log('SNMP Trap: Device ' . $device->displayName() . ' cold booted', $device->device_id, 'reboot', 4); } } ``` -where number on the end of the row `Log::event` means color of the eventlog: +where number on the end means color of the eventlog: ``` 1 green @@ -88,8 +87,7 @@ event log entries within the handle function. ```php $trap->getDevice(); // gets Device model for the device associated with this trap -$trap->getHostname(); // gets hostname sent with the trap -$trap->getIp(); // gets source IP of this trap +$trap->ip; // gets source IP of this trap $trap->getTrapOid(); // returns the string you registered your class with ``` @@ -112,5 +110,36 @@ $trap->findOids('ifDescr'); // returns all oid keys containing the string If the above isn't adequate, you can get the entire trap text: ```php -$trap->getRaw(); +$trap->raw; +``` + +### Tests + +Submitting new traps requires them to be fully tested. You can find many examples in the +`tests/Feature/SnmpTraps/` directory. + +Here is a basic example of a test that trap handler only creates a log message. +If your trap modifies the database, you should also test that it does so. + +```php +assertTrapLogsMessage(rawTrap: <<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:44298->[192.168.5.5]:162 +DISMAN-EVENT-MIB::sysUpTimeInstance 0:0:1:12.7 +SNMPv2-MIB::snmpTrapOID.0 SNMPv2-MIB::coldStart +TRAP, + log: 'SNMP Trap: Device {{ hostname }} cold booted', // The log message sent + failureMessage: 'Failed to handle SNMPv2-MIB::coldStart', // an informative message to let user know what failed + args: [4, 'reboot'], // the additional arguments to the log method + ); + } +} ``` diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index ed3dcd844a..db376a0c7b 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -4515,351 +4515,6 @@ parameters: count: 1 path: LibreNMS/RRD/RrdDefinition.php - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Dispatcher\\:\\:handle\\(\\) has no return type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Dispatcher.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAccThresholdCrossingAlert\\:\\:getThresholdMessage\\(\\) has no return type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAccThresholdCrossingAlert.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAccThresholdCrossingAlert\\:\\:getThresholdMessage\\(\\) has parameter \\$thresholdOid with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAccThresholdCrossingAlert.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAccThresholdCrossingAlert\\:\\:getThresholds\\(\\) has no return type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAccThresholdCrossingAlert.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleAccPortChg\\(\\) has no return type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleAccPortChg\\(\\) has parameter \\$device with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleAccPortChg\\(\\) has parameter \\$trap with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleAccPortShaperChg\\(\\) has no return type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleAccPortShaperChg\\(\\) has parameter \\$device with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleAccPortShaperChg\\(\\) has parameter \\$trap with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleAclChg\\(\\) has no return type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleAclChg\\(\\) has parameter \\$device with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleAclChg\\(\\) has parameter \\$trap with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleAuthSvrChg\\(\\) has no return type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleAuthSvrChg\\(\\) has parameter \\$device with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleAuthSvrChg\\(\\) has parameter \\$trap with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleDyingGaspChg\\(\\) has no return type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleDyingGaspChg\\(\\) has parameter \\$device with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleDyingGaspChg\\(\\) has parameter \\$trap with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleFlowChg\\(\\) has no return type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleFlowChg\\(\\) has parameter \\$device with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleFlowChg\\(\\) has parameter \\$trap with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleLagChg\\(\\) has no return type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleLagChg\\(\\) has parameter \\$device with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleLagChg\\(\\) has parameter \\$trap with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleNeChg\\(\\) has no return type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleNeChg\\(\\) has parameter \\$device with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleNeChg\\(\\) has parameter \\$trap with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleNetPortChg\\(\\) has no return type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleNetPortChg\\(\\) has parameter \\$device with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleNetPortChg\\(\\) has parameter \\$trap with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleNtpChg\\(\\) has no return type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleNtpChg\\(\\) has parameter \\$device with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleNtpChg\\(\\) has parameter \\$trap with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleQosFlowChg\\(\\) has no return type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleQosFlowChg\\(\\) has parameter \\$device with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleQosFlowChg\\(\\) has parameter \\$trap with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleQosShaperChg\\(\\) has no return type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleQosShaperChg\\(\\) has parameter \\$device with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleQosShaperChg\\(\\) has parameter \\$trap with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleSyslogChg\\(\\) has no return type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleSyslogChg\\(\\) has parameter \\$device with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleSyslogChg\\(\\) has parameter \\$trap with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleTimeSrcChg\\(\\) has no return type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleTimeSrcChg\\(\\) has parameter \\$device with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleTimeSrcChg\\(\\) has parameter \\$trap with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleTimeZoneChg\\(\\) has no return type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleTimeZoneChg\\(\\) has parameter \\$device with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaAttributeChange\\:\\:handleTimeZoneChg\\(\\) has parameter \\$trap with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaAttributeChange.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaNetThresholdCrossingAlert\\:\\:getThresholdMessage\\(\\) has no return type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaNetThresholdCrossingAlert.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaNetThresholdCrossingAlert\\:\\:getThresholdMessage\\(\\) has parameter \\$thresholdOid with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaNetThresholdCrossingAlert.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\AdvaNetThresholdCrossingAlert\\:\\:getThresholds\\(\\) has no return type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/AdvaNetThresholdCrossingAlert.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\EquipStatusTrap\\:\\:getSeverity\\(\\) has no return type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/EquipStatusTrap.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\EquipStatusTrap\\:\\:getSeverity\\(\\) has parameter \\$state with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/EquipStatusTrap.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\JnxDomAlarmId\\:\\:getAlarms\\(\\) has no return type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/JnxDomAlarmId.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\JnxDomAlarmId\\:\\:getAlarms\\(\\) has parameter \\$currentAlarm with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/JnxDomAlarmId.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\JnxDomLaneAlarmId\\:\\:getLaneAlarms\\(\\) has no return type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/JnxDomLaneAlarmId.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\JnxDomLaneAlarmId\\:\\:getLaneAlarms\\(\\) has parameter \\$currentAlarm with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/JnxDomLaneAlarmId.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\LogTrap\\:\\:getSeverity\\(\\) has no return type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/LogTrap.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\LogTrap\\:\\:getSeverity\\(\\) has parameter \\$state with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/LogTrap.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\RuckusSzSeverity\\:\\:getSeverity\\(\\) has no return type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/RuckusSzSeverity.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Handlers\\\\RuckusSzSeverity\\:\\:getSeverity\\(\\) has parameter \\$severity with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Handlers/RuckusSzSeverity.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Trap\\:\\:getOidData\\(\\) has no return type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Trap.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Trap\\:\\:getOidData\\(\\) has parameter \\$oid with no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Trap.php - - - - message: "#^Method LibreNMS\\\\Snmptrap\\\\Trap\\:\\:parse\\(\\) has no return type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Trap.php - - - - message: "#^Property LibreNMS\\\\Snmptrap\\\\Trap\\:\\:\\$device has no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Trap.php - - - - message: "#^Property LibreNMS\\\\Snmptrap\\\\Trap\\:\\:\\$hostname has no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Trap.php - - - - message: "#^Property LibreNMS\\\\Snmptrap\\\\Trap\\:\\:\\$ip has no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Trap.php - - - - message: "#^Property LibreNMS\\\\Snmptrap\\\\Trap\\:\\:\\$raw has no type specified\\.$#" - count: 1 - path: LibreNMS/Snmptrap/Trap.php - - message: "#^Method LibreNMS\\\\Util\\\\Categorizer\\:\\:__construct\\(\\) has parameter \\$items with no type specified\\.$#" count: 1 @@ -9590,691 +9245,6 @@ parameters: count: 1 path: tests/DocsTest.php - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaAccThresholdCrossingAlertTest\\:\\:testAccThresholdTrap\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaAccThresholdCrossingAlertTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaAttributeChangeTest\\:\\:testAccFlowModified\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaAttributeChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaAttributeChangeTest\\:\\:testAccPortModied\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaAttributeChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaAttributeChangeTest\\:\\:testAccShaper\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaAttributeChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaAttributeChangeTest\\:\\:testAclModified\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaAttributeChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaAttributeChangeTest\\:\\:testAuthServerModified\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaAttributeChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaAttributeChangeTest\\:\\:testBannerModified\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaAttributeChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaAttributeChangeTest\\:\\:testLagModified\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaAttributeChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaAttributeChangeTest\\:\\:testNeModified\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaAttributeChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaAttributeChangeTest\\:\\:testNetPortModified\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaAttributeChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaAttributeChangeTest\\:\\:testNtpModified\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaAttributeChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaAttributeChangeTest\\:\\:testQosFlowPolicerModfied\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaAttributeChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaAttributeChangeTest\\:\\:testQosShaperModified\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaAttributeChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaAttributeChangeTest\\:\\:testSnmpDyingGaspStateModified\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaAttributeChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaAttributeChangeTest\\:\\:testSyslogIP6AddrModified\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaAttributeChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaAttributeChangeTest\\:\\:testSyslogIPAddrModified\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaAttributeChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaAttributeChangeTest\\:\\:testSyslogIPVersionModified\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaAttributeChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaAttributeChangeTest\\:\\:testSyslogPortModified\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaAttributeChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaAttributeChangeTest\\:\\:testTimeSourceModified\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaAttributeChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaAttributeChangeTest\\:\\:testTimeZoneModified\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaAttributeChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaDyingGaspTrapTest\\:\\:testDyingGasp\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaDyingGaspTrapTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaNetThresholdCrossingAlertTest\\:\\:testNetThresholdTrap\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaNetThresholdCrossingAlertTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaNetworkElementAlmTrapTest\\:\\:testElementAlarmCleared\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaNetworkElementAlmTrapTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaNetworkElementAlmTrapTest\\:\\:testElementAlarmCritical\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaNetworkElementAlmTrapTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaNetworkElementAlmTrapTest\\:\\:testElementAlarmMajor\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaNetworkElementAlmTrapTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaNetworkElementAlmTrapTest\\:\\:testElementAlarmMinor\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaNetworkElementAlmTrapTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaObjectCreationTest\\:\\:testLagCreation\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaObjectCreationTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaObjectCreationTest\\:\\:testUserCreation\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaObjectCreationTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaObjectDeletionTest\\:\\:testFLowDeletion\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaObjectDeletionTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaObjectDeletionTest\\:\\:testLagDeletion\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaObjectDeletionTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaObjectDeletionTest\\:\\:testLagPortDeletion\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaObjectDeletionTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaObjectDeletionTest\\:\\:testUserDeletion\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaObjectDeletionTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaStateChangeTrapTest\\:\\:testAccessPortChg\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaStateChangeTrapTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaStateChangeTrapTest\\:\\:testFlowStateChg\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaStateChangeTrapTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaStateChangeTrapTest\\:\\:testNetworkPortChg\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaStateChangeTrapTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaSysAlmTrapTest\\:\\:testClearedAlarm\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaSysAlmTrapTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaSysAlmTrapTest\\:\\:testCriticalAlarm\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaSysAlmTrapTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaSysAlmTrapTest\\:\\:testMajorAlarm\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaSysAlmTrapTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\AdvaSysAlmTrapTest\\:\\:testMinorAlarm\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/AdvaSysAlmTrapTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\ApcPduOutletTest\\:\\:testOutletOff\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/ApcPduOutletTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\ApcPduOutletTest\\:\\:testOutletOn\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/ApcPduOutletTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\ApcPduOutletTest\\:\\:testOutletReboot\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/ApcPduOutletTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\BgpTrapTest\\:\\:testBgpDown\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/BgpTrapTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\BgpTrapTest\\:\\:testBgpUp\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/BgpTrapTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\CommonTrapTest\\:\\:testAuthorization\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/CommonTrapTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\CommonTrapTest\\:\\:testBridgeNewRoot\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/CommonTrapTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\CommonTrapTest\\:\\:testBridgeTopologyChanged\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/CommonTrapTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\CommonTrapTest\\:\\:testColdStart\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/CommonTrapTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\CommonTrapTest\\:\\:testEntityDatabaseChanged\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/CommonTrapTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\CommonTrapTest\\:\\:testFindByIp\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/CommonTrapTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\CommonTrapTest\\:\\:testGarbage\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/CommonTrapTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\CommonTrapTest\\:\\:testGenericTrap\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/CommonTrapTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\CommonTrapTest\\:\\:testWarmStart\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/CommonTrapTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\CyberPowerTrapsTest\\:\\:testCpLowBattery\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/CyberPowerTrapsTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\CyberPowerTrapsTest\\:\\:testCpPowerRestored\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/CyberPowerTrapsTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\CyberPowerTrapsTest\\:\\:testCpRtOverLoad\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/CyberPowerTrapsTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\CyberPowerTrapsTest\\:\\:testCpRtnChargerFailure\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/CyberPowerTrapsTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\CyberPowerTrapsTest\\:\\:testCpRtnDischarged\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/CyberPowerTrapsTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\CyberPowerTrapsTest\\:\\:testCpRtnLowBattery\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/CyberPowerTrapsTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\CyberPowerTrapsTest\\:\\:testCpRtnOverTemp\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/CyberPowerTrapsTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\CyberPowerTrapsTest\\:\\:testCpUpsBatteryNotPresent\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/CyberPowerTrapsTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\CyberPowerTrapsTest\\:\\:testCpUpsChargerFailure\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/CyberPowerTrapsTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\CyberPowerTrapsTest\\:\\:testCpUpsDiagFailed\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/CyberPowerTrapsTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\CyberPowerTrapsTest\\:\\:testCpUpsDiagPassed\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/CyberPowerTrapsTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\CyberPowerTrapsTest\\:\\:testCpUpsDischarged\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/CyberPowerTrapsTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\CyberPowerTrapsTest\\:\\:testCpUpsOnBattery\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/CyberPowerTrapsTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\CyberPowerTrapsTest\\:\\:testCpUpsOverTemp\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/CyberPowerTrapsTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\CyberPowerTrapsTest\\:\\:testCpUpsOverload\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/CyberPowerTrapsTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\CyberPowerTrapsTest\\:\\:testCpUpsRebootStarted\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/CyberPowerTrapsTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\CyberPowerTrapsTest\\:\\:testCpUpsSleeping\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/CyberPowerTrapsTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\CyberPowerTrapsTest\\:\\:testCpUpsTurnedOff\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/CyberPowerTrapsTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\CyberPowerTrapsTest\\:\\:testCpUpsWokeUp\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/CyberPowerTrapsTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\FgTrapAvOversizeTest\\:\\:testAvOversize\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/FgTrapAvOversizeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\FgTrapIpsTest\\:\\:testIpsAnomaly\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/FgTrapIpsTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\FgTrapIpsTest\\:\\:testIpsPkgUdate\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/FgTrapIpsTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\FgTrapIpsTest\\:\\:testIpsSignature\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/FgTrapIpsTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\FgTrapVpnTunTest\\:\\:testVpnTunDown\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/FgTrapVpnTunTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\FgTrapVpnTunTest\\:\\:testVpnTunUp\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/FgTrapVpnTunTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\FmTrapLogRateThresholdTest\\:\\:testAvOversize\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/FmTrapLogRateThresholdTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\JnxBgpM2Test\\:\\:testBgpBackwardTrasition\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/JnxBgpM2Test.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\JnxBgpM2Test\\:\\:testBgpEstablished\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/JnxBgpM2Test.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\JnxBgpM2Test\\:\\:testBgpPeerUnknown\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/JnxBgpM2Test.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\JnxCmCfgChangeTest\\:\\:testConfigChangeTrap\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/JnxCmCfgChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\JnxCmCfgChangeTest\\:\\:testConfigRollbackTrap\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/JnxCmCfgChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\JnxDomAlarmTest\\:\\:testJnxDomAlarmClearTrap\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/JnxDomAlarmTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\JnxDomAlarmTest\\:\\:testJnxDomAlarmSetTrap\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/JnxDomAlarmTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\JnxDomLaneAlarmTest\\:\\:testJnxDomLaneAlarmClearedTrap\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/JnxDomLaneAlarmTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\JnxDomLaneAlarmTest\\:\\:testJnxDomLaneAlarmSetTrap\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/JnxDomLaneAlarmTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\JnxLdpLspTest\\:\\:testLdpLspDownTrap\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/JnxLdpLspTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\JnxLdpLspTest\\:\\:testLdpLspUpTrap\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/JnxLdpLspTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\JnxLdpSesTest\\:\\:testJnxLdpSesDownTrap\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/JnxLdpSesTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\JnxLdpSesTest\\:\\:testJnxLdpSesUpTrap\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/JnxLdpSesTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\JnxPowerSupplyTest\\:\\:testJnxPowerSupplyFailureTrap\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/JnxPowerSupplyTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\JnxPowerSupplyTest\\:\\:testJnxPowerSupplyOkTrap\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/JnxPowerSupplyTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\JnxVpnIfTest\\:\\:testVpnIfDown\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/JnxVpnIfTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\JnxVpnIfTest\\:\\:testVpnIfUp\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/JnxVpnIfTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\JnxVpnPwTest\\:\\:testVpnPwDown\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/JnxVpnPwTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\JnxVpnPwTest\\:\\:testVpnPwUp\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/JnxVpnPwTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\MgmtTrapNmsAlarmTest\\:\\:genEkiAlarm\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/MgmtTrapNmsAlarmTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\MgmtTrapNmsAlarmTest\\:\\:testAlarmAddText\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/MgmtTrapNmsAlarmTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\MgmtTrapNmsAlarmTest\\:\\:testAlarmClear\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/MgmtTrapNmsAlarmTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\MgmtTrapNmsAlarmTest\\:\\:testAlarmPort\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/MgmtTrapNmsAlarmTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\MgmtTrapNmsEventTest\\:\\:genEkiEvent\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/MgmtTrapNmsEventTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\MgmtTrapNmsEventTest\\:\\:testEvent\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/MgmtTrapNmsEventTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\MgmtTrapNmsEventTest\\:\\:testEventAddText\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/MgmtTrapNmsEventTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\MgmtTrapNmsEventTest\\:\\:testEventPort\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/MgmtTrapNmsEventTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\NetgearFailedUserLoginTest\\:\\:testManagedSeries\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/NetgearFailedUserLoginTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\NetgearFailedUserLoginTest\\:\\:testSmartSeries\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/NetgearFailedUserLoginTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\OspfIfStateChangeTest\\:\\:testOspfIfBdr\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/OspfIfStateChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\OspfIfStateChangeTest\\:\\:testOspfIfDown\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/OspfIfStateChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\OspfIfStateChangeTest\\:\\:testOspfIfDr\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/OspfIfStateChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\OspfIfStateChangeTest\\:\\:testOspfIfLoop\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/OspfIfStateChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\OspfIfStateChangeTest\\:\\:testOspfIfOdr\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/OspfIfStateChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\OspfIfStateChangeTest\\:\\:testOspfIfPtp\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/OspfIfStateChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\OspfIfStateChangeTest\\:\\:testOspfIfWait\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/OspfIfStateChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\OspfNbrStateChangeTest\\:\\:testOspfNbrDown\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/OspfNbrStateChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\OspfNbrStateChangeTest\\:\\:testOspfNbrFull\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/OspfNbrStateChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\OspfNbrStateChangeTest\\:\\:testOspfNbrOther\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/OspfNbrStateChangeTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\PortsTrapTest\\:\\:testLinkDown\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/PortsTrapTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\PortsTrapTest\\:\\:testLinkUp\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/PortsTrapTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\RuckusEventTest\\:\\:testRuckusAssocTrap\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/RuckusEventTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\RuckusEventTest\\:\\:testRuckusDiassocTrap\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/RuckusEventTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\RuckusEventTest\\:\\:testRuckusSetErrorTrap\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/RuckusEventTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\RuckusSzClusterStateTest\\:\\:testClusterInMaintenance\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/RuckusSzClusterStateTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\RuckusSzClusterStateTest\\:\\:testClusterInService\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/RuckusSzClusterStateTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\RuckusSzEventTest\\:\\:testSzApConf\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/RuckusSzEventTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\RuckusSzEventTest\\:\\:testSzApConnect\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/RuckusSzEventTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\RuckusSzEventTest\\:\\:testSzApMiscEvent\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/RuckusSzEventTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\RuckusSzEventTest\\:\\:testSzApRebooted\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/RuckusSzEventTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\TrippliteTrapTest\\:\\:testTlpNotificationsAlarmEntryAdded\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/TrippliteTrapTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\TrippliteTrapTest\\:\\:testTlpNotificationsAlarmEntryRemoved\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/TrippliteTrapTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\UpsTrapsOnBatteryTest\\:\\:testOnBattery\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/UpsTrapsOnBatteryTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\VmwHBTest\\:\\:testVmwVmHBDetectedTrap\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/VmwHBTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\VmwHBTest\\:\\:testVmwVmHBLostTrap\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/VmwHBTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\VmwPowerStateTest\\:\\:testVmwVmPoweredONTrap\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/VmwPowerStateTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\VmwPowerStateTest\\:\\:testVmwVmPoweredOffTrap\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/VmwPowerStateTest.php - - - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\SnmpTraps\\\\VmwPowerStateTest\\:\\:testVmwVmSuspendedTrap\\(\\) has no return type specified\\.$#" - count: 1 - path: tests/Feature/SnmpTraps/VmwPowerStateTest.php - - message: "#^Method LibreNMS\\\\Tests\\\\Feature\\\\TestScheduledMaintenance\\:\\:assertScheduleActive\\(\\) has no return type specified\\.$#" count: 1 diff --git a/tests/DBTestCase.php b/tests/DBTestCase.php index de6d02b525..bd0c0df6fb 100644 --- a/tests/DBTestCase.php +++ b/tests/DBTestCase.php @@ -25,14 +25,9 @@ namespace LibreNMS\Tests; +use LibreNMS\Tests\Traits\RequiresDatabase; + abstract class DBTestCase extends TestCase { - public static function setUpBeforeClass(): void - { - if (! getenv('DBTEST')) { - static::markTestSkipped('Database tests not enabled. Set DBTEST=1 to enable.'); - } - - parent::setUpBeforeClass(); - } + use RequiresDatabase; } diff --git a/tests/Feature/SnmpTraps/AdvaAccThresholdCrossingAlertTest.php b/tests/Feature/SnmpTraps/AdvaAccThresholdCrossingAlertTest.php index f19c64da4f..d6880a7cb1 100644 --- a/tests/Feature/SnmpTraps/AdvaAccThresholdCrossingAlertTest.php +++ b/tests/Feature/SnmpTraps/AdvaAccThresholdCrossingAlertTest.php @@ -25,17 +25,13 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class AdvaAccThresholdCrossingAlertTest extends SnmpTrapTestCase { - public function testAccThresholdTrap() + public function testAccThresholdTrap(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-PERFORMANCE-MIB::cmEthernetAccPortThresholdCrossingAlert CM-PERFORMANCE-MIB::cmEthernetAccPortThresholdIndex.1.1.1.2.1.37 37 @@ -45,19 +41,17 @@ CM-PERFORMANCE-MIB::cmEthernetAccPortThresholdValueLo.1.1.1.2.1.37 10 CM-PERFORMANCE-MIB::cmEthernetAccPortThresholdValueHi.1.1.1.2.1.37 0 CM-PERFORMANCE-MIB::cmEthernetAccPortThresholdMonValue.1.1.1.2.1.37 10 IF-MIB::ifName.2 Access PORT-1-1-1-2 -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 0B 2D 0A 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 0B 2D 0A 00 2D 06 00 " ADVA-MIB::neEventLogIndex.79 79 -ADVA-MIB::neEventLogTimeStamp.79 2018-12-10,11:45:10.8,-6:0"; +ADVA-MIB::neEventLogTimeStamp.79 2018-12-10,11:45:10.8,-6:0 +TRAP, + 'Access PORT-1-1-1-2 unavailable seconds threshold exceeded for interval-15min', + 'Could not handle cmEthernetAccPortThresholdCrossingAlert UAS', + ); - $trap = new Trap($trapText); - - $message = 'Access PORT-1-1-1-2 unavailable seconds threshold exceeded for interval-15min'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmEthernetAccPortThresholdCrossingAlert UAS'); - - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-PERFORMANCE-MIB::cmEthernetAccPortThresholdCrossingAlert CM-PERFORMANCE-MIB::cmEthernetAccPortThresholdIndex.1.1.1.2.1.37 37 @@ -67,19 +61,16 @@ CM-PERFORMANCE-MIB::cmEthernetAccPortThresholdValueLo.1.1.1.2.1.37 20 CM-PERFORMANCE-MIB::cmEthernetAccPortThresholdValueHi.1.1.1.2.1.37 0 CM-PERFORMANCE-MIB::cmEthernetAccPortThresholdMonValue.1.1.1.2.1.37 20 IF-MIB::ifName.2 Access PORT-1-1-1-2 -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 0B 2D 0A 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 0B 2D 0A 00 2D 06 00 " ADVA-MIB::neEventLogIndex.79 79 -ADVA-MIB::neEventLogTimeStamp.79 2018-12-10,11:45:10.8,-6:0"; +ADVA-MIB::neEventLogTimeStamp.79 2018-12-10,11:45:10.8,-6:0 +TRAP, + 'Access PORT-1-1-1-2 broadcast frames received threshold exceeded for interval-1day', + 'Could not handle cmEthernetAccPortThresholdCrossingAlert broadcast frame sent', + ); - $trap = new Trap($trapText); - - $message = 'Access PORT-1-1-1-2 broadcast frames received threshold exceeded for interval-1day'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmEthernetAccPortThresholdCrossingAlert broadcast framesent'); - - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage('{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-PERFORMANCE-MIB::cmEthernetAccPortThresholdCrossingAlert CM-PERFORMANCE-MIB::cmEthernetAccPortThresholdIndex.1.1.1.3.1.37 37 @@ -89,34 +80,28 @@ CM-PERFORMANCE-MIB::cmEthernetAccPortThresholdValueLo.1.1.1.3.1.37 20 CM-PERFORMANCE-MIB::cmEthernetAccPortThresholdValueHi.1.1.1.3.1.37 0 CM-PERFORMANCE-MIB::cmEthernetAccPortThresholdMonValue.1.1.1.3.1.37 20 IF-MIB::ifName.2 Access PORT-1-1-1-3 -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 0B 2D 0A 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 0B 2D 0A 00 2D 06 00 " ADVA-MIB::neEventLogIndex.79 79 -ADVA-MIB::neEventLogTimeStamp.79 2018-12-10,11:45:10.8,-6:0"; +ADVA-MIB::neEventLogTimeStamp.79 2018-12-10,11:45:10.8,-6:0', + 'Access PORT-1-1-1-3 unicast frames received threshold exceeded for interval-1day', + 'Could not handle cmEthernetAccPortThresholdCrossingAlert unicast frames sent', + ); - $trap = new Trap($trapText); - - $message = 'Access PORT-1-1-1-3 unicast frames received threshold exceeded for interval-1day'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmEthernetAccPortThresholdCrossingAlert unicast frames sent'); - - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-PERFORMANCE-MIB::cmEthernetAccPortThresholdCrossingAlert CM-PERFORMANCE-MIB::cmEthernetAccPortThresholdIndex.1.1.1.3.1.37 37 CM-PERFORMANCE-MIB::cmEthernetAccPortThresholdInterval.1.1.1.3.1.37 interval-1day CM-PERFORMANCE-MIB::cmEthernetAccPortThresholdVariable.1.1.1.3.1.37 CM-PERFORMANCE-MIB::defaultThresholdTest.1.1.1.3.1 IF-MIB::ifName.2 Access PORT-1-1-1-3 -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 0B 2D 0A 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 0B 2D 0A 00 2D 06 00 " ADVA-MIB::neEventLogIndex.79 79 -ADVA-MIB::neEventLogTimeStamp.79 2018-12-10,11:45:10.8,-6:0"; - - $trap = new Trap($trapText); - - $message = 'Access PORT-1-1-1-3 unknown threshold exceeded for interval-1day'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmEthernetAccPortThresholdCrossingAlert unknown threshold'); +ADVA-MIB::neEventLogTimeStamp.79 2018-12-10,11:45:10.8,-6:0 +TRAP, + 'Access PORT-1-1-1-3 unknown threshold exceeded for interval-1day', + 'Could not handle cmEthernetAccPortThresholdCrossingAlert unknown threshold', + ); } } diff --git a/tests/Feature/SnmpTraps/AdvaAttributeChangeTest.php b/tests/Feature/SnmpTraps/AdvaAttributeChangeTest.php index c635773784..45c55189ba 100644 --- a/tests/Feature/SnmpTraps/AdvaAttributeChangeTest.php +++ b/tests/Feature/SnmpTraps/AdvaAttributeChangeTest.php @@ -25,265 +25,226 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class AdvaAttributeChangeTest extends SnmpTrapTestCase { - public function testSyslogIPVersionModified() + public function testSyslogIPVersionModified(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmAttributeValueChangeTrap CM-SYSTEM-MIB::sysLogIpVersion.1 ipv6 -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 09 0B 28 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 09 0B 28 00 2D 06 00 " ADVA-MIB::neEventLogIndex.150 150 -ADVA-MIB::neEventLogTimeStamp.150 2018-12-10,9:11:40.5,-6:0"; - - $trap = new Trap($trapText); - - $message = 'Syslog server 1 IP version set to ipv6'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmAttributeValueChangeTrap IP version modified'); +ADVA-MIB::neEventLogTimeStamp.150 2018-12-10,9:11:40.5,-6:0 +TRAP, + 'Syslog server 1 IP version set to ipv6', + 'Could not handle cmAttributeValueChangeTrap IP version modified', + ); } - public function testSyslogIP6AddrModified() + public function testSyslogIP6AddrModified(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmAttributeValueChangeTrap CM-SYSTEM-MIB::sysLogIpv6Addr.1 2001:49d0:3c0c:0:0:0:0:1 -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 09 0B 28 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 09 0B 28 00 2D 06 00 " ADVA-MIB::neEventLogIndex.150 150 -ADVA-MIB::neEventLogTimeStamp.150 2018-12-10,9:11:40.5,-6:0"; - - $trap = new Trap($trapText); - - $message = 'Syslog server 1 IP address changed to 2001:49d0:3c0c:0:0:0:0:1'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmAttributeValueChangeTrap IPv6 address modified'); +ADVA-MIB::neEventLogTimeStamp.150 2018-12-10,9:11:40.5,-6:0 +TRAP, + 'Syslog server 1 IP address changed to 2001:49d0:3c0c:0:0:0:0:1', + 'Could not handle cmAttributeValueChangeTrap IPv6 address modified' + ); } - public function testSyslogIPAddrModified() + public function testSyslogIPAddrModified(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmAttributeValueChangeTrap CM-SYSTEM-MIB::sysLogIpAddress.1 192.168.1.1 -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 09 0B 28 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 09 0B 28 00 2D 06 00 " ADVA-MIB::neEventLogIndex.150 150 -ADVA-MIB::neEventLogTimeStamp.150 2018-12-10,9:11:40.5,-6:0"; - - $trap = new Trap($trapText); - - $message = 'Syslog server 1 IP address changed to 192.168.1.1'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmAttributeValueChangeTrap IPv4 address modified'); +ADVA-MIB::neEventLogTimeStamp.150 2018-12-10,9:11:40.5,-6:0 +TRAP, + 'Syslog server 1 IP address changed to 192.168.1.1', + 'Could not handle cmAttributeValueChangeTrap IPv4 address modified' + ); } - public function testSyslogPortModified() + public function testSyslogPortModified(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmAttributeValueChangeTrap CM-SYSTEM-MIB::sysLogPort.1 514 -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 09 0B 28 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 09 0B 28 00 2D 06 00 " ADVA-MIB::neEventLogIndex.150 150 -ADVA-MIB::neEventLogTimeStamp.150 2018-12-10,9:11:40.5,-6:0"; - - $trap = new Trap($trapText); - - $message = 'Syslog server 1 port changed to 514'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmAttributeValueChangeTrap port modified'); +ADVA-MIB::neEventLogTimeStamp.150 2018-12-10,9:11:40.5,-6:0 +TRAP, + 'Syslog server 1 port changed to 514', + 'Could not handle cmAttributeValueChangeTrap port modified' + ); } - public function testAclModified() + public function testAclModified(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmAttributeValueChangeTrap CM-SYSTEM-MIB::aclEntryEnabled.5 false -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 09 11 16 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 09 11 16 00 2D 06 00 " ADVA-MIB::neEventLogIndex.155 155 -ADVA-MIB::neEventLogTimeStamp.155 2018-12-10,9:17:22.5,-6:0"; - - $trap = new Trap($trapText); - - $message = 'ACL 5 modified'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmAttributeValueChangeTrap ACL entry modified'); +ADVA-MIB::neEventLogTimeStamp.155 2018-12-10,9:17:22.5,-6:0 +TRAP, + 'ACL 5 modified', + 'Could not handle cmAttributeValueChangeTrap ACL entry modified' + ); } - public function testBannerModified() + public function testBannerModified(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmAttributeValueChangeTrap CM-SYSTEM-MIB::securityBanner.0 Test MoTD -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 09 12 2B 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 09 12 2B 00 2D 06 00 " ADVA-MIB::neEventLogIndex.157 157 -ADVA-MIB::neEventLogTimeStamp.157 2018-12-10,9:18:43.6,-6:0"; - - $trap = new Trap($trapText); - - $message = 'MOTD/Banner modified'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmAttributeValueChangeTrap banner modified'); +ADVA-MIB::neEventLogTimeStamp.157 2018-12-10,9:18:43.6,-6:0 +TRAP, + 'MOTD/Banner modified', + 'Could not handle cmAttributeValueChangeTrap banner modified' + ); } - public function testTimeSourceModified() + public function testTimeSourceModified(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmAttributeValueChangeTrap CM-SYSTEM-MIB::sysTimeOfDayType.0 ntp F3-PTP-MIB::f3PtpSysTimeOfDayClock.0 SNMPv2-SMI::zeroDotZero -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 09 1C 39 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 09 1C 39 00 2D 06 00 " ADVA-MIB::neEventLogIndex.169 169 -ADVA-MIB::neEventLogTimeStamp.169 2018-12-10,9:28:57.1,-6:0"; +ADVA-MIB::neEventLogTimeStamp.169 2018-12-10,9:28:57.1,-6:0 +TRAP, + 'Time source set to ntp', + 'Could not handle cmAttributeValueChangeTrap time source modified' + ); - $trap = new Trap($trapText); - - $message = 'Time source set to ntp'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmAttributeValueChangeTrap time source modified'); - - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmAttributeValueChangeTrap CM-SYSTEM-MIB::sysTimeOfDayType.0 local F3-PTP-MIB::f3PtpSysTimeOfDayClock.0 SNMPv2-SMI::zeroDotZero -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 09 1C 39 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 09 1C 39 00 2D 06 00 " ADVA-MIB::neEventLogIndex.169 169 -ADVA-MIB::neEventLogTimeStamp.169 2018-12-10,9:28:57.1,-6:0"; - - $trap = new Trap($trapText); - - $message = 'Time source set to local'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmAttributeValueChangeTrap time source modified'); +ADVA-MIB::neEventLogTimeStamp.169 2018-12-10,9:28:57.1,-6:0 +TRAP, + 'Time source set to local', + 'Could not handle cmAttributeValueChangeTrap time source modified' + ); } - public function testTimeZoneModified() + public function testTimeZoneModified(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmAttributeValueChangeTrap F3-TIMEZONE-MIB::f3TimeZoneDstControlEnabled.0 true -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 09 14 21 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 09 14 21 00 2D 06 00 " ADVA-MIB::neEventLogIndex.158 158 -ADVA-MIB::neEventLogTimeStamp.158 2018-12-10,9:20:33.5,-6:0"; +ADVA-MIB::neEventLogTimeStamp.158 2018-12-10,9:20:33.5,-6:0 +TRAP, + 'Daylight Savings Time enabled', + 'Could not handle cmAttributeValueChangeTrap DST enabled' + ); - $trap = new Trap($trapText); - - $message = 'Daylight Savings Time enabled'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmAttributeValueChangeTrap DST enabled'); - - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmAttributeValueChangeTrap F3-TIMEZONE-MIB::f3TimeZoneDstControlEnabled.0 false -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 09 14 21 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 09 14 21 00 2D 06 00 " ADVA-MIB::neEventLogIndex.158 158 -ADVA-MIB::neEventLogTimeStamp.158 2018-12-10,9:20:33.5,-6:0"; +ADVA-MIB::neEventLogTimeStamp.158 2018-12-10,9:20:33.5,-6:0 +TRAP, + 'Daylight Savings Time disabled', + 'Could not handle cmAttributeValueChangeTrap DST disabled' + ); - $trap = new Trap($trapText); - - $message = 'Daylight Savings Time disabled'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmAttributeValueChangeTrap DST disabled'); - - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmAttributeValueChangeTrap F3-TIMEZONE-MIB::f3TimeZoneUtcOffset.0 -05:00 -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 0A 15 1E 00 2D 05 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 0A 15 1E 00 2D 05 00 " ADVA-MIB::neEventLogIndex.160 160 -ADVA-MIB::neEventLogTimeStamp.160 2018-12-10,10:21:30.3,-5:0"; - - $trap = new Trap($trapText); - - $message = 'UTC offset (timezone) change to -05:00'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmAttributeValueChangeTrap UTC offset modified'); +ADVA-MIB::neEventLogTimeStamp.160 2018-12-10,10:21:30.3,-5:0 +TRAP, + 'UTC offset (timezone) change to -05:00', + 'Could not handle cmAttributeValueChangeTrap UTC offset modified' + ); } - public function testNtpModified() + public function testNtpModified(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmAttributeValueChangeTrap CM-SYSTEM-MIB::ntpPrimaryServer.0 192.168.2.2 CM-SYSTEM-MIB::ntpPrimaryServerIpVersion.0 ipv4 -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 09 1E 11 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 09 1E 11 00 2D 06 00 " ADVA-MIB::neEventLogIndex.170 170 -ADVA-MIB::neEventLogTimeStamp.170 2018-12-10,9:30:17.0,-6:0"; +ADVA-MIB::neEventLogTimeStamp.170 2018-12-10,9:30:17.0,-6:0 +TRAP, + 'Primary NTP server IP changed to 192.168.2.2', + 'Could not handle cmAttributeValueChangeTrap NTP primary server modified' + ); - $trap = new Trap($trapText); - - $message = 'Primary NTP server IP changed to 192.168.2.2'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmAttributeValueChangeTrap NTP primary server modified'); - - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmAttributeValueChangeTrap CM-SYSTEM-MIB::ntpBackupServer.0 192.168.2.1 CM-SYSTEM-MIB::ntpBackupServerIpVersion.0 ipv4 -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 09 1E 11 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 09 1E 11 00 2D 06 00 " ADVA-MIB::neEventLogIndex.170 170 -ADVA-MIB::neEventLogTimeStamp.170 2018-12-10,9:30:17.0,-6:0"; - - $trap = new Trap($trapText); - - $message = 'Backup NTP server IP changed to 192.168.2.1'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmAttributeValueChangeTrap NTP backup server modified'); +ADVA-MIB::neEventLogTimeStamp.170 2018-12-10,9:30:17.0,-6:0 +TRAP, + 'Backup NTP server IP changed to 192.168.2.1', + 'Could not handle cmAttributeValueChangeTrap NTP backup server modified' + ); } - public function testAuthServerModified() + public function testAuthServerModified(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmAttributeValueChangeTrap CM-SECURITY-MIB::cmRemoteAuthServerAccountingPort.3 1810 @@ -291,105 +252,87 @@ CM-SECURITY-MIB::cmRemoteAuthServerPort.3 1811 CM-SECURITY-MIB::cmRemoteAuthServerIpAddress.3 192.168.1.1 CM-SECURITY-MIB::cmRemoteAuthServerSecret.3 ***** CM-SECURITY-MIB::cmRemoteAuthServerEnabled.3 true -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 09 20 12 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 09 20 12 00 2D 06 00 " ADVA-MIB::neEventLogIndex.173 173 -ADVA-MIB::neEventLogTimeStamp.173 2018-12-10,9:32:18.1,-6:0"; +ADVA-MIB::neEventLogTimeStamp.173 2018-12-10,9:32:18.1,-6:0 +TRAP, + [ + 'Authentication server 3 IP changed to 192.168.1.1', + 'Authentication server 3 secret changed', + 'Authentication server 3 enabled', + ], + 'Could not handle cmAttributeValueChangeTrap authentication server modified' + ); - $trap = new Trap($trapText); - - $message = 'Authentication server 3 IP changed to 192.168.1.1'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $message = 'Authentication server 3 secret changed'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $message = 'Authentication server 3 enabled'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmAttributeValueChangeTrap authentication server modified'); - - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmAttributeValueChangeTrap CM-SECURITY-MIB::cmRemoteAuthServerEnabled.3 false -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 09 20 12 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 09 20 12 00 2D 06 00 " ADVA-MIB::neEventLogIndex.173 173 -ADVA-MIB::neEventLogTimeStamp.173 2018-12-10,9:32:18.1,-6:0"; - - $trap = new Trap($trapText); - - $message = 'Authentication server 3 disabled'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmAttributeValueChangeTrap authentication server disabled'); +ADVA-MIB::neEventLogTimeStamp.173 2018-12-10,9:32:18.1,-6:0 +TRAP, + 'Authentication server 3 disabled', + 'Could not handle cmAttributeValueChangeTrap authentication server disabled'); } - public function testNeModified() + public function testNeModified(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmAttributeValueChangeTrap CM-ENTITY-MIB::neName.1 adva-test-1 CM-ENTITY-MIB::neCmdPromptPrefix.1 adva-test-1-prompt -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 09 22 17 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 09 22 17 00 2D 06 00 " ADVA-MIB::neEventLogIndex.175 175 -ADVA-MIB::neEventLogTimeStamp.175 2018-12-10,9:34:23.0,-6:0"; - - $trap = new Trap($trapText); - - $message = 'Network Element name changed to adva-test-1'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $message = 'Network Element prompt changed to adva-test-1-prompt'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmAttributeValueChangeTrap network element modified'); +ADVA-MIB::neEventLogTimeStamp.175 2018-12-10,9:34:23.0,-6:0 +TRAP, + [ + 'Network Element name changed to adva-test-1', + 'Network Element prompt changed to adva-test-1-prompt', + ], + 'Could not handle cmAttributeValueChangeTrap network element modified' + ); } - public function testSnmpDyingGaspStateModified() + public function testSnmpDyingGaspStateModified(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmAttributeValueChangeTrap CM-ENTITY-MIB::ethernetNTEGE114ProCardSnmpDyingGaspEnabled.1.1.1 true -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 09 24 0E 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 09 24 0E 00 2D 06 00 " ADVA-MIB::neEventLogIndex.177 177 -ADVA-MIB::neEventLogTimeStamp.177 2018-12-10,9:36:14.5,-6:0"; +ADVA-MIB::neEventLogTimeStamp.177 2018-12-10,9:36:14.5,-6:0 +TRAP, + 'SNMP Dying Gasp is enabled', + 'Could not handle cmAttributeValueChangeTrap SNMP dying gasp enabled'); - $trap = new Trap($trapText); - - $message = 'SNMP Dying Gasp is enabled'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmAttributeValueChangeTrap SNMP dying gasp enabled'); - - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmAttributeValueChangeTrap CM-ENTITY-MIB::ethernetNTEGE114ProCardSnmpDyingGaspEnabled.1.1.1 false -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 09 24 0E 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 09 24 0E 00 2D 06 00 " ADVA-MIB::neEventLogIndex.177 177 -ADVA-MIB::neEventLogTimeStamp.177 2018-12-10,9:36:14.5,-6:0"; - - $trap = new Trap($trapText); - - $message = 'SNMP Dying Gasp is disabled'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmAttributeValueChangeTrap SNMP dying gasp disabled'); +ADVA-MIB::neEventLogTimeStamp.177 2018-12-10,9:36:14.5,-6:0 +TRAP, + 'SNMP Dying Gasp is disabled', + 'Could not handle cmAttributeValueChangeTrap SNMP dying gasp disabled'); } - public function testNetPortModified() + public function testNetPortModified(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmAttributeValueChangeTrap CM-FACILITY-MIB::cmEthernetNetPortConfigSpeed.1.1.1.2 speed-auto-100MB-full @@ -399,54 +342,39 @@ CM-FACILITY-MIB::cmEthernetNetPortAutoDiagEnabled.1.1.1.2 false CM-FACILITY-MIB::cmEthernetNetPortAdminState.1.1.1.2 in-service CM-FACILITY-MIB::cmEthernetNetPortMTU.1.1.1.2 9000 CM-FACILITY-MIB::cmEthernetNetPortConfigSpeed.1.1.1.2 speed-auto-100MB-full -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 09 29 31 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 09 29 31 00 2D 06 00 " ADVA-MIB::neEventLogIndex.188 188 -ADVA-MIB::neEventLogTimeStamp.188 2018-12-10,9:41:49.0,-6:0"; +ADVA-MIB::neEventLogTimeStamp.188 2018-12-10,9:41:49.0,-6:0 +TRAP, + [ + 'Network Port 1-1-1-2 changed speed to speed-auto-100MB-full', + 'Network Port 1-1-1-2 changed media to copper', + 'Network Port 1-1-1-2 changed MDIX to crossed', + 'Network Port 1-1-1-2 AutoDiagnostic disabled', + 'Network Port 1-1-1-2 administrative state changed to in-service', + 'Network Port 1-1-1-2 MTU changed to 9000 bytes', + ], + 'Could not handle cmAttributeValueChangeTrap network port modified specific messages'); - $trap = new Trap($trapText); - - $message = 'Network Port 1-1-1-2 changed speed to speed-auto-100MB-full'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $message = 'Network Port 1-1-1-2 changed media to copper'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $message = 'Network Port 1-1-1-2 changed MDIX to crossed'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $message = 'Network Port 1-1-1-2 AutoDiagnostic disabled'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $message = 'Network Port 1-1-1-2 administrative state changed to in-service'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $message = 'Network Port 1-1-1-2 MTU changed to 9000 bytes'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmAttributeValueChangeTrap network port modified specific messages'); - - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmAttributeValueChangeTrap CM-FACILITY-MIB::cmEthernetNetPortFakeOID.1.1.1.2 TestGenericMessage -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 09 29 31 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 09 29 31 00 2D 06 00 " ADVA-MIB::neEventLogIndex.188 188 -ADVA-MIB::neEventLogTimeStamp.188 2018-12-10,9:41:49.0,-6:0"; - - $trap = new Trap($trapText); - - $message = 'Network Port 1-1-1-2 modified'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmAttributeValueChangeTrap network port modified generic message'); +ADVA-MIB::neEventLogTimeStamp.188 2018-12-10,9:41:49.0,-6:0 +TRAP, + 'Network Port 1-1-1-2 modified', + 'Could not handle cmAttributeValueChangeTrap network port modified generic message'); } - public function testAccPortModied() + public function testAccPortModied(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmAttributeValueChangeTrap CM-FACILITY-MIB::cmEthernetAccPortMediaType.1.1.1.4 fiber @@ -456,155 +384,120 @@ CM-FACILITY-MIB::cmEthernetAccPortMDIXType.1.1.1.4 not-applicable CM-FACILITY-MIB::cmEthernetAccPortMTU.1.1.1.4 9000 CM-FACILITY-MIB::cmEthernetAccPortAdminState.1.1.1.4 maintenance CM-FACILITY-MIB::cmAccPortExtRefPrioMapProfile.1.1.1.4 SNMPv2-SMI::zeroDotZero -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 09 2B 16 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 09 2B 16 00 2D 06 00 " ADVA-MIB::neEventLogIndex.214 214 -ADVA-MIB::neEventLogTimeStamp.214 2018-12-10,9:43:22.3,-6:0"; +ADVA-MIB::neEventLogTimeStamp.214 2018-12-10,9:43:22.3,-6:0 +TRAP, + [ + 'Access Port 1-1-1-4 changed speed to speed-auto-1000MB-full', + 'Access Port 1-1-1-4 changed media to fiber', + 'Access Port 1-1-1-4 changed MDIX to not-applicable', + 'Access Port 1-1-1-4 AutoDiagnostic disabled', + 'Access Port 1-1-1-4 administrative state changed to maintenance', + 'Access Port 1-1-1-4 MTU changed to 9000 bytes', + ], + 'Could not handle cmAttributeValueChangeTrap access port modified specific messages'); - $trap = new Trap($trapText); - - $message = 'Access Port 1-1-1-4 changed speed to speed-auto-1000MB-full'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $message = 'Access Port 1-1-1-4 changed media to fiber'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $message = 'Access Port 1-1-1-4 changed MDIX to not-applicable'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $message = 'Access Port 1-1-1-4 AutoDiagnostic disabled'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $message = 'Access Port 1-1-1-4 administrative state changed to maintenance'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $message = 'Access Port 1-1-1-4 MTU changed to 9000 bytes'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmAttributeValueChangeTrap access port modified specific messages'); - - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmAttributeValueChangeTrap CM-FACILITY-MIB::cmEthernetAccPortA2NPushPVIDEnabled.1.1.1.4 false CM-FACILITY-MIB::cmAccPortExtRefPrioMapProfile.1.1.1.4 SNMPv2-SMI::zeroDotZero -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 09 2B 16 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 09 2B 16 00 2D 06 00 " ADVA-MIB::neEventLogIndex.214 214 -ADVA-MIB::neEventLogTimeStamp.214 2018-12-10,9:43:22.3,-6:0"; - - $trap = new Trap($trapText); - - $message = 'Access Port 1-1-1-4 modified'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmAttributeValueChangeTrap access port modified gerneric messages'); +ADVA-MIB::neEventLogTimeStamp.214 2018-12-10,9:43:22.3,-6:0 +TRAP, + 'Access Port 1-1-1-4 modified', + 'Could not handle cmAttributeValueChangeTrap access port modified gerneric messages'); } - public function testAccFlowModified() + public function testAccFlowModified(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmAttributeValueChangeTrap CM-FACILITY-MIB::cmFlowN2AEIR.1.1.1.4.1 0 CM-FACILITY-MIB::cmFlowN2ACIR.1.1.1.4.1 0 CM-FACILITY-MIB::cmFlowN2ACIRHi.1.1.1.4.1 0 CM-FACILITY-MIB::cmFlowN2AEIRHi.1.1.1.4.1 0 -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 09 07 1C 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 09 07 1C 00 2D 06 00 " ADVA-MIB::neEventLogIndex.147 147 -ADVA-MIB::neEventLogTimeStamp.147 2018-12-10,9:7:28.1,-6:0"; - - $trap = new Trap($trapText); - - $message = 'Access Flow 1-1-1-4-1 modified'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmAttributeValueChangeTrap access flow modified'); +ADVA-MIB::neEventLogTimeStamp.147 2018-12-10,9:7:28.1,-6:0 +TRAP, + 'Access Flow 1-1-1-4-1 modified', + 'Could not handle cmAttributeValueChangeTrap access flow modified'); } - public function testLagModified() + public function testLagModified(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmAttributeValueChangeTrap F3-LAG-MIB::f3LagName.1.1 LagTest -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 08 3A 2B 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 08 3A 2B 00 2D 06 00 " ADVA-MIB::neEventLogIndex.113 113 -ADVA-MIB::neEventLogTimeStamp.113 2018-12-10,8:58:43.7,-6:0"; - - $trap = new Trap($trapText); - - $message = 'LAG 1 modified'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmAttributeValueChangeTrap LAG modified'); +ADVA-MIB::neEventLogTimeStamp.113 2018-12-10,8:58:43.7,-6:0 +TRAP, + 'LAG 1 modified', + 'Could not handle cmAttributeValueChangeTrap LAG modified'); } - public function testQosFlowPolicerModfied() + public function testQosFlowPolicerModfied(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmAttributeValueChangeTrap CM-FACILITY-MIB::cmQosFlowPolicerCIRLo.1.1.1.3.1.1.1 9856000 CM-FACILITY-MIB::cmQosFlowPolicerCIRHi.1.1.1.3.1.1.1 0 CM-FACILITY-MIB::cmQosFlowPolicerEntry.21.1.1.1.3.1.1.1 9856000 CM-FACILITY-MIB::cmQosFlowPolicerEntry.20.1.1.1.3.1.1.1 0 -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 09 2F 33 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 09 2F 33 00 2D 06 00 " ADVA-MIB::neEventLogIndex.217 217 -ADVA-MIB::neEventLogTimeStamp.217 2018-12-10,9:47:51.0,-6:0"; - - $trap = new Trap($trapText); - - $message = 'QoS on flow 1-1-1-3-1 modified'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmAttributeValueChangeTrap QoS flow policer'); +ADVA-MIB::neEventLogTimeStamp.217 2018-12-10,9:47:51.0,-6:0 +TRAP, + 'QoS on flow 1-1-1-3-1 modified', + 'Could not handle cmAttributeValueChangeTrap QoS flow policer'); } - public function testQosShaperModified() + public function testQosShaperModified(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmAttributeValueChangeTrap CM-FACILITY-MIB::cmQosShaperCIR.1.1.1.3.1.1.1 9856000 CM-FACILITY-MIB::cmQosShaperCIRHi.1.1.1.3.1.1.1 0 -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 09 2F 33 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 09 2F 33 00 2D 06 00 " ADVA-MIB::neEventLogIndex.218 218 -ADVA-MIB::neEventLogTimeStamp.218 2018-12-10,9:47:51.0,-6:0"; - - $trap = new Trap($trapText); - - $message = 'QoS on flow 1-1-1-3-1 modified'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmAttributeValueChangeTrap QoS shaper'); +ADVA-MIB::neEventLogTimeStamp.218 2018-12-10,9:47:51.0,-6:0 +TRAP, + 'QoS on flow 1-1-1-3-1 modified', + 'Could not handle cmAttributeValueChangeTrap QoS shaper'); } - public function testAccShaper() + public function testAccShaper(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmAttributeValueChangeTrap CM-FACILITY-MIB::cmAccPortQosShaperCIRLo.1.1.1.4.1 128000 CM-FACILITY-MIB::cmAccPortQosShaperCIRHi.1.1.1.4.1 0 -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 09 07 1C 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 09 07 1C 00 2D 06 00 " ADVA-MIB::neEventLogIndex.146 146 -ADVA-MIB::neEventLogTimeStamp.146 2018-12-10,9:7:28.1,-6:0"; - - $trap = new Trap($trapText); - - $message = 'Shaper modified on access port 1-1-1-4-1 modified'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmAttributeValueChangeTrap access port QoS shaper'); +ADVA-MIB::neEventLogTimeStamp.146 2018-12-10,9:7:28.1,-6:0 +TRAP, + 'Shaper modified on access port 1-1-1-4-1 modified', + 'Could not handle cmAttributeValueChangeTrap access port QoS shaper'); } } diff --git a/tests/Feature/SnmpTraps/AdvaDyingGaspTrapTest.php b/tests/Feature/SnmpTraps/AdvaDyingGaspTrapTest.php index 041aad83cb..e2991596fa 100644 --- a/tests/Feature/SnmpTraps/AdvaDyingGaspTrapTest.php +++ b/tests/Feature/SnmpTraps/AdvaDyingGaspTrapTest.php @@ -25,25 +25,19 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class AdvaDyingGaspTrapTest extends SnmpTrapTestCase { - public function testDyingGasp() + public function testDyingGasp(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 -SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmSnmpDyingGaspTrap"; - - $trap = new Trap($trapText); - - $message = 'Dying Gasp received'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 5); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmSnmpDyingGaspTrap'); +SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmSnmpDyingGaspTrap +TRAP, + 'Dying Gasp received', + 'Could not handle cmSnmpDyingGaspTrap', + [5], + ); } } diff --git a/tests/Feature/SnmpTraps/AdvaNetThresholdCrossingAlertTest.php b/tests/Feature/SnmpTraps/AdvaNetThresholdCrossingAlertTest.php index d18ecd3e28..0888bf74c2 100644 --- a/tests/Feature/SnmpTraps/AdvaNetThresholdCrossingAlertTest.php +++ b/tests/Feature/SnmpTraps/AdvaNetThresholdCrossingAlertTest.php @@ -25,17 +25,13 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class AdvaNetThresholdCrossingAlertTest extends SnmpTrapTestCase { - public function testNetThresholdTrap() + public function testNetThresholdTrap(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-PERFORMANCE-MIB::cmEthernetNetPortThresholdCrossingAlert CM-PERFORMANCE-MIB::cmEthernetNetPortThresholdIndex.1.1.1.2.1.37 37 @@ -47,17 +43,14 @@ CM-PERFORMANCE-MIB::cmEthernetNetPortThresholdMonValue.1.1.1.2.1.37 10 IF-MIB::ifName.2 NETWORK PORT-1-1-1-2 RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 0B 2D 0A 00 2D 06 00 \" ADVA-MIB::neEventLogIndex.79 79 -ADVA-MIB::neEventLogTimeStamp.79 2018-12-10,11:45:10.8,-6:0"; - - $trap = new Trap($trapText); - - $message = 'NETWORK PORT-1-1-1-2 unavailable seconds threshold exceeded for interval-15min'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmEthernetNetPortThresholdCrossingAlert unavailable seconds exceeded'); - - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 +ADVA-MIB::neEventLogTimeStamp.79 2018-12-10,11:45:10.8,-6:0 +TRAP, + 'NETWORK PORT-1-1-1-2 unavailable seconds threshold exceeded for interval-15min', + 'Could not handle cmEthernetNetPortThresholdCrossingAlert unavailable seconds exceeded', + ); + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-PERFORMANCE-MIB::cmEthernetNetPortThresholdCrossingAlert CM-PERFORMANCE-MIB::cmEthernetNetPortThresholdIndex.1.1.1.1.1.37 37 @@ -69,17 +62,15 @@ CM-PERFORMANCE-MIB::cmEthernetNetPortThresholdMonValue.1.1.1.1.1.37 10 IF-MIB::ifName.2 NETWORK PORT-1-1-1-1 RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 0B 2D 0A 00 2D 06 00 \" ADVA-MIB::neEventLogIndex.79 79 -ADVA-MIB::neEventLogTimeStamp.79 2018-12-10,11:45:10.8,-6:0"; +ADVA-MIB::neEventLogTimeStamp.79 2018-12-10,11:45:10.8,-6:0 +TRAP, + 'NETWORK PORT-1-1-1-1 1519 to MTU byte octets received threshold exceeded for interval-15min', + 'Could not handle cmEthernetNetPortThresholdCrossingAlert jumbo frame exceeded', + ); - $trap = new Trap($trapText); - - $message = 'NETWORK PORT-1-1-1-1 1519 to MTU byte octets received threshold exceeded for interval-15min'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmEthernetNetPortThresholdCrossingAlert jumbo frame exceeded'); - - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-PERFORMANCE-MIB::cmEthernetNetPortThresholdCrossingAlert CM-PERFORMANCE-MIB::cmEthernetNetPortThresholdIndex.1.1.1.1.1.37 37 @@ -91,17 +82,15 @@ CM-PERFORMANCE-MIB::cmEthernetNetPortThresholdMonValue.1.1.1.1.1.37 25 IF-MIB::ifName.2 NETWORK PORT-1-1-1-1 RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 0B 2D 0A 00 2D 06 00 \" ADVA-MIB::neEventLogIndex.79 79 -ADVA-MIB::neEventLogTimeStamp.79 2018-12-10,11:45:10.8,-6:0"; +ADVA-MIB::neEventLogTimeStamp.79 2018-12-10,11:45:10.8,-6:0 +TRAP, + 'NETWORK PORT-1-1-1-1 acl drop no match threshold exceeded for interval-1day', + 'Could not handle cmEthernetNetPortThresholdCrossingAlert no acl match exceeded', + ); - $trap = new Trap($trapText); - - $message = 'NETWORK PORT-1-1-1-1 acl drop no match threshold exceeded for interval-1day'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmEthernetNetPortThresholdCrossingAlert no acl match exceeded'); - - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-PERFORMANCE-MIB::cmEthernetNetPortThresholdCrossingAlert CM-PERFORMANCE-MIB::cmEthernetNetPortThresholdIndex.1.1.1.1.1.37 37 @@ -113,13 +102,10 @@ CM-PERFORMANCE-MIB::cmEthernetNetPortThresholdMonValue.1.1.1.1.1.37 25 IF-MIB::ifName.2 NETWORK PORT-1-1-1-1 RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 0B 2D 0A 00 2D 06 00 \" ADVA-MIB::neEventLogIndex.79 79 -ADVA-MIB::neEventLogTimeStamp.79 2018-12-10,11:45:10.8,-6:0"; - - $trap = new Trap($trapText); - - $message = 'NETWORK PORT-1-1-1-1 unknown threshold exceeded for interval-1day'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmEthernetNetPortThresholdCrossingAlert unknown exceeded'); +ADVA-MIB::neEventLogTimeStamp.79 2018-12-10,11:45:10.8,-6:0 +TRAP, + 'NETWORK PORT-1-1-1-1 unknown threshold exceeded for interval-1day', + 'Could not handle cmEthernetNetPortThresholdCrossingAlert unknown exceeded', + ); } } diff --git a/tests/Feature/SnmpTraps/AdvaNetworkElementAlmTrapTest.php b/tests/Feature/SnmpTraps/AdvaNetworkElementAlmTrapTest.php index 100ccc3b2b..9c9b3ad764 100644 --- a/tests/Feature/SnmpTraps/AdvaNetworkElementAlmTrapTest.php +++ b/tests/Feature/SnmpTraps/AdvaNetworkElementAlmTrapTest.php @@ -25,17 +25,13 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class AdvaNetworkElementAlmTrapTest extends SnmpTrapTestCase { - public function testElementAlarmCleared() + public function testElementAlarmCleared(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-ALARM-MIB::cmNetworkElementAlmTrap CM-ALARM-MIB::cmAlmIndex.0 30 @@ -45,28 +41,26 @@ CM-ALARM-MIB::cmNetworkElementAlmSrvEff.1.30 serviceAffecting CM-ALARM-MIB::cmNetworkElementAlmTime.1.30 2018-12-10,11:1:43.0,-6:0 CM-ALARM-MIB::cmNetworkElementAlmLocation.1.30 nearEnd CM-ALARM-MIB::cmNetworkElementAlmDirection.1.30 receiveDirectionOnly -CM-ALARM-MIB::cmNetworkElementAlmDescr.1.30 \"Test Alarm Cleared\" +CM-ALARM-MIB::cmNetworkElementAlmDescr.1.30 "Test Alarm Cleared" CM-ALARM-MIB::cmNetworkElementAlmObject.1.30 CM-FACILITY-MIB::cmEthernetNetPortIndex.1.1.1.2 CM-ALARM-MIB::cmNetworkElementAlmObjectName.1.30 NETWORK PORT-1-1-1-2 CM-ALARM-MIB::cmNetworkElementAlmAdditionalInfoObject.1.30 SNMPv2-SMI::zeroDotZero CM-ALARM-MIB::cmNetworkElementAlmAdditionalInfoName.1.30 -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 0B 01 2B 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 0B 01 2B 00 2D 06 00 " ADVA-MIB::neEventLogIndex.231 231 -ADVA-MIB::neEventLogTimeStamp.231 2018-12-10,11:1:43.3,-6:0"; - - $trap = new Trap($trapText); - - $message = 'Alarming Element: NETWORK PORT-1-1-1-2 Description: Test Alarm Cleared Severity: cleared'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 1); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmNetworkElementAlmTrap cleared'); +ADVA-MIB::neEventLogTimeStamp.231 2018-12-10,11:1:43.3,-6:0 +TRAP, + 'Alarming Element: NETWORK PORT-1-1-1-2 Description: Test Alarm Cleared Severity: cleared', + 'Could not handle cmNetworkElementAlmTrap cleared', + [1], + ); } - public function testElementAlarmMinor() + public function testElementAlarmMinor(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-ALARM-MIB::cmNetworkElementAlmTrap CM-ALARM-MIB::cmAlmIndex.0 30 @@ -76,28 +70,26 @@ CM-ALARM-MIB::cmNetworkElementAlmSrvEff.1.30 serviceAffecting CM-ALARM-MIB::cmNetworkElementAlmTime.1.30 2018-12-10,11:1:43.0,-6:0 CM-ALARM-MIB::cmNetworkElementAlmLocation.1.30 nearEnd CM-ALARM-MIB::cmNetworkElementAlmDirection.1.30 receiveDirectionOnly -CM-ALARM-MIB::cmNetworkElementAlmDescr.1.30 \"Test Alarm Minor\" +CM-ALARM-MIB::cmNetworkElementAlmDescr.1.30 "Test Alarm Minor" CM-ALARM-MIB::cmNetworkElementAlmObject.1.30 CM-FACILITY-MIB::cmEthernetNetPortIndex.1.1.1.2 CM-ALARM-MIB::cmNetworkElementAlmObjectName.1.30 NETWORK PORT-1-1-1-2 CM-ALARM-MIB::cmNetworkElementAlmAdditionalInfoObject.1.30 SNMPv2-SMI::zeroDotZero CM-ALARM-MIB::cmNetworkElementAlmAdditionalInfoName.1.30 -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 0B 01 2B 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 0B 01 2B 00 2D 06 00 " ADVA-MIB::neEventLogIndex.231 231 -ADVA-MIB::neEventLogTimeStamp.231 2018-12-10,11:1:43.3,-6:0"; - - $trap = new Trap($trapText); - - $message = 'Alarming Element: NETWORK PORT-1-1-1-2 Description: Test Alarm Minor Severity: minor'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 3); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmNetworkElementAlmTrap minor'); +ADVA-MIB::neEventLogTimeStamp.231 2018-12-10,11:1:43.3,-6:0 +TRAP, + 'Alarming Element: NETWORK PORT-1-1-1-2 Description: Test Alarm Minor Severity: minor', + 'Could not handle cmNetworkElementAlmTrap minor', + [3], + ); } - public function testElementAlarmMajor() + public function testElementAlarmMajor(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-ALARM-MIB::cmNetworkElementAlmTrap CM-ALARM-MIB::cmAlmIndex.0 30 @@ -107,28 +99,26 @@ CM-ALARM-MIB::cmNetworkElementAlmSrvEff.1.30 serviceAffecting CM-ALARM-MIB::cmNetworkElementAlmTime.1.30 2018-12-10,11:1:43.0,-6:0 CM-ALARM-MIB::cmNetworkElementAlmLocation.1.30 nearEnd CM-ALARM-MIB::cmNetworkElementAlmDirection.1.30 receiveDirectionOnly -CM-ALARM-MIB::cmNetworkElementAlmDescr.1.30 \"Test Alarm Major\" +CM-ALARM-MIB::cmNetworkElementAlmDescr.1.30 "Test Alarm Major" CM-ALARM-MIB::cmNetworkElementAlmObject.1.30 CM-FACILITY-MIB::cmEthernetNetPortIndex.1.1.1.2 CM-ALARM-MIB::cmNetworkElementAlmObjectName.1.30 NETWORK PORT-1-1-1-2 CM-ALARM-MIB::cmNetworkElementAlmAdditionalInfoObject.1.30 SNMPv2-SMI::zeroDotZero CM-ALARM-MIB::cmNetworkElementAlmAdditionalInfoName.1.30 -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 0B 01 2B 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 0B 01 2B 00 2D 06 00 " ADVA-MIB::neEventLogIndex.231 231 -ADVA-MIB::neEventLogTimeStamp.231 2018-12-10,11:1:43.3,-6:0"; - - $trap = new Trap($trapText); - - $message = 'Alarming Element: NETWORK PORT-1-1-1-2 Description: Test Alarm Major Severity: major'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 4); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmNetworkElementAlmTrap major'); +ADVA-MIB::neEventLogTimeStamp.231 2018-12-10,11:1:43.3,-6:0 +TRAP, + 'Alarming Element: NETWORK PORT-1-1-1-2 Description: Test Alarm Major Severity: major', + 'Could not handle cmNetworkElementAlmTrap major', + [4], + ); } - public function testElementAlarmCritical() + public function testElementAlarmCritical(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-ALARM-MIB::cmNetworkElementAlmTrap CM-ALARM-MIB::cmAlmIndex.0 30 @@ -138,20 +128,18 @@ CM-ALARM-MIB::cmNetworkElementAlmSrvEff.1.30 serviceAffecting CM-ALARM-MIB::cmNetworkElementAlmTime.1.30 2018-12-10,11:1:43.0,-6:0 CM-ALARM-MIB::cmNetworkElementAlmLocation.1.30 nearEnd CM-ALARM-MIB::cmNetworkElementAlmDirection.1.30 receiveDirectionOnly -CM-ALARM-MIB::cmNetworkElementAlmDescr.1.30 \"Test Alarm Critical\" +CM-ALARM-MIB::cmNetworkElementAlmDescr.1.30 "Test Alarm Critical" CM-ALARM-MIB::cmNetworkElementAlmObject.1.30 CM-FACILITY-MIB::cmEthernetNetPortIndex.1.1.1.2 CM-ALARM-MIB::cmNetworkElementAlmObjectName.1.30 NETWORK PORT-1-1-1-2 CM-ALARM-MIB::cmNetworkElementAlmAdditionalInfoObject.1.30 SNMPv2-SMI::zeroDotZero CM-ALARM-MIB::cmNetworkElementAlmAdditionalInfoName.1.30 -RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 0B 01 2B 00 2D 06 00 \" +RMON2-MIB::probeDateTime.0 "07 E2 0C 0A 0B 01 2B 00 2D 06 00 " ADVA-MIB::neEventLogIndex.231 231 -ADVA-MIB::neEventLogTimeStamp.231 2018-12-10,11:1:43.3,-6:0"; - - $trap = new Trap($trapText); - - $message = 'Alarming Element: NETWORK PORT-1-1-1-2 Description: Test Alarm Critical Severity: critical'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 5); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmNetworkElementAlmTrap critical'); +ADVA-MIB::neEventLogTimeStamp.231 2018-12-10,11:1:43.3,-6:0 +TRAP, + 'Alarming Element: NETWORK PORT-1-1-1-2 Description: Test Alarm Critical Severity: critical', + 'Could not handle cmNetworkElementAlmTrap critical', + [5], + ); } } diff --git a/tests/Feature/SnmpTraps/AdvaObjectCreationTest.php b/tests/Feature/SnmpTraps/AdvaObjectCreationTest.php index 6fdb1ee917..bcc91f4abf 100644 --- a/tests/Feature/SnmpTraps/AdvaObjectCreationTest.php +++ b/tests/Feature/SnmpTraps/AdvaObjectCreationTest.php @@ -25,17 +25,13 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class AdvaObjectCreationTest extends SnmpTrapTestCase { - public function testUserCreation() + public function testUserCreation(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmObjectCreationTrap CM-SECURITY-MIB::cmSecurityUserPrivLevel.\"testuser\".false superuser @@ -44,21 +40,18 @@ CM-SECURITY-MIB::cmSecurityUserName.\"testuser\".false testuser CM-SECURITY-MIB::cmSecurityUserComment.\"testuser\".false Remote User RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 08 37 29 00 2D 06 00 \" ADVA-MIB::neEventLogIndex.91 91 -ADVA-MIB::neEventLogTimeStamp.91 2018-12-10,8:55:41.1,-6:0"; - - $trap = new Trap($trapText); - - $message = 'User object testuser created'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmObjectCreationTrap user created'); +ADVA-MIB::neEventLogTimeStamp.91 2018-12-10,8:55:41.1,-6:0 +TRAP, + 'User object testuser created', + 'Could not handle cmObjectCreationTrap user created', + ); } - public function testLagCreation() + public function testLagCreation(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmObjectCreationTrap IEEE8023-LAG-MIB::dot3adAggCollectorMaxDelay.9 50 @@ -74,13 +67,10 @@ F3-LAG-MIB::f3LagName.1.1 F3-LAG-MIB::f3LagEntry.14.1.1 \"B0 00 \" RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 08 3A 2B 00 2D 06 00 \" ADVA-MIB::neEventLogIndex.110 110 -ADVA-MIB::neEventLogTimeStamp.110 2018-12-10,8:58:43.7,-6:0"; - - $trap = new Trap($trapText); - - $message = 'LAG 1 created'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmObjectCreationTrap LAG created'); +ADVA-MIB::neEventLogTimeStamp.110 2018-12-10,8:58:43.7,-6:0 +TRAP, + 'LAG 1 created', + 'Could not handle cmObjectCreationTrap LAG created', + ); } } diff --git a/tests/Feature/SnmpTraps/AdvaObjectDeletionTest.php b/tests/Feature/SnmpTraps/AdvaObjectDeletionTest.php index 6de410ba71..9fc449ee54 100644 --- a/tests/Feature/SnmpTraps/AdvaObjectDeletionTest.php +++ b/tests/Feature/SnmpTraps/AdvaObjectDeletionTest.php @@ -25,89 +25,73 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class AdvaObjectDeletionTest extends SnmpTrapTestCase { - public function testUserDeletion() + public function testUserDeletion(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmObjectDeletionTrap CM-SECURITY-MIB::cmSecurityUserName.\"testuser\".false testuser RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 08 38 1B 00 2D 06 00 \" ADVA-MIB::neEventLogIndex.92 92 -ADVA-MIB::neEventLogTimeStamp.92 2018-12-10,8:56:27.5,-6:0"; - - $trap = new Trap($trapText); - - $message = 'User object testuser deleted'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmObjectDeletionTrap user deletion'); +ADVA-MIB::neEventLogTimeStamp.92 2018-12-10,8:56:27.5,-6:0 +TRAP, + 'User object testuser deleted', + 'Could not handle cmObjectDeletionTrap user deletion', + ); } - public function testFLowDeletion() + public function testFLowDeletion(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmObjectDeletionTrap CM-FACILITY-MIB::cmFlowIndex.1.1.1.4.1 1 RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 09 07 1C 00 2D 06 00 \" ADVA-MIB::neEventLogIndex.148 148 -ADVA-MIB::neEventLogTimeStamp.148 2018-12-10,9:7:28.1,-6:0"; - - $trap = new Trap($trapText); - - $message = 'Flow 1-1-1-4-1 deleted'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmObjectDeletionTrap flow deletion'); +ADVA-MIB::neEventLogTimeStamp.148 2018-12-10,9:7:28.1,-6:0 +TRAP, + 'Flow 1-1-1-4-1 deleted', + 'Could not handle cmObjectDeletionTrap flow deletion', + ); } - public function testLagPortDeletion() + public function testLagPortDeletion(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmObjectDeletionTrap F3-LAG-MIB::f3LagPortIndex.1.1.1 1 RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 09 03 33 00 2D 06 00 \" ADVA-MIB::neEventLogIndex.136 136 -ADVA-MIB::neEventLogTimeStamp.136 2018-12-10,9:3:51.3,-6:0"; - - $trap = new Trap($trapText); - - $message = 'LAG member port 1 removed from LAG 1-1'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmObjectDeletionTrap LAG port deletion'); +ADVA-MIB::neEventLogTimeStamp.136 2018-12-10,9:3:51.3,-6:0 +TRAP, + 'LAG member port 1 removed from LAG 1-1', + 'Could not handle cmObjectDeletionTrap LAG port deletion', + ); } - public function testLagDeletion() + public function testLagDeletion(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmObjectDeletionTrap F3-LAG-MIB::f3LagIndex.1.1 1 RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 09 03 33 00 2D 06 00 \" ADVA-MIB::neEventLogIndex.139 139 -ADVA-MIB::neEventLogTimeStamp.139 2018-12-10,9:3:51.4,-6:0"; - - $trap = new Trap($trapText); - - $message = 'LAG 1 deleted'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmObjectDeletionTrap LAG deletion'); +ADVA-MIB::neEventLogTimeStamp.139 2018-12-10,9:3:51.4,-6:0 +TRAP, + 'LAG 1 deleted', + 'Could not handle cmObjectDeletionTrap LAG deletion', + ); } } diff --git a/tests/Feature/SnmpTraps/AdvaStateChangeTrapTest.php b/tests/Feature/SnmpTraps/AdvaStateChangeTrapTest.php index 35a9738b9a..03346db93e 100644 --- a/tests/Feature/SnmpTraps/AdvaStateChangeTrapTest.php +++ b/tests/Feature/SnmpTraps/AdvaStateChangeTrapTest.php @@ -25,17 +25,13 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class AdvaStateChangeTrapTest extends SnmpTrapTestCase { - public function testAccessPortChg() + public function testAccessPortChg(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 0:0:15:22.68 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmStateChangeTrap CM-FACILITY-MIB::cmEthernetAccPortAdminState.1.1.1.3 maintenance @@ -44,21 +40,18 @@ CM-FACILITY-MIB::cmEthernetAccPortSecondaryState.1.1.1.3 \"42 00 00 \" IF-MIB::ifName.3 ACCESS PORT-1-1-1-3 RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 0B 14 28 00 2D 06 00 \" ADVA-MIB::neEventLogIndex.48 48 -ADVA-MIB::neEventLogTimeStamp.48 2018-12-10,11:20:40.7,-6:0"; - - $trap = new Trap($trapText); - - $message = 'Port state change: ACCESS PORT-1-1-1-3 Admin State: maintenance Operational State: normal'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmStateChangeTrap access port amdmin state maintenance and op state normal'); +ADVA-MIB::neEventLogTimeStamp.48 2018-12-10,11:20:40.7,-6:0 +TRAP, + 'Port state change: ACCESS PORT-1-1-1-3 Admin State: maintenance Operational State: normal', + 'Could not handle cmStateChangeTrap access port amdmin state maintenance and op state normal', + ); } - public function testNetworkPortChg() + public function testNetworkPortChg(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 0:0:15:22.68 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmStateChangeTrap CM-FACILITY-MIB::cmEthernetNetPortAdminState.1.1.1.2 maintenance @@ -67,21 +60,18 @@ CM-FACILITY-MIB::cmEthernetNetPortSecondaryState.1.1.1.2 \"52 00 00 \" IF-MIB::ifName.2 NETWORK PORT-1-1-1-2 RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 0B 11 07 00 2D 06 00 \" ADVA-MIB::neEventLogIndex.19 19 -ADVA-MIB::neEventLogTimeStamp.19 2018-12-10,11:17:7.9,-6:0"; - - $trap = new Trap($trapText); - - $message = 'Port state change: NETWORK PORT-1-1-1-2 Admin State: maintenance Operational State: outage'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmStateChangeTrap access port amdmin state maintenance and op state normal'); +ADVA-MIB::neEventLogTimeStamp.19 2018-12-10,11:17:7.9,-6:0 +TRAP, + 'Port state change: NETWORK PORT-1-1-1-2 Admin State: maintenance Operational State: outage', + 'Could not handle cmStateChangeTrap access port amdmin state maintenance and op state normal', + ); } - public function testFlowStateChg() + public function testFlowStateChg(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 0:0:15:22.68 SNMPv2-MIB::snmpTrapOID.0 CM-SYSTEM-MIB::cmStateChangeTrap CM-FACILITY-MIB::cmFlowAdminState.1.1.1.3.1 management @@ -89,13 +79,10 @@ CM-FACILITY-MIB::cmFlowOperationalState.1.1.1.3.1 normal CM-FACILITY-MIB::cmFlowSecondaryState.1.1.1.3.1 \"40 00 00 \" RMON2-MIB::probeDateTime.0 \"07 E2 0C 0A 0B 14 28 00 2D 06 00 \" ADVA-MIB::neEventLogIndex.50 50 -ADVA-MIB::neEventLogTimeStamp.50 2018-12-10,11:20:40.8,-6:0"; - - $trap = new Trap($trapText); - - $message = 'Flow state change: 1-1-1-3-1 Admin State: management Operational State: normal'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmStateChangeTrap access port amdmin state maintenance and op state normal'); +ADVA-MIB::neEventLogTimeStamp.50 2018-12-10,11:20:40.8,-6:0 +TRAP, + 'Flow state change: 1-1-1-3-1 Admin State: management Operational State: normal', + 'Could not handle cmStateChangeTrap access port amdmin state maintenance and op state normal', + ); } } diff --git a/tests/Feature/SnmpTraps/AdvaSysAlmTrapTest.php b/tests/Feature/SnmpTraps/AdvaSysAlmTrapTest.php index e7566d111a..4202427d83 100644 --- a/tests/Feature/SnmpTraps/AdvaSysAlmTrapTest.php +++ b/tests/Feature/SnmpTraps/AdvaSysAlmTrapTest.php @@ -25,17 +25,13 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class AdvaSysAlmTrapTest extends SnmpTrapTestCase { - public function testCriticalAlarm() + public function testCriticalAlarm(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 0:0:15:22.68 SNMPv2-MIB::snmpTrapOID.0 CM-ALARM-MIB::cmSysAlmTrap CM-ALARM-MIB::cmAlmIndex.5 5 @@ -45,21 +41,19 @@ CM-ALARM-MIB::cmSysAlmSrvEff.5 nonServiceAffecting CM-ALARM-MIB::cmSysAlmTime.5 2018-12-10,11:28:20.0,-6:0 CM-ALARM-MIB::cmSysAlmLocation.5 nearEnd CM-ALARM-MIB::cmSysAlmDirection.5 receiveDirectionOnly -CM-ALARM-MIB::cmSysAlmDescr.5 \"Critical alarm test\""; - - $trap = new Trap($trapText); - - $message = 'System Alarm: Critical alarm test Status: critical'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 5); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmSysAlmTrap critical'); +CM-ALARM-MIB::cmSysAlmDescr.5 "Critical alarm test" +TRAP, + 'System Alarm: Critical alarm test Status: critical', + 'Could not handle cmSysAlmTrap critical', + [5], + ); } - public function testMajorAlarm() + public function testMajorAlarm(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 0:0:15:22.68 SNMPv2-MIB::snmpTrapOID.0 CM-ALARM-MIB::cmSysAlmTrap CM-ALARM-MIB::cmAlmIndex.5 5 @@ -69,21 +63,19 @@ CM-ALARM-MIB::cmSysAlmSrvEff.5 nonServiceAffecting CM-ALARM-MIB::cmSysAlmTime.5 2018-12-10,11:28:20.0,-6:0 CM-ALARM-MIB::cmSysAlmLocation.5 nearEnd CM-ALARM-MIB::cmSysAlmDirection.5 receiveDirectionOnly -CM-ALARM-MIB::cmSysAlmDescr.5 \"Major alarm test\""; - - $trap = new Trap($trapText); - - $message = 'System Alarm: Major alarm test Status: major'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 4); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmSysAlmTrap major'); +CM-ALARM-MIB::cmSysAlmDescr.5 "Major alarm test" +TRAP, + 'System Alarm: Major alarm test Status: major', + 'Could not handle cmSysAlmTrap major', + [4], + ); } - public function testMinorAlarm() + public function testMinorAlarm(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 0:0:15:22.68 SNMPv2-MIB::snmpTrapOID.0 CM-ALARM-MIB::cmSysAlmTrap CM-ALARM-MIB::cmAlmIndex.5 5 @@ -93,21 +85,19 @@ CM-ALARM-MIB::cmSysAlmSrvEff.5 nonServiceAffecting CM-ALARM-MIB::cmSysAlmTime.5 2018-12-10,11:28:20.0,-6:0 CM-ALARM-MIB::cmSysAlmLocation.5 nearEnd CM-ALARM-MIB::cmSysAlmDirection.5 receiveDirectionOnly -CM-ALARM-MIB::cmSysAlmDescr.5 \"Minor alarm test\""; - - $trap = new Trap($trapText); - - $message = 'System Alarm: Minor alarm test Status: minor'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 3); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmSysAlmTrap minor'); +CM-ALARM-MIB::cmSysAlmDescr.5 "Minor alarm test" +TRAP, + 'System Alarm: Minor alarm test Status: minor', + 'Could not handle cmSysAlmTrap minor', + [3], + ); } - public function testClearedAlarm() + public function testClearedAlarm(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 0:0:15:22.68 SNMPv2-MIB::snmpTrapOID.0 CM-ALARM-MIB::cmSysAlmTrap CM-ALARM-MIB::cmAlmIndex.5 5 @@ -117,13 +107,11 @@ CM-ALARM-MIB::cmSysAlmSrvEff.5 nonServiceAffecting CM-ALARM-MIB::cmSysAlmTime.5 2018-12-10,11:28:20.0,-6:0 CM-ALARM-MIB::cmSysAlmLocation.5 nearEnd CM-ALARM-MIB::cmSysAlmDirection.5 receiveDirectionOnly -CM-ALARM-MIB::cmSysAlmDescr.5 \"Cleared alarm test\""; - - $trap = new Trap($trapText); - - $message = 'System Alarm: Cleared alarm test Status: cleared'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 1); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle cmSysAlmTrap major'); +CM-ALARM-MIB::cmSysAlmDescr.5 "Cleared alarm test" +TRAP, + 'System Alarm: Cleared alarm test Status: cleared', + 'Could not handle cmSysAlmTrap major', + [1], + ); } } diff --git a/tests/Feature/SnmpTraps/ApcOnBatteryTest.php b/tests/Feature/SnmpTraps/ApcOnBatteryTest.php index c8d4eaf599..8bebe9eb60 100755 --- a/tests/Feature/SnmpTraps/ApcOnBatteryTest.php +++ b/tests/Feature/SnmpTraps/ApcOnBatteryTest.php @@ -24,10 +24,6 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class ApcOnBatteryTest extends SnmpTrapTestCase { /** @@ -35,19 +31,19 @@ class ApcOnBatteryTest extends SnmpTrapTestCase * * @return void */ - public function testApcOnBattery() + public function testApcOnBattery(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[10.0.0.1]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[10.0.0.1]:162 SNMPv2-MIB::sysUpTime.0 18:30:30.32 SNMPv2-MIB::snmpTrapOID.0 PowerNet-MIB::upsOnBattery -PowerNet-MIB::mtrapargsString \"The UPS has switched to battery backup power.\" -SNMPv2-MIB::snmpTrapEnterprise.0 PowerNet-MIB::apc"; - - $trap = new Trap($trapText); - $message = 'The UPS has switched to battery backup power.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 4); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle testApcOnBattery trap'); +PowerNet-MIB::mtrapargsString "The UPS has switched to battery backup power." +SNMPv2-MIB::snmpTrapEnterprise.0 PowerNet-MIB::apc +TRAP, + 'The UPS has switched to battery backup power.', + 'Could not handle testApcOnBattery trap', + [4], + ); } } diff --git a/tests/Feature/SnmpTraps/ApcPduOutletTest.php b/tests/Feature/SnmpTraps/ApcPduOutletTest.php index 227117a1a6..47dbe1e1b2 100644 --- a/tests/Feature/SnmpTraps/ApcPduOutletTest.php +++ b/tests/Feature/SnmpTraps/ApcPduOutletTest.php @@ -22,63 +22,56 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class ApcPduOutletTest extends SnmpTrapTestCase { - public function testOutletOff() + public function testOutletOff(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:161->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:161->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 84:21:45:07.07 SNMPv2-MIB::snmpTrapOID.0 PowerNet-MIB::outletOff PowerNet-MIB::mtrapargsInteger.0 2 PowerNet-MIB::mtrapargsString.0 \"An outlet has turned on. If the outlet number is 0, then all outlets have turned on.\" -SNMPv2-MIB::snmpTrapEnterprise.0 PowerNet-MIB::apc"; - - $message = 'APC PDU: Outlet has turned off: 2'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 4); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle outletOff trap'); +SNMPv2-MIB::snmpTrapEnterprise.0 PowerNet-MIB::apc +TRAP, + 'APC PDU: Outlet has turned off: 2', + 'Could not handle outletOff trap', + [4], + ); } - public function testOutletOn() + public function testOutletOn(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:161->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:161->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 84:21:45:07.07 SNMPv2-MIB::snmpTrapOID.0 PowerNet-MIB::outletOn PowerNet-MIB::mtrapargsInteger.0 2 PowerNet-MIB::mtrapargsString.0 \"An outlet has turned on. If the outlet number is 0, then all outlets have turned on.\" -SNMPv2-MIB::snmpTrapEnterprise.0 PowerNet-MIB::apc"; - - $message = 'APC PDU: Outlet has been turned on: 2'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 4); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle outletOn trap'); +SNMPv2-MIB::snmpTrapEnterprise.0 PowerNet-MIB::apc +TRAP, + 'APC PDU: Outlet has been turned on: 2', + 'Could not handle outletOn trap', + [4], + ); } - public function testOutletReboot() + public function testOutletReboot(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:161->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:161->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 84:21:45:07.07 SNMPv2-MIB::snmpTrapOID.0 PowerNet-MIB::outletReboot PowerNet-MIB::mtrapargsInteger.0 2 PowerNet-MIB::mtrapargsString.0 \"An outlet has rebooted. If the outlet number is 0, then all outlets have rebooted.\" -SNMPv2-MIB::snmpTrapEnterprise.0 PowerNet-MIB::apc"; - - $message = 'APC PDU: Outlet has rebooted: 2'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 4); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle outletReboot trap'); +SNMPv2-MIB::snmpTrapEnterprise.0 PowerNet-MIB::apc +TRAP, + 'APC PDU: Outlet has rebooted: 2', + 'Could not handle outletReboot trap', + [4], + ); } } diff --git a/tests/Feature/SnmpTraps/ApcPduOverloadTest.php b/tests/Feature/SnmpTraps/ApcPduOverloadTest.php index ba71a9d832..7ce880cfbc 100644 --- a/tests/Feature/SnmpTraps/ApcPduOverloadTest.php +++ b/tests/Feature/SnmpTraps/ApcPduOverloadTest.php @@ -22,10 +22,6 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class ApcPduOverloadTest extends SnmpTrapTestCase { /** @@ -33,23 +29,23 @@ class ApcPduOverloadTest extends SnmpTrapTestCase * * @return void */ - public function testNearOverload() + public function testNearOverload(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 318:0:09:38.28 SNMPv2-MIB::snmpTrapOID.0 PowerNet-MIB::rPDUNearOverload -PowerNet-MIB::rPDUIdentSerialNumber.0 \"5A1036E02224\" -PowerNet-MIB::rPDUIdentName.0 \"Grand POP PDU R15 A1\" +PowerNet-MIB::rPDUIdentSerialNumber.0 "5A1036E02224" +PowerNet-MIB::rPDUIdentName.0 "Grand POP PDU R15 A1" PowerNet-MIB::rPDULoadStatusPhaseNumber.0 1 -PowerNet-MIB::mtrapargsString.0 \"Metered Rack PDU: Near overload.\" -SNMPv2-MIB::snmpTrapEnterprise.0 PowerNet-MIB::apc"; - - $trap = new Trap($trapText); - $message = 'Grand POP PDU R15 A1 phase 1 Metered Rack PDU: Near overload.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 4); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle rPDUNearOverload trap'); +PowerNet-MIB::mtrapargsString.0 "Metered Rack PDU: Near overload." +SNMPv2-MIB::snmpTrapEnterprise.0 PowerNet-MIB::apc +TRAP, + 'Grand POP PDU R15 A1 phase 1 Metered Rack PDU: Near overload.', + 'Could not handle rPDUNearOverload trap', + [4], + ); } /** @@ -57,23 +53,23 @@ SNMPv2-MIB::snmpTrapEnterprise.0 PowerNet-MIB::apc"; * * @return void */ - public function testNearOverloadClear() + public function testNearOverloadClear(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 318:0:09:38.28 SNMPv2-MIB::snmpTrapOID.0 PowerNet-MIB::rPDUNearOverloadCleared -PowerNet-MIB::rPDUIdentSerialNumber.0 \"5A1036E02224\" -PowerNet-MIB::rPDUIdentName.0 \"Grand POP PDU R15 A1\" +PowerNet-MIB::rPDUIdentSerialNumber.0 "5A1036E02224" +PowerNet-MIB::rPDUIdentName.0 "Grand POP PDU R15 A1" PowerNet-MIB::rPDULoadStatusPhaseNumber.0 1 -PowerNet-MIB::mtrapargsString.0 \"Metered Rack PDU: Near overload cleared.\" -SNMPv2-MIB::snmpTrapEnterprise.0 PowerNet-MIB::apc"; - - $trap = new Trap($trapText); - $message = 'Grand POP PDU R15 A1 phase 1 Metered Rack PDU: Near overload cleared.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 1); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle rPDUNearOverloadClear trap'); +PowerNet-MIB::mtrapargsString.0 "Metered Rack PDU: Near overload cleared." +SNMPv2-MIB::snmpTrapEnterprise.0 PowerNet-MIB::apc +TRAP, + 'Grand POP PDU R15 A1 phase 1 Metered Rack PDU: Near overload cleared.', + 'Could not handle rPDUNearOverloadClear trap', + [1], + ); } /** @@ -81,23 +77,23 @@ SNMPv2-MIB::snmpTrapEnterprise.0 PowerNet-MIB::apc"; * * @return void */ - public function testOverload() + public function testOverload(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 318:0:09:38.28 SNMPv2-MIB::snmpTrapOID.0 PowerNet-MIB::rPDUOverload -PowerNet-MIB::rPDUIdentSerialNumber.0 \"5A1036E02224\" -PowerNet-MIB::rPDUIdentName.0 \"Grand POP PDU R15 A1\" +PowerNet-MIB::rPDUIdentSerialNumber.0 "5A1036E02224" +PowerNet-MIB::rPDUIdentName.0 "Grand POP PDU R15 A1" PowerNet-MIB::rPDULoadStatusPhaseNumber.0 1 -PowerNet-MIB::mtrapargsString.0 \"APC Rack PDU: Overload condition.\" -SNMPv2-MIB::snmpTrapEnterprise.0 PowerNet-MIB::apc"; - - $trap = new Trap($trapText); - $message = 'Grand POP PDU R15 A1 phase 1 APC Rack PDU: Overload condition.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 5); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle rPDUOverload trap'); +PowerNet-MIB::mtrapargsString.0 "APC Rack PDU: Overload condition." +SNMPv2-MIB::snmpTrapEnterprise.0 PowerNet-MIB::apc +TRAP, + 'Grand POP PDU R15 A1 phase 1 APC Rack PDU: Overload condition.', + 'Could not handle rPDUOverload trap', + [5], + ); } /** @@ -105,22 +101,22 @@ SNMPv2-MIB::snmpTrapEnterprise.0 PowerNet-MIB::apc"; * * @return void */ - public function testOverloadClear() + public function testOverloadClear(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 318:0:09:38.28 SNMPv2-MIB::snmpTrapOID.0 PowerNet-MIB::rPDUOverloadCleared -PowerNet-MIB::rPDUIdentSerialNumber.0 \"5A1036E02224\" -PowerNet-MIB::rPDUIdentName.0 \"Grand POP PDU R15 A1\" +PowerNet-MIB::rPDUIdentSerialNumber.0 "5A1036E02224" +PowerNet-MIB::rPDUIdentName.0 "Grand POP PDU R15 A1" PowerNet-MIB::rPDULoadStatusPhaseNumber.0 1 -PowerNet-MIB::mtrapargsString.0 \"APC Rack PDU: Overload condition has cleared.\" -SNMPv2-MIB::snmpTrapEnterprise.0 PowerNet-MIB::apc"; - - $trap = new Trap($trapText); - $message = 'Grand POP PDU R15 A1 phase 1 APC Rack PDU: Overload condition has cleared.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 1); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle rPDUOverloadClear trap'); +PowerNet-MIB::mtrapargsString.0 "APC Rack PDU: Overload condition has cleared." +SNMPv2-MIB::snmpTrapEnterprise.0 PowerNet-MIB::apc +TRAP, + 'Grand POP PDU R15 A1 phase 1 APC Rack PDU: Overload condition has cleared.', + 'Could not handle rPDUOverloadClear trap', + [1], + ); } } diff --git a/tests/Feature/SnmpTraps/ApcPowerRestoredTest.php b/tests/Feature/SnmpTraps/ApcPowerRestoredTest.php index d3a3a298a3..56ab155598 100755 --- a/tests/Feature/SnmpTraps/ApcPowerRestoredTest.php +++ b/tests/Feature/SnmpTraps/ApcPowerRestoredTest.php @@ -24,10 +24,6 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class ApcPowerRestoredTest extends SnmpTrapTestCase { /** @@ -35,19 +31,19 @@ class ApcPowerRestoredTest extends SnmpTrapTestCase * * @return void */ - public function testApcPowerRestored() + public function testApcPowerRestored(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[10.0.0.1]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[10.0.0.1]:162 SNMPv2-MIB::sysUpTime.0 18:30:30.32 SNMPv2-MIB::snmpTrapOID.0 PowerNet-MIB::powerRestored -PowerNet-MIB::mtrapargsString.0 \"INFORMATIONAL: Utility power has been restored.\" -SNMPv2-MIB::snmpTrapEnterprise.0 PowerNet-MIB::apc"; - - $trap = new Trap($trapText); - $message = 'INFORMATIONAL: Utility power has been restored.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 1); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle testApcPowerRestored trap'); +PowerNet-MIB::mtrapargsString.0 "INFORMATIONAL: Utility power has been restored." +SNMPv2-MIB::snmpTrapEnterprise.0 PowerNet-MIB::apc +TRAP, + 'INFORMATIONAL: Utility power has been restored.', + 'Could not handle testApcPowerRestored trap', + [1], + ); } } diff --git a/tests/Feature/SnmpTraps/ApcSmartAvrReducingOffTest.php b/tests/Feature/SnmpTraps/ApcSmartAvrReducingOffTest.php index 75f2ae81a2..03e069c914 100644 --- a/tests/Feature/SnmpTraps/ApcSmartAvrReducingOffTest.php +++ b/tests/Feature/SnmpTraps/ApcSmartAvrReducingOffTest.php @@ -24,10 +24,6 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class ApcSmartAvrReducingOffTest extends SnmpTrapTestCase { /** @@ -35,19 +31,19 @@ class ApcSmartAvrReducingOffTest extends SnmpTrapTestCase * * @return void */ - public function testApcSmartAvrReducingOff() + public function testApcSmartAvrReducingOff(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[10.0.0.1]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[10.0.0.1]:162 SNMPv2-MIB::sysUpTime.0 459:20:47:26.90 SNMPv2-MIB::snmpTrapOID.0 PowerNet-MIB::smartAvrReducingOff -PowerNet-MIB::mtrapargsString \"UPS: No longer compensating for a high input voltage.\" -SNMPv2-MIB::snmpTrapEnterprise.0 PowerNet-MIB::apc"; - - $trap = new Trap($trapText); - $message = 'UPS: No longer compensating for a high input voltage.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 1); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle testApcSmartAvrReducingOff trap'); +PowerNet-MIB::mtrapargsString "UPS: No longer compensating for a high input voltage." +SNMPv2-MIB::snmpTrapEnterprise.0 PowerNet-MIB::apc +TRAP, + 'UPS: No longer compensating for a high input voltage.', + 'Could not handle testApcSmartAvrReducingOff trap', + [1], + ); } } diff --git a/tests/Feature/SnmpTraps/ApcSmartAvrReducingTest.php b/tests/Feature/SnmpTraps/ApcSmartAvrReducingTest.php index 300f68de3d..c9d9052ee2 100644 --- a/tests/Feature/SnmpTraps/ApcSmartAvrReducingTest.php +++ b/tests/Feature/SnmpTraps/ApcSmartAvrReducingTest.php @@ -24,10 +24,6 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class ApcSmartAvrReducingTest extends SnmpTrapTestCase { /** @@ -35,19 +31,19 @@ class ApcSmartAvrReducingTest extends SnmpTrapTestCase * * @return void */ - public function testApcSmartAvrReducing() + public function testApcSmartAvrReducing(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[10.0.0.1]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[10.0.0.1]:162 SNMPv2-MIB::sysUpTime.0 459:20:47:26.90 SNMPv2-MIB::snmpTrapOID.0 PowerNet-MIB::smartAvrReducing -PowerNet-MIB::mtrapargsString \"UPS: Compensating for a high input voltage.\" -SNMPv2-MIB::snmpTrapEnterprise.0 PowerNet-MIB::apc"; - - $trap = new Trap($trapText); - $message = 'UPS: Compensating for a high input voltage.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 3); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle testApcSmartAvrReducing trap'); +PowerNet-MIB::mtrapargsString "UPS: Compensating for a high input voltage." +SNMPv2-MIB::snmpTrapEnterprise.0 PowerNet-MIB::apc +TRAP, + 'UPS: Compensating for a high input voltage.', + 'Could not handle testApcSmartAvrReducing trap', + [3], + ); } } diff --git a/tests/Feature/SnmpTraps/BgpTrapTest.php b/tests/Feature/SnmpTraps/BgpTrapTest.php index f0bc142207..0aa18778ea 100644 --- a/tests/Feature/SnmpTraps/BgpTrapTest.php +++ b/tests/Feature/SnmpTraps/BgpTrapTest.php @@ -27,57 +27,62 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; use App\Models\BgpPeer; use App\Models\Device; +use Illuminate\Foundation\Testing\DatabaseTransactions; use LibreNMS\Config; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; +use LibreNMS\Tests\Traits\RequiresDatabase; class BgpTrapTest extends SnmpTrapTestCase { - public function testBgpUp() + use RequiresDatabase; + use DatabaseTransactions; + + public function testBgpUp(): void { // Cache it to avoid DNS Lookup Config::set('astext.1', 'PHPUnit ASTEXT'); - $device = Device::factory()->create(); /** @var Device $device */ - $bgppeer = BgpPeer::factory()->make(['bgpPeerState' => 'idle', 'bgpPeerRemoteAs' => 1]); /** @var BgpPeer $bgppeer */ + $device = Device::factory()->create(); + /** @var Device $device */ + $bgppeer = BgpPeer::factory()->make(['bgpPeerState' => 'idle', 'bgpPeerRemoteAs' => 1]); + /** @var BgpPeer $bgppeer */ $device->bgppeers()->save($bgppeer); - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage("{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 302:12:56:24.81 SNMPv2-MIB::snmpTrapOID.0 BGP4-MIB::bgpEstablished BGP4-MIB::bgpPeerLastError.$bgppeer->bgpPeerIdentifier \"04 00 \" -BGP4-MIB::bgpPeerState.$bgppeer->bgpPeerIdentifier established\n"; - - $message = "SNMP Trap: BGP Up $bgppeer->bgpPeerIdentifier " . get_astext($bgppeer->bgpPeerRemoteAs) . ' is now established'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'bgpPeer', 1, $bgppeer->bgpPeerIdentifier); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle bgpEstablished'); +BGP4-MIB::bgpPeerState.$bgppeer->bgpPeerIdentifier established\n", + "SNMP Trap: BGP Up $bgppeer->bgpPeerIdentifier " . get_astext($bgppeer->bgpPeerRemoteAs) . ' is now established', + 'Could not handle bgpEstablished', + [1, 'bgpPeer', $bgppeer->bgpPeerIdentifier], + $device, + ); $bgppeer = $bgppeer->fresh(); // refresh from database $this->assertEquals($bgppeer->bgpPeerState, 'established'); } - public function testBgpDown() + public function testBgpDown(): void { // Cache it to avoid DNS Lookup Config::set('astext.1', 'PHPUnit ASTEXT'); - $device = Device::factory()->create(); /** @var Device $device */ - $bgppeer = BgpPeer::factory()->make(['bgpPeerState' => 'established', 'bgpPeerRemoteAs' => 1]); /** @var BgpPeer $bgppeer */ + $device = Device::factory()->create(); + /** @var Device $device */ + $bgppeer = BgpPeer::factory()->make(['bgpPeerState' => 'established', 'bgpPeerRemoteAs' => 1]); + /** @var BgpPeer $bgppeer */ $device->bgppeers()->save($bgppeer); - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[185.29.68.52]:162 + $this->assertTrapLogsMessage("{{ hostname }} +UDP: [{{ ip }}]:57602->[185.29.68.52]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 302:12:55:33.47 SNMPv2-MIB::snmpTrapOID.0 BGP4-MIB::bgpBackwardTransition BGP4-MIB::bgpPeerLastError.$bgppeer->bgpPeerIdentifier \"04 00 \" -BGP4-MIB::bgpPeerState.$bgppeer->bgpPeerIdentifier idle\n"; - - $message = "SNMP Trap: BGP Down $bgppeer->bgpPeerIdentifier " . get_astext($bgppeer->bgpPeerRemoteAs) . ' is now idle'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'bgpPeer', 5, $bgppeer->bgpPeerIdentifier); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle bgpBackwardTransition'); +BGP4-MIB::bgpPeerState.$bgppeer->bgpPeerIdentifier idle\n", + "SNMP Trap: BGP Down $bgppeer->bgpPeerIdentifier " . get_astext($bgppeer->bgpPeerRemoteAs) . ' is now idle', + 'Could not handle bgpBackwardTransition', + [5, 'bgpPeer', $bgppeer->bgpPeerIdentifier], + $device, + ); $bgppeer = $bgppeer->fresh(); // refresh from database $this->assertEquals($bgppeer->bgpPeerState, 'idle'); diff --git a/tests/Feature/SnmpTraps/CiscoErrDisableInterfaceEventTest.php b/tests/Feature/SnmpTraps/CiscoErrDisableInterfaceEventTest.php index 7bff1adfe3..92890a0a05 100644 --- a/tests/Feature/SnmpTraps/CiscoErrDisableInterfaceEventTest.php +++ b/tests/Feature/SnmpTraps/CiscoErrDisableInterfaceEventTest.php @@ -27,30 +27,37 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; use App\Models\Device; use App\Models\Port; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; +use Illuminate\Foundation\Testing\DatabaseTransactions; +use LibreNMS\Tests\Traits\RequiresDatabase; class CiscoErrDisableInterfaceEventTest extends SnmpTrapTestCase { + use RequiresDatabase; + use DatabaseTransactions; + /** * Test CiscoErrDisableInterfaceEvent trap handle * * @return void */ - public function testErrDisableInterfaceEvent() + public function testErrDisableInterfaceEvent(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $port = Port::factory()->make(); /** @var Port $port */ + $device = Device::factory()->create(); + /** @var Device $device */ + $port = Port::factory()->make(); + /** @var Port $port */ $device->ports()->save($port); - $trapText = "$device->hostname + + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:57602->[10.0.0.1]:162 SNMPv2-MIB::sysUpTime.0 18:30:30.32 SNMPv2-MIB::snmpTrapOID.0 CISCO-ERR-DISABLE-MIB::cErrDisableInterfaceEventRev1 -CISCO-ERR-DISABLE-MIB::cErrDisableIfStatusCause.$port->ifIndex.0 bpduGuard"; - $trap = new Trap($trapText); - $message = 'SNMP TRAP: bpduGuard error detected on ' . $port->ifName . ' (Description: ' . $port->ifDescr . '). ' . $port->ifName . ' in err-disable state.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 4); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle testErrDisableInterfaceEvent trap'); +CISCO-ERR-DISABLE-MIB::cErrDisableIfStatusCause.$port->ifIndex.0 bpduGuard", + 'SNMP TRAP: bpduGuard error detected on ' . $port->ifName . ' (Description: ' . $port->ifDescr . '). ' . $port->ifName . ' in err-disable state.', + 'Could not handle testErrDisableInterfaceEvent trap', + [4], + $device, + ); } /** @@ -58,19 +65,23 @@ CISCO-ERR-DISABLE-MIB::cErrDisableIfStatusCause.$port->ifIndex.0 bpduGuard"; * * @return void */ - public function testErrDisableBadIfIndex() + public function testErrDisableBadIfIndex(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $port = Port::factory()->make(['ifIndex' => 1]); /** @var Port $port */ + $device = Device::factory()->create(); + /** @var Device $device */ + $port = Port::factory()->make(['ifIndex' => 1]); + /** @var Port $port */ $device->ports()->save($port); - $trapText = "$device->hostname + + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:57602->[10.0.0.1]:162 SNMPv2-MIB::sysUpTime.0 18:30:30.32 SNMPv2-MIB::snmpTrapOID.0 CISCO-ERR-DISABLE-MIB::cErrDisableInterfaceEventRev1 -CISCO-ERR-DISABLE-MIB::cErrDisableIfStatusCause.10.0 bpduGuard"; - $trap = new Trap($trapText); - $message = 'SNMP TRAP: bpduGuard error detected on unknown port. Either ifIndex is not found in the trap, or it does not match a port on this device.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 4); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle testErrDisableBadIfIndex trap'); +CISCO-ERR-DISABLE-MIB::cErrDisableIfStatusCause.10.0 bpduGuard", + 'SNMP TRAP: bpduGuard error detected on unknown port. Either ifIndex is not found in the trap, or it does not match a port on this device.', + 'Could not handle testErrDisableBadIfIndex trap', + [4], + $device, + ); } } diff --git a/tests/Feature/SnmpTraps/CiscoMacViolationTest.php b/tests/Feature/SnmpTraps/CiscoMacViolationTest.php index ac3f481eba..dc209085b9 100644 --- a/tests/Feature/SnmpTraps/CiscoMacViolationTest.php +++ b/tests/Feature/SnmpTraps/CiscoMacViolationTest.php @@ -22,10 +22,6 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class CiscoMacViolationTest extends SnmpTrapTestCase { /** @@ -33,20 +29,20 @@ class CiscoMacViolationTest extends SnmpTrapTestCase * * @return void */ - public function testMacViolation() + public function testMacViolation(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[10.0.0.1]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[10.0.0.1]:162 SNMPv2-MIB::sysUpTime.0 18:30:30.32 SNMPv2-MIB::snmpTrapOID.0 CISCO-PORT-SECURITY-MIB::cpsSecureMacAddrViolation IF-MIB::ifIndex 10104 IF-MIB::ifName GigabitEthernet1/0/24 -CISCO-PORT-SECURITY-MIB::cpsIfSecureLastMacAddress a8:9d:21:e1:d8:50"; - - $trap = new Trap($trapText); - $message = 'SNMP Trap: Secure MAC Address Violation on port GigabitEthernet1/0/24. Last MAC address: a8:9d:21:e1:d8:50'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 4); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle testMacViolation trap'); +CISCO-PORT-SECURITY-MIB::cpsIfSecureLastMacAddress a8:9d:21:e1:d8:50 +TRAP, + 'SNMP Trap: Secure MAC Address Violation on port GigabitEthernet1/0/24. Last MAC address: a8:9d:21:e1:d8:50', + 'Could not handle testMacViolation trap', + [4], + ); } } diff --git a/tests/Feature/SnmpTraps/CommonTrapTest.php b/tests/Feature/SnmpTraps/CommonTrapTest.php index b1a66095f3..9f199e446f 100644 --- a/tests/Feature/SnmpTraps/CommonTrapTest.php +++ b/tests/Feature/SnmpTraps/CommonTrapTest.php @@ -26,15 +26,21 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; use App\Models\Device; +use App\Models\Eventlog; use App\Models\Ipv4Address; use App\Models\Port; +use Illuminate\Foundation\Testing\DatabaseTransactions; use LibreNMS\Snmptrap\Dispatcher; use LibreNMS\Snmptrap\Trap; +use LibreNMS\Tests\Traits\RequiresDatabase; use Log; class CommonTrapTest extends SnmpTrapTestCase { - public function testGarbage() + use RequiresDatabase; + use DatabaseTransactions; + + public function testGarbage(): void { $trapText = "Garbage\n"; @@ -42,7 +48,7 @@ class CommonTrapTest extends SnmpTrapTestCase $this->assertFalse(Dispatcher::handle($trap), 'Found handler for trap with no snmpTrapOID'); } - public function testFindByIp() + public function testFindByIp(): void { $device = Device::factory()->create(); /** @var Device $device */ $port = Port::factory()->make(); /** @var Port $port */ @@ -55,21 +61,23 @@ class CommonTrapTest extends SnmpTrapTestCase UDP: [$ipv4->ipv4_address]:64610->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 198:2:10:48.91\n"; - Log::shouldReceive('info')->once()->with('Unhandled trap snmptrap', ['device' => $device->hostname, 'oid' => null]); - Log::shouldReceive('event')->once()->withArgs(function ($e_message, $e_device, $e_type) use ($device) { - return $e_message == '' && - $device->is($e_device) && - $e_type == 'trap'; - }); + Log::partialMock()->shouldReceive('info')->once()->with('Unhandled trap snmptrap', ['device' => $device->hostname, 'oid' => null]); $trap = new Trap($trapText); $this->assertFalse(Dispatcher::handle($trap), 'Found handler for trap with no snmpTrapOID'); // check that the device was found $this->assertEquals($device->hostname, $trap->getDevice()->hostname); + + // check that eventlog was logged + $eventlog = Eventlog::latest('event_id')->first(); + $this->assertEquals($device->device_id, $eventlog->device_id, 'Trap eventlog device incorrect'); + $this->assertEquals('', $eventlog->message, 'Trap eventlog message incorrect'); + $this->assertEquals('trap', $eventlog->type, 'Trap eventlog type incorrect'); + $this->assertEquals(2, $eventlog->severity, 'Trap eventlog severity incorrect'); } - public function testGenericTrap() + public function testGenericTrap(): void { $device = Device::factory()->create(); /** @var Device $device */ $trapText = "$device->hostname @@ -77,18 +85,20 @@ UDP: [$device->ip]:64610->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 198:2:10:48.91 SNMPv2-MIB::snmpTrapOID.0 SNMPv2-MIB::someOid\n"; - Log::shouldReceive('info')->once()->with('Unhandled trap snmptrap', ['device' => $device->hostname, 'oid' => 'SNMPv2-MIB::someOid']); - Log::shouldReceive('event')->once()->withArgs(function ($e_message, $e_device, $e_type) use ($device) { - return $e_message == 'SNMPv2-MIB::someOid' && - $device->is($e_device) && - $e_type == 'trap'; - }); + Log::partialMock()->shouldReceive('info')->once()->with('Unhandled trap snmptrap', ['device' => $device->hostname, 'oid' => 'SNMPv2-MIB::someOid']); $trap = new Trap($trapText); $this->assertFalse(Dispatcher::handle($trap)); + + // check that eventlog was logged + $eventlog = Eventlog::latest('event_id')->first(); + $this->assertEquals($device->device_id, $eventlog->device_id, 'Trap eventlog device incorrect'); + $this->assertEquals('SNMPv2-MIB::someOid', $eventlog->message, 'Trap eventlog message incorrect'); + $this->assertEquals('trap', $eventlog->type, 'Trap eventlog type incorrect'); + $this->assertEquals(2, $eventlog->severity, 'Trap eventlog severity incorrect'); } - public function testAuthorization() + public function testAuthorization(): void { $device = Device::factory()->create(); /** @var Device $device */ $trapText = "$device->hostname @@ -96,16 +106,21 @@ UDP: [$device->ip]:64610->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 198:2:10:48.91 SNMPv2-MIB::snmpTrapOID.0 SNMPv2-MIB::authenticationFailure\n"; - Log::shouldReceive('event')->once()->with('SNMP Trap: Authentication Failure: ' . $device->displayName(), $device->device_id, 'auth', 3); - $trap = new Trap($trapText); $this->assertTrue(Dispatcher::handle($trap)); // check that the device was found $this->assertEquals($device->hostname, $trap->getDevice()->hostname); + + // check that eventlog was logged + $eventlog = Eventlog::latest('event_id')->first(); + $this->assertEquals($device->device_id, $eventlog->device_id, 'Trap eventlog device incorrect'); + $this->assertEquals('SNMP Trap: Authentication Failure: ' . $device->displayName(), $eventlog->message, 'Trap eventlog message incorrect'); + $this->assertEquals('auth', $eventlog->type, 'Trap eventlog type incorrect'); + $this->assertEquals(3, $eventlog->severity, 'Trap eventlog severity incorrect'); } - public function testBridgeNewRoot() + public function testBridgeNewRoot(): void { $device = Device::factory()->create(); /** @var Device $device */ $trapText = "$device->hostname @@ -113,80 +128,73 @@ UDP: [$device->ip]:44298->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 3:4:17:32.35 SNMPv2-MIB::snmpTrapOID.0 BRIDGE-MIB::newRoot"; - Log::shouldReceive('event')->once()->with('SNMP Trap: Device ' . $device->displayName() . ' was elected as new root on one of its Spanning Tree Instances', $device->device_id, 'stp', 3); - $trap = new Trap($trapText); $this->assertTrue(Dispatcher::handle($trap)); // check that the device was found $this->assertEquals($device->hostname, $trap->getDevice()->hostname); + + // check that eventlog was logged + $eventlog = Eventlog::latest('event_id')->first(); + $this->assertEquals($device->device_id, $eventlog->device_id, 'Trap eventlog device incorrect'); + $this->assertEquals('SNMP Trap: Device ' . $device->displayName() . ' was elected as new root on one of its Spanning Tree Instances', $eventlog->message, 'Trap eventlog message incorrect'); + $this->assertEquals('stp', $eventlog->type, 'Trap eventlog type incorrect'); + $this->assertEquals(3, $eventlog->severity, 'Trap eventlog severity incorrect'); } - public function testBridgeTopologyChanged() + public function testBridgeTopologyChanged(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:44298->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:44298->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 3:4:17:32.35 -SNMPv2-MIB::snmpTrapOID.0 BRIDGE-MIB::topologyChange"; - - Log::shouldReceive('event')->once()->with('SNMP Trap: Topology of Spanning Tree Instance on device ' . $device->displayName() . ' was changed', $device->device_id, 'stp', 3); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap)); - - // check that the device was found - $this->assertEquals($device->hostname, $trap->getDevice()->hostname); +SNMPv2-MIB::snmpTrapOID.0 BRIDGE-MIB::topologyChange +TRAP, + 'SNMP Trap: Topology of Spanning Tree Instance on device {{ hostname }} was changed', // assertTrapLogsMessage sets display to hostname + 'Failed to handle BRIDGE-MIB::topologyChange', + [3, 'stp'], + ); } - public function testColdStart() + public function testColdStart(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:44298->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:44298->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 0:0:1:12.7 -SNMPv2-MIB::snmpTrapOID.0 SNMPv2-MIB::coldStart"; - - Log::shouldReceive('event')->once()->with('SNMP Trap: Device ' . $device->displayName() . ' cold booted', $device->device_id, 'reboot', 4); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap)); - - // check that the device was found - $this->assertEquals($device->hostname, $trap->getDevice()->hostname); +SNMPv2-MIB::snmpTrapOID.0 SNMPv2-MIB::coldStart +TRAP, + 'SNMP Trap: Device {{ hostname }} cold booted', + 'Failed to handle SNMPv2-MIB::coldStart', + [4, 'reboot'], + ); } - public function testWarmStart() + public function testWarmStart(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:44298->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:44298->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 0:0:2:12.7 -SNMPv2-MIB::snmpTrapOID.0 SNMPv2-MIB::warmStart"; - - Log::shouldReceive('event')->once()->with('SNMP Trap: Device ' . $device->displayName() . ' warm booted', $device->device_id, 'reboot', 4); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap)); - - // check that the device was found - $this->assertEquals($device->hostname, $trap->getDevice()->hostname); +SNMPv2-MIB::snmpTrapOID.0 SNMPv2-MIB::warmStart +TRAP, + 'SNMP Trap: Device {{ hostname }} warm booted', + 'Failed to handle SNMPv2-MIB::warmStart', + [4, 'reboot'], + ); } - public function testEntityDatabaseChanged() + public function testEntityDatabaseChanged(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:44298->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:44298->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 3:4:17:32.35 -SNMPv2-MIB::snmpTrapOID.0 ENTITY-MIB::entConfigChange"; - - Log::shouldReceive('event')->once()->with('SNMP Trap: Configuration of Entity Database on device ' . $device->displayName() . ' was changed', $device->device_id, 'system', 3); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap)); - - // check that the device was found - $this->assertEquals($device->hostname, $trap->getDevice()->hostname); +SNMPv2-MIB::snmpTrapOID.0 ENTITY-MIB::entConfigChange +TRAP, + 'SNMP Trap: Configuration of Entity Database on device {{ hostname }} was changed', + 'Failed to handle ENTITY-MIB::entConfigChange', + [3, 'system'], + ); } } diff --git a/tests/Feature/SnmpTraps/CyberPowerTrapsTest.php b/tests/Feature/SnmpTraps/CyberPowerTrapsTest.php index 3b7948477b..fb55b274bc 100644 --- a/tests/Feature/SnmpTraps/CyberPowerTrapsTest.php +++ b/tests/Feature/SnmpTraps/CyberPowerTrapsTest.php @@ -25,370 +25,344 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class CyberPowerTrapsTest extends SnmpTrapTestCase { - public function testCpUpsOverload() + public function testCpUpsOverload(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:161->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:161->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 488:17:19:10.00 SNMPv2-MIB::snmpTrapOID.0 CPS-MIB::upsOverload -CPS-MIB::mtrapinfoString \"The UPS has sensed an overload condition.\" +CPS-MIB::mtrapinfoString "The UPS has sensed an overload condition." SNMP-COMMUNITY-MIB::snmpTrapAddress.0 $device->ip -SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 \"comstring\" -SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps"; - - $message = 'The UPS has sensed an overload condition.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 5); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle CpUpsOverload trap'); +SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 "comstring" +SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps +TRAP, + 'The UPS has sensed an overload condition.', + 'Could not handle CpUpsOverload trap', + [5], + ); } - public function testCpUpsDiagFailed() + public function testCpUpsDiagFailed(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:161->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:161->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 488:17:19:10.00 SNMPv2-MIB::snmpTrapOID.0 CPS-MIB::upsDiagnosticsFailed -CPS-MIB::mtrapinfoString \"The UPS battery test failed.\" +CPS-MIB::mtrapinfoString "The UPS battery test failed." SNMP-COMMUNITY-MIB::snmpTrapAddress.0 $device->ip -SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 \"comstring\" -SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps"; - - $message = 'The UPS battery test failed.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 5); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle CpUpsDiagFailed trap'); +SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 "comstring" +SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps +TRAP, + 'The UPS battery test failed.', + 'Could not handle CpUpsDiagFailed trap', + [5], + ); } - public function testCpUpsDischarged() + public function testCpUpsDischarged(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:161->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:161->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 488:17:19:10.00 SNMPv2-MIB::snmpTrapOID.0 CPS-MIB::upsDischarged -CPS-MIB::mtrapinfoString \"The UPS has started a runtime calibration process.\" +CPS-MIB::mtrapinfoString "The UPS has started a runtime calibration process." SNMP-COMMUNITY-MIB::snmpTrapAddress.0 $device->ip -SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 \"comstring\" -SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps"; - - $message = 'The UPS has started a runtime calibration process.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle CpUpsDischarged trap'); +SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 "comstring" +SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps +TRAP, + 'The UPS has started a runtime calibration process.', + 'Could not handle CpUpsDischarged trap', + ); } - public function testCpUpsOnBattery() + public function testCpUpsOnBattery(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:161->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:161->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 488:17:19:10.00 SNMPv2-MIB::snmpTrapOID.0 CPS-MIB::upsOnBattery -CPS-MIB::mtrapinfoString \"Utility power failed, transfer to backup mode.\" +CPS-MIB::mtrapinfoString "Utility power failed, transfer to backup mode." SNMP-COMMUNITY-MIB::snmpTrapAddress.0 $device->ip -SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 \"comstring\" -SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps"; - - $message = 'Utility power failed, transfer to backup mode.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 4); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle CpUpsOnBattery trap'); +SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 "comstring" +SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps +TRAP, + 'Utility power failed, transfer to backup mode.', + 'Could not handle CpUpsOnBattery trap', + [4], + ); } - public function testCpLowBattery() + public function testCpLowBattery(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:161->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:161->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 488:17:19:10.00 SNMPv2-MIB::snmpTrapOID.0 CPS-MIB::lowBattery -CPS-MIB::mtrapinfoString \"The UPS battery capacity is low than threshold, soon to be exhausted.\" +CPS-MIB::mtrapinfoString "The UPS battery capacity is low than threshold, soon to be exhausted." SNMP-COMMUNITY-MIB::snmpTrapAddress.0 $device->ip -SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 \"comstring\" -SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps"; - - $message = 'The UPS battery capacity is low than threshold, soon to be exhausted.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 4); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle CpLowBattery trap'); +SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 "comstring" +SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps +TRAP, + 'The UPS battery capacity is low than threshold, soon to be exhausted.', + 'Could not handle CpLowBattery trap', + [4], + ); } - public function testCpPowerRestored() + public function testCpPowerRestored(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:161->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:161->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 488:17:19:10.00 SNMPv2-MIB::snmpTrapOID.0 CPS-MIB::powerRestored -CPS-MIB::mtrapinfoString \"Utility power restored, return from backup mode.\" +CPS-MIB::mtrapinfoString "Utility power restored, return from backup mode." SNMP-COMMUNITY-MIB::snmpTrapAddress.0 $device->ip -SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 \"comstring\" -SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps"; - - $message = 'Utility power restored, return from backup mode.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 1); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle CpPowerRestored trap'); +SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 "comstring" +SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps +TRAP, + 'Utility power restored, return from backup mode.', + 'Could not handle CpPowerRestored trap', + [1], + ); } - public function testCpUpsDiagPassed() + public function testCpUpsDiagPassed(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:161->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:161->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 488:17:19:10.00 SNMPv2-MIB::snmpTrapOID.0 CPS-MIB::upsDiagnosticsPassed -CPS-MIB::mtrapinfoString \"The UPS battery test passed.\" +CPS-MIB::mtrapinfoString "The UPS battery test passed." SNMP-COMMUNITY-MIB::snmpTrapAddress.0 $device->ip -SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 \"comstring\" -SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps"; - - $message = 'The UPS battery test passed.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle CpUpsDiagPassed trap'); +SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 "comstring" +SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps +TRAP, + 'The UPS battery test passed.', + 'Could not handle CpUpsDiagPassed trap', + ); } - public function testCpRtnLowBattery() + public function testCpRtnLowBattery(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:161->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:161->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 488:17:19:10.00 SNMPv2-MIB::snmpTrapOID.0 CPS-MIB::returnFromLowBattery -CPS-MIB::mtrapinfoString \"The UPS has returned from a low battery condition.\" +CPS-MIB::mtrapinfoString "The UPS has returned from a low battery condition." SNMP-COMMUNITY-MIB::snmpTrapAddress.0 $device->ip -SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 \"comstring\" -SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps"; - - $message = 'The UPS has returned from a low battery condition.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 1); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle CpRtnLowBattery trap'); +SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 "comstring" +SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps +TRAP, + 'The UPS has returned from a low battery condition.', + 'Could not handle CpRtnLowBattery trap', + [1], + ); } - public function testCpUpsTurnedOff() + public function testCpUpsTurnedOff(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:161->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:161->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 488:17:19:10.00 SNMPv2-MIB::snmpTrapOID.0 CPS-MIB::upsTurnedOff -CPS-MIB::mtrapinfoString \"The UPS has been turned off.\" +CPS-MIB::mtrapinfoString "The UPS has been turned off." SNMP-COMMUNITY-MIB::snmpTrapAddress.0 $device->ip -SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 \"comstring\" -SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps"; - - $message = 'The UPS has been turned off.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 4); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle CpUpsTurnedOff trap'); +SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 "comstring" +SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps +TRAP, + 'The UPS has been turned off.', + 'Could not handle CpUpsTurnedOff trap', + [4], + ); } - public function testCpUpsSleeping() + public function testCpUpsSleeping(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:161->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:161->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 488:17:19:10.00 SNMPv2-MIB::snmpTrapOID.0 CPS-MIB::upsSleeping -CPS-MIB::mtrapinfoString \"The UPS entered sleep mode. Output power will not be provided.\" +CPS-MIB::mtrapinfoString "The UPS entered sleep mode. Output power will not be provided." SNMP-COMMUNITY-MIB::snmpTrapAddress.0 $device->ip -SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 \"comstring\" -SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps"; - - $message = 'The UPS entered sleep mode. Output power will not be provided.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 4); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle CpUpsSleeping trap'); +SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 "comstring" +SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps +TRAP, + 'The UPS entered sleep mode. Output power will not be provided.', + 'Could not handle CpUpsSleeping trap', + [4], + ); } - public function testCpUpsWokeUp() + public function testCpUpsWokeUp(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:161->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:161->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 488:17:19:10.00 SNMPv2-MIB::snmpTrapOID.0 CPS-MIB::upsWokeUp -CPS-MIB::mtrapinfoString \"The UPS woke up from sleep mode. Output power is being provided.\" +CPS-MIB::mtrapinfoString "The UPS woke up from sleep mode. Output power is being provided." SNMP-COMMUNITY-MIB::snmpTrapAddress.0 $device->ip -SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 \"comstring\" -SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps"; - - $message = 'The UPS woke up from sleep mode. Output power is being provided.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 1); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle CpUpsWokeUp trap'); +SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 "comstring" +SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps +TRAP, + 'The UPS woke up from sleep mode. Output power is being provided.', + 'Could not handle CpUpsWokeUp trap', + [1], + ); } - public function testCpUpsRebootStarted() + public function testCpUpsRebootStarted(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:161->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:161->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 488:17:19:10.00 SNMPv2-MIB::snmpTrapOID.0 CPS-MIB::upsRebootStarted -CPS-MIB::mtrapinfoString \"The UPS started reboot sequence.\" +CPS-MIB::mtrapinfoString "The UPS started reboot sequence." SNMP-COMMUNITY-MIB::snmpTrapAddress.0 $device->ip -SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 \"comstring\" -SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps"; - - $message = 'The UPS started reboot sequence.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 4); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle CpUpsRebootStarted trap'); +SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 "comstring" +SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps +TRAP, + 'The UPS started reboot sequence.', + 'Could not handle CpUpsRebootStarted trap', + [4], + ); } - public function testCpUpsOverTemp() + public function testCpUpsOverTemp(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:161->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:161->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 488:17:19:10.00 SNMPv2-MIB::snmpTrapOID.0 CPS-MIB::upsOverTemp -CPS-MIB::mtrapinfoString \"The UPS inner temperature is too high.\" +CPS-MIB::mtrapinfoString "The UPS inner temperature is too high." SNMP-COMMUNITY-MIB::snmpTrapAddress.0 $device->ip -SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 \"comstring\" -SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps"; - - $message = 'The UPS inner temperature is too high.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 5); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle CpUpsOverTemp trap'); +SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 "comstring" +SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps +TRAP, + 'The UPS inner temperature is too high.', + 'Could not handle CpUpsOverTemp trap', + [5], + ); } - public function testCpRtnOverTemp() + public function testCpRtnOverTemp(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:161->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:161->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 488:17:19:10.00 SNMPv2-MIB::snmpTrapOID.0 CPS-MIB::returnFromOverTemp -CPS-MIB::mtrapinfoString \"The UPS over temperature condition cleared.\" +CPS-MIB::mtrapinfoString "The UPS over temperature condition cleared." SNMP-COMMUNITY-MIB::snmpTrapAddress.0 $device->ip -SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 \"comstring\" -SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps"; - - $message = 'The UPS over temperature condition cleared.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 1); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle CpRtnOverTemp trap'); +SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 "comstring" +SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps +TRAP, + 'The UPS over temperature condition cleared.', + 'Could not handle CpRtnOverTemp trap', + [1], + ); } - public function testCpRtOverLoad() + public function testCpRtOverLoad(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:161->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:161->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 488:17:19:10.00 SNMPv2-MIB::snmpTrapOID.0 CPS-MIB::returnFromOverLoad -CPS-MIB::mtrapinfoString \"The UPS has returned from an overload condition.\" +CPS-MIB::mtrapinfoString "The UPS has returned from an overload condition." SNMP-COMMUNITY-MIB::snmpTrapAddress.0 $device->ip -SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 \"comstring\" -SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps"; - - $message = 'The UPS has returned from an overload condition.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 1); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle CpRtOverLoad trap'); +SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 "comstring" +SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps +TRAP, + 'The UPS has returned from an overload condition.', + 'Could not handle CpRtOverLoad trap', + [1], + ); } - public function testCpRtnDischarged() + public function testCpRtnDischarged(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:161->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:161->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 488:17:19:10.00 SNMPv2-MIB::snmpTrapOID.0 CPS-MIB::returnFromDischarged -CPS-MIB::mtrapinfoString \"The UPS runtime calibration completed.\" +CPS-MIB::mtrapinfoString "The UPS runtime calibration completed." SNMP-COMMUNITY-MIB::snmpTrapAddress.0 $device->ip -SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 \"comstring\" -SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps"; - - $message = 'The UPS runtime calibration completed.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 1); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle CpRtnDischarged trap'); +SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 "comstring" +SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps +TRAP, + 'The UPS runtime calibration completed.', + 'Could not handle CpRtnDischarged trap', + [1], + ); } - public function testCpUpsChargerFailure() + public function testCpUpsChargerFailure(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:161->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:161->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 488:17:19:10.00 SNMPv2-MIB::snmpTrapOID.0 CPS-MIB::upsChargerFailure -CPS-MIB::mtrapinfoString \"The battery charger is abnormal.\" +CPS-MIB::mtrapinfoString "The battery charger is abnormal." SNMP-COMMUNITY-MIB::snmpTrapAddress.0 $device->ip -SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 \"comstring\" -SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps"; - - $message = 'The battery charger is abnormal.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 4); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle CpUpsChargerFailure trap'); +SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 "comstring" +SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps +TRAP, + 'The battery charger is abnormal.', + 'Could not handle CpUpsChargerFailure trap', + [4], + ); } - public function testCpRtnChargerFailure() + public function testCpRtnChargerFailure(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:161->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:161->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 488:17:19:10.00 SNMPv2-MIB::snmpTrapOID.0 CPS-MIB::returnFromChargerFailure -CPS-MIB::mtrapinfoString \"The charger returned from a failure condition.\" +CPS-MIB::mtrapinfoString "The charger returned from a failure condition." SNMP-COMMUNITY-MIB::snmpTrapAddress.0 $device->ip -SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 \"comstring\" -SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps"; - - $message = 'The charger returned from a failure condition.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 1); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle CpRtnChargerFailure trap'); +SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 "comstring" +SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps +TRAP, + 'The charger returned from a failure condition.', + 'Could not handle CpRtnChargerFailure trap', + [1], + ); } - public function testCpUpsBatteryNotPresent() + public function testCpUpsBatteryNotPresent(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:161->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:161->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 488:17:19:10.00 SNMPv2-MIB::snmpTrapOID.0 CPS-MIB::upsBatteryNotPresent -CPS-MIB::mtrapinfoString \"Battery is not present.\" +CPS-MIB::mtrapinfoString "Battery is not present." SNMP-COMMUNITY-MIB::snmpTrapAddress.0 $device->ip -SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 \"comstring\" -SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps"; - - $message = 'Battery is not present.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle CpUpsBatteryNotPresent trap'); +SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 "comstring" +SNMPv2-MIB::snmpTrapEnterprise.0 CPS-MIB::cps +TRAP, + 'Battery is not present.', + 'Could not handle CpUpsBatteryNotPresent trap', + ); } } diff --git a/tests/Feature/SnmpTraps/FgTrapAvOversizeTest.php b/tests/Feature/SnmpTraps/FgTrapAvOversizeTest.php index ff2a550258..2b468b467d 100644 --- a/tests/Feature/SnmpTraps/FgTrapAvOversizeTest.php +++ b/tests/Feature/SnmpTraps/FgTrapAvOversizeTest.php @@ -25,26 +25,20 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class FgTrapAvOversizeTest extends SnmpTrapTestCase { - public function testAvOversize() + public function testAvOversize(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 302:12:56:24.81 SNMPv2-MIB::snmpTrapOID.0 FORTINET-FORTIGATE-MIB::fgTrapAvOversize FORTINET-CORE-MIB::fnSysSerial.0 $device->serial -SNMPv2-MIB::sysName.0 $device->hostname"; - - $message = "$device->hostname received a file that exceeds proxy buffer, skipping AV scan"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle fgTrapIpsAvOversize'); +SNMPv2-MIB::sysName.0 $device->hostname +TRAP, + '{{ hostname }} received a file that exceeds proxy buffer, skipping AV scan', + 'Could not handle fgTrapIpsAvOversize', + ); } } diff --git a/tests/Feature/SnmpTraps/FgTrapIpsTest.php b/tests/Feature/SnmpTraps/FgTrapIpsTest.php index 7870105641..fbeee0d7df 100644 --- a/tests/Feature/SnmpTraps/FgTrapIpsTest.php +++ b/tests/Feature/SnmpTraps/FgTrapIpsTest.php @@ -27,16 +27,19 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; use App\Models\Device; use App\Models\Ipv4Address; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; +use Illuminate\Foundation\Testing\DatabaseTransactions; +use LibreNMS\Tests\Traits\RequiresDatabase; class FgTrapIpsTest extends SnmpTrapTestCase { - public function testIpsAnomaly() + use RequiresDatabase; + use DatabaseTransactions; + + public function testIpsAnomaly(): void { $device = Device::factory()->create(); /** @var Device $device */ $ipv4 = Ipv4Address::factory()->make(); /** @var Ipv4Address $ipv4 */ - $trapText = "$device->hostname + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 302:12:56:24.81 SNMPv2-MIB::snmpTrapOID.0 FORTINET-FORTIGATE-MIB::fgTrapIpsAnomaly @@ -44,50 +47,46 @@ FORTINET-CORE-MIB::fnSysSerial.0 $device->serial SNMPv2-MIB::sysName.0 $device->hostname FORTINET-FORTIGATE-MIB::fgIpsTrapSigId.0 2 FORTINET-FORTIGATE-MIB::fgIpsTrapSrcIp.0 $ipv4->ipv4_address -FORTINET-FORTIGATE-MIB::fgIpsTrapSigMsg.0 tcp_src_session"; - - $message = "DDoS prevention triggered. Source: $ipv4->ipv4_address Protocol: tcp_src_session"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 4); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle fgTrapIpsAnomaly trap'); +FORTINET-FORTIGATE-MIB::fgIpsTrapSigMsg.0 tcp_src_session", + "DDoS prevention triggered. Source: $ipv4->ipv4_address Protocol: tcp_src_session", + 'Could not handle fgTrapIpsAnomaly trap', + [4], + $device, + ); } - public function testIpsPkgUdate() + public function testIpsPkgUdate(): void { $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 302:12:56:24.81 SNMPv2-MIB::snmpTrapOID.0 FORTINET-FORTIGATE-MIB::fgTrapIpsPkgUpdate FORTINET-CORE-MIB::fnSysSerial.0 $device->serial -SNMPv2-MIB::sysName.0 $device->hostname"; - - $message = "IPS package updated on $device->hostname"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle fgTrapIpsPkgUpdate trap'); +SNMPv2-MIB::sysName.0 $device->hostname", + "IPS package updated on $device->hostname", + 'Could not handle fgTrapIpsPkgUpdate trap', + device: $device, + ); } - public function testIpsSignature() + public function testIpsSignature(): void { $device = Device::factory()->create(); /** @var Device $device */ $ipv4 = Ipv4Address::factory()->make(); /** @var Ipv4Address $ipv4 */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage("{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 302:12:56:24.81 SNMPv2-MIB::snmpTrapOID.0 FORTINET-FORTIGATE-MIB::fgTrapIpsSignature FORTINET-CORE-MIB::fnSysSerial.0 $device->serial SNMPv2-MIB::sysName.0 $device->hostname FORTINET-FORTIGATE-MIB::fgIpsTrapSigId.0 47173 FORTINET-FORTIGATE-MIB::fgIpsTrapSrcIp.0 $ipv4->ipv4_address -FORTINET-FORTIGATE-MIB::fgIpsTrapSigMsg.0 UPnP.SSDP.M.Search.Anomaly"; - - $message = "IPS signature UPnP.SSDP.M.Search.Anomaly detected from $ipv4->ipv4_address with Fortiguard ID 47173"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 4); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle fgTrapIpsSignature trap'); +FORTINET-FORTIGATE-MIB::fgIpsTrapSigMsg.0 UPnP.SSDP.M.Search.Anomaly", + "IPS signature UPnP.SSDP.M.Search.Anomaly detected from $ipv4->ipv4_address with Fortiguard ID 47173", + 'Could not handle fgTrapIpsSignature trap', + [4], + $device, + ); } } diff --git a/tests/Feature/SnmpTraps/FgTrapVpnTunTest.php b/tests/Feature/SnmpTraps/FgTrapVpnTunTest.php index a455109370..ee028ddc0c 100644 --- a/tests/Feature/SnmpTraps/FgTrapVpnTunTest.php +++ b/tests/Feature/SnmpTraps/FgTrapVpnTunTest.php @@ -27,16 +27,19 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; use App\Models\Device; use App\Models\Ipv4Address; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; +use Illuminate\Foundation\Testing\DatabaseTransactions; +use LibreNMS\Tests\Traits\RequiresDatabase; class FgTrapVpnTunTest extends SnmpTrapTestCase { - public function testVpnTunDown() + use RequiresDatabase; + use DatabaseTransactions; + + public function testVpnTunDown(): void { $device = Device::factory()->create(); /** @var Device $device */ $ipv4 = Ipv4Address::factory()->make(); /** @var Ipv4Address $ipv4 */ - $trapText = "$device->hostname + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 302:12:56:24.81 SNMPv2-MIB::snmpTrapOID.0 FORTINET-FORTIGATE-MIB::fgTrapVpnTunDown @@ -44,32 +47,30 @@ FORTINET-CORE-MIB::fnSysSerial.0 $device->serial SNMPv2-MIB::sysName.0 $device->hostname FORTINET-FORTIGATE-MIB::fgVpnTrapLocalGateway.0 $device->ip FORTINET-FORTIGATE-MIB::fgVpnTrapRemoteGateway.0 $ipv4->ipv4_address -FORTINET-FORTIGATE-MIB::fgVpnTrapPhase1Name.0 test_tunnel_down"; - - $message = "VPN tunnel test_tunnel_down to $ipv4->ipv4_address is down"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 3); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle fgTrapVpnTunDown'); +FORTINET-FORTIGATE-MIB::fgVpnTrapPhase1Name.0 test_tunnel_down", + "VPN tunnel test_tunnel_down to $ipv4->ipv4_address is down", + 'Could not handle fgTrapVpnTunDown', + [3], + $device, + ); } - public function testVpnTunUp() + public function testVpnTunUp(): void { $device = Device::factory()->create(); /** @var Device $device */ $ipv4 = Ipv4Address::factory()->make(); /** @var Ipv4Address $ipv4 */ - $trapText = "$device->hostname + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 302:12:56:24.81 SNMPv2-MIB::snmpTrapOID.0 FORTINET-FORTIGATE-MIB::fgTrapVpnTunUp SNMPv2-MIB::sysName.0 $device->hostname FORTINET-FORTIGATE-MIB::fgVpnTrapLocalGateway.0 $device->ip FORTINET-FORTIGATE-MIB::fgVpnTrapRemoteGateway.0 $ipv4->ipv4_address -FORTINET-FORTIGATE-MIB::fgVpnTrapPhase1Name.0 test_tunnel_up"; - - $message = "VPN tunnel test_tunnel_up to $ipv4->ipv4_address is up"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 1); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle fgTrapVpnTunUp'); +FORTINET-FORTIGATE-MIB::fgVpnTrapPhase1Name.0 test_tunnel_up", + "VPN tunnel test_tunnel_up to $ipv4->ipv4_address is up", + 'Could not handle fgTrapVpnTunUp', + [1], + $device, + ); } } diff --git a/tests/Feature/SnmpTraps/FmTrapLogRateThresholdTest.php b/tests/Feature/SnmpTraps/FmTrapLogRateThresholdTest.php index 681047ac39..472a25f909 100644 --- a/tests/Feature/SnmpTraps/FmTrapLogRateThresholdTest.php +++ b/tests/Feature/SnmpTraps/FmTrapLogRateThresholdTest.php @@ -25,28 +25,23 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class FmTrapLogRateThresholdTest extends SnmpTrapTestCase { - public function testAvOversize() + public function testAvOversize(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 302:12:56:24.81 SNMPv2-MIB::snmpTrapOID.0 FORTINET-FORTIMANAGER-FORTIANALYZER-MIB::fmTrapLogRateThreshold FORTINET-CORE-MIB::fnSysSerial.0 $device->serial SNMPv2-MIB::sysName.0 $device->hostname FORTINET-FORTIMANAGER-FORTIANALYZER-MIB::fmLogRate.0 315 -FORTINET-FORTIMANAGER-FORTIANALYZER-MIB::fmLogRateThreshold.0 260"; - - $message = 'Recommended log rate exceeded. Current Rate: 315 Recommended Rate: 260'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 3); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle fmTrapLogRateThreshold trap'); +FORTINET-FORTIMANAGER-FORTIANALYZER-MIB::fmLogRateThreshold.0 260 +TRAP, + 'Recommended log rate exceeded. Current Rate: 315 Recommended Rate: 260', + 'Could not handle fmTrapLogRateThreshold trap', + [3], + ); } } diff --git a/tests/Feature/SnmpTraps/HpFaultTest.php b/tests/Feature/SnmpTraps/HpFaultTest.php index 83f7311e3d..b0e24b679d 100644 --- a/tests/Feature/SnmpTraps/HpFaultTest.php +++ b/tests/Feature/SnmpTraps/HpFaultTest.php @@ -22,75 +22,64 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class HpFaultTest extends SnmpTrapTestCase { public function testBadCable(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:44298->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:44298->[192.168.5.5]:162 SNMPv2-MIB::snmpTrapOID.0 HP-ICF-FAULT-FINDER-MIB::hpicfFaultFinderTrap DISMAN-EVENT-MIB::sysUpTimeInstance 133:19:41:09.17 HP-ICF-FAULT-FINDER-MIB::hpicfFfLogFaultType.1510 badCable HP-ICF-FAULT-FINDER-MIB::hpicfFfLogAction.1510 warn HP-ICF-FAULT-FINDER-MIB::hpicfFfLogSeverity.1510 medium -HP-ICF-FAULT-FINDER-MIB::hpicfFfFaultInfoURL.0.1510 http:\/\/$device->ip\/cgi\/fDetail?index=1510 -SNMP-COMMUNITY-MIB::snmpTrapAddress.0 $device->ip +HP-ICF-FAULT-FINDER-MIB::hpicfFfFaultInfoURL.0.1510 http:\/\/{{ ip }}\/cgi\/fDetail?index=1510 +SNMP-COMMUNITY-MIB::snmpTrapAddress.0 {{ ip }} SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 public -SNMPv2-MIB::snmpTrapEnterprise.0 HP-ICF-OID::hpicfCommonTraps"; - - $message = "Fault - Bad Cable http:\/\/$device->ip\/cgi\/fDetail?index=1510"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'badCable', 4); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle HP-ICF-FAULT-FINDER-MIB::hpicfFaultFinderTrap trap'); +SNMPv2-MIB::snmpTrapEnterprise.0 HP-ICF-OID::hpicfCommonTraps +TRAP, + "Fault - Bad Cable http:\/\/{{ ip }}\/cgi\/fDetail?index=1510", + 'Could not handle HP-ICF-FAULT-FINDER-MIB::hpicfFaultFinderTrap trap', + [4, 'badCable'], + ); } public function testBadDriver(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:44298->[192.168.5.5]:162 + $this->assertTrapLogsMessage("{{ hostname }} +UDP: [{{ ip }}]:44298->[192.168.5.5]:162 SNMPv2-MIB::snmpTrapOID.0 HP-ICF-FAULT-FINDER-MIB::hpicfFaultFinderTrap DISMAN-EVENT-MIB::sysUpTimeInstance 133:19:41:09.17 HP-ICF-FAULT-FINDER-MIB::hpicfFfLogFaultType.1510 badDriver HP-ICF-FAULT-FINDER-MIB::hpicfFfLogAction.1510 warn HP-ICF-FAULT-FINDER-MIB::hpicfFfLogSeverity.1510 medium -HP-ICF-FAULT-FINDER-MIB::hpicfFfFaultInfoURL.0.1510 http:\/\/$device->ip\/cgi\/fDetail?index=1510 -SNMP-COMMUNITY-MIB::snmpTrapAddress.0 $device->ip +HP-ICF-FAULT-FINDER-MIB::hpicfFfFaultInfoURL.0.1510 http:\/\/{{ ip }}\/cgi\/fDetail?index=1510 +SNMP-COMMUNITY-MIB::snmpTrapAddress.0 {{ ip }} SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 public -SNMPv2-MIB::snmpTrapEnterprise.0 HP-ICF-OID::hpicfCommonTraps"; - - $message = "Fault - Unhandled http:\/\/$device->ip\/cgi\/fDetail?index=1510"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'badDriver', 2); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle HP-ICF-FAULT-FINDER-MIB::hpicfFaultFinderTrap trap'); +SNMPv2-MIB::snmpTrapEnterprise.0 HP-ICF-OID::hpicfCommonTraps", + "Fault - Unhandled http:\/\/{{ ip }}\/cgi\/fDetail?index=1510", + 'Could not handle HP-ICF-FAULT-FINDER-MIB::hpicfFaultFinderTrap trap', + [2, 'badDriver'], + ); } public function testBcastStorm(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:44298->[192.168.5.5]:162 + $this->assertTrapLogsMessage("{{ hostname }} +UDP: [{{ ip }}]:44298->[192.168.5.5]:162 SNMPv2-MIB::snmpTrapOID.0 HP-ICF-FAULT-FINDER-MIB::hpicfFaultFinderTrap DISMAN-EVENT-MIB::sysUpTimeInstance 133:19:41:09.17 HP-ICF-FAULT-FINDER-MIB::hpicfFfLogFaultType.1510 bcastStorm HP-ICF-FAULT-FINDER-MIB::hpicfFfLogAction.1510 warn HP-ICF-FAULT-FINDER-MIB::hpicfFfLogSeverity.1510 medium -HP-ICF-FAULT-FINDER-MIB::hpicfFfFaultInfoURL.0.1510 http:\/\/$device->ip\/cgi\/fDetail?index=1510 -SNMP-COMMUNITY-MIB::snmpTrapAddress.0 $device->ip +HP-ICF-FAULT-FINDER-MIB::hpicfFfFaultInfoURL.0.1510 http:\/\/{{ ip }}\/cgi\/fDetail?index=1510 +SNMP-COMMUNITY-MIB::snmpTrapAddress.0 {{ ip }} SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 public -SNMPv2-MIB::snmpTrapEnterprise.0 HP-ICF-OID::hpicfCommonTraps"; - - $message = "Fault - Broadcaststorm http:\/\/$device->ip\/cgi\/fDetail?index=1510"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'bcastStorm', 5); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle HP-ICF-FAULT-FINDER-MIB::hpicfFaultFinderTrap trap'); +SNMPv2-MIB::snmpTrapEnterprise.0 HP-ICF-OID::hpicfCommonTraps", + "Fault - Broadcaststorm http:\/\/{{ ip }}\/cgi\/fDetail?index=1510", + 'Could not handle HP-ICF-FAULT-FINDER-MIB::hpicfFaultFinderTrap trap', + [5, 'bcastStorm'], + ); } } diff --git a/tests/Feature/SnmpTraps/JnxBgpM2Test.php b/tests/Feature/SnmpTraps/JnxBgpM2Test.php index 1ed78910c7..b3371372ca 100644 --- a/tests/Feature/SnmpTraps/JnxBgpM2Test.php +++ b/tests/Feature/SnmpTraps/JnxBgpM2Test.php @@ -29,92 +29,96 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; use App\Models\BgpPeer; use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; +use Illuminate\Foundation\Testing\DatabaseTransactions; +use LibreNMS\Tests\Traits\RequiresDatabase; class JnxBgpM2Test extends SnmpTrapTestCase { - public function testBgpPeerUnknown() + use RequiresDatabase; + use DatabaseTransactions; + + public function testBgpPeerUnknown(): void { $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:64610->[192.168.5.5]:162 -DISMAN-EVENT-MIB::sysUpTimeInstance 198:2:10:48.91 -SNMPv2-MIB::snmpTrapOID.0 BGP4-V2-MIB-JUNIPER::jnxBgpM2BackwardTransition -BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerLocalAddrType.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 ipv6 -BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerLocalAddr.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 \"20 01 0D 88 00 01 00 00 00 00 00 00 00 00 00 01 \" -BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerRemoteAddrType.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 ipv6 -BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerRemoteAddr.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 \"20 01 0D 88 00 01 00 00 00 00 00 00 00 00 00 02 \" -BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerLastErrorReceived.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 \"00 00 \" -BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerState.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 idle -SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX240"; - - $trap = new Trap($trapText); - $error = 'Unknown bgp peer handling bgpEstablished trap: 2001:d88:1::2'; \Log::shouldReceive('error')->once()->with($error); - $message = 'BGP Peer 2001:d88:1::2 is now in the idle state'; - \Log::shouldReceive('event')->never()->with($message, $device->device_id, 'trap', 3); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle JnxBgpM2BackwardsTransition trap'); - } - - public function testBgpBackwardTrasition() - { - $device = Device::factory()->create(); /** @var Device $device */ - $bgppeer = BgpPeer::factory()->make(['bgpPeerIdentifier' => '2001:d88:1::2', 'bgpPeerState' => 'established']); /** @var BgpPeer $bgppeer */ - $device->bgppeers()->save($bgppeer); - - $trapText = "$device->hostname -UDP: [$device->ip]:64610->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:64610->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 198:2:10:48.91 SNMPv2-MIB::snmpTrapOID.0 BGP4-V2-MIB-JUNIPER::jnxBgpM2BackwardTransition BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerLocalAddrType.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 ipv6 -BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerLocalAddr.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 \"20 01 0D 88 00 01 00 00 00 00 00 00 00 00 00 01 \" +BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerLocalAddr.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 "20 01 0D 88 00 01 00 00 00 00 00 00 00 00 00 01 " BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerRemoteAddrType.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 ipv6 -BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerRemoteAddr.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 \"20 01 0D 88 00 01 00 00 00 00 00 00 00 00 00 02 \" -BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerLastErrorReceived.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 \"00 00 \" +BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerRemoteAddr.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 "20 01 0D 88 00 01 00 00 00 00 00 00 00 00 00 02 " +BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerLastErrorReceived.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 "00 00 " BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerState.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 idle -SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX240"; +SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX240 +TRAP, + [], // no log entries should be sent + 'Could not handle JnxBgpM2BackwardsTransition trap', + device: $device, + ); + } - $trap = new Trap($trapText); + public function testBgpBackwardTransition(): void + { + $device = Device::factory()->create(); + /** @var Device $device */ + $bgppeer = BgpPeer::factory()->make(['bgpPeerIdentifier' => '2001:d88:1::2', 'bgpPeerState' => 'established']); + /** @var BgpPeer $bgppeer */ + $device->bgppeers()->save($bgppeer); $error = 'Unknown bgp peer handling bgpEstablished trap: 2001:d88:1::2'; \Log::shouldReceive('error')->never()->with($error); - $message = 'BGP Peer 2001:d88:1::2 is now in the idle state'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 5); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle JnxBgpM2BackwardsTransition trap'); + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:64610->[192.168.5.5]:162 +DISMAN-EVENT-MIB::sysUpTimeInstance 198:2:10:48.91 +SNMPv2-MIB::snmpTrapOID.0 BGP4-V2-MIB-JUNIPER::jnxBgpM2BackwardTransition +BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerLocalAddrType.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 ipv6 +BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerLocalAddr.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 "20 01 0D 88 00 01 00 00 00 00 00 00 00 00 00 01 " +BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerRemoteAddrType.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 ipv6 +BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerRemoteAddr.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 "20 01 0D 88 00 01 00 00 00 00 00 00 00 00 00 02 " +BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerLastErrorReceived.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 "00 00 " +BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerState.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 idle +SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX240 +TRAP, + 'BGP Peer 2001:d88:1::2 is now in the idle state', + 'Could not handle JnxBgpM2BackwardsTransition trap', + [5], + $device, + ); } - public function testBgpEstablished() + public function testBgpEstablished(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $bgppeer = BgpPeer::factory()->make(['bgpPeerIdentifier' => '2001:d88:1::2', 'bgpPeerState' => 'idle']); /** @var BgpPeer $bgppeer */ + $device = Device::factory()->create(); + /** @var Device $device */ + $bgppeer = BgpPeer::factory()->make(['bgpPeerIdentifier' => '2001:d88:1::2', 'bgpPeerState' => 'idle']); + /** @var BgpPeer $bgppeer */ $device->bgppeers()->save($bgppeer); - $trapText = "$device->hostname -UDP: [$device->ip]:64610->[192.168.5.5]:162 + $error = 'Unknown bgp peer handling bgpEstablished trap: 2001:d88:1::2'; + \Log::shouldReceive('error')->never()->with($error); + + $this->assertTrapLogsMessage('{{ hostname }} +UDP: [{{ ip }}]:64610->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 198:2:10:48.91 SNMPv2-MIB::snmpTrapOID.0 BGP4-V2-MIB-JUNIPER::jnxBgpM2Established BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerLocalAddrType.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 ipv6 -BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerLocalAddr.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 \"20 01 0D 88 00 01 00 00 00 00 00 00 00 00 00 01 \" +BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerLocalAddr.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 "20 01 0D 88 00 01 00 00 00 00 00 00 00 00 00 01 " BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerRemoteAddrType.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 ipv6 -BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerRemoteAddr.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 \"20 01 0D 88 00 01 00 00 00 00 00 00 00 00 00 02 \" -BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerLastErrorReceived.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 \"00 00 \" +BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerRemoteAddr.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 "20 01 0D 88 00 01 00 00 00 00 00 00 00 00 00 02 " +BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerLastErrorReceived.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 "00 00 " BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerState.0.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.1.2.32.1.13.136.0.1.0.0.0.0.0.0.0.0.0.2 established -SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX240"; - - $trap = new Trap($trapText); - - $error = 'Unknown bgp peer handling bgpEstablished trap: 2001:d88:1::2'; - \Log::shouldReceive('error')->never()->with($error); - - $message = 'BGP Peer 2001:d88:1::2 is now in the established state'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 1); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle JnxBgpM2Established trap'); +SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX240', + 'BGP Peer 2001:d88:1::2 is now in the established state', + 'Could not handle JnxBgpM2Established trap', + [1], + $device, + ); } } diff --git a/tests/Feature/SnmpTraps/JnxCmCfgChangeTest.php b/tests/Feature/SnmpTraps/JnxCmCfgChangeTest.php index 9301495622..7a9f6b7eef 100644 --- a/tests/Feature/SnmpTraps/JnxCmCfgChangeTest.php +++ b/tests/Feature/SnmpTraps/JnxCmCfgChangeTest.php @@ -27,49 +27,41 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class JnxCmCfgChangeTest extends SnmpTrapTestCase { - public function testConfigChangeTrap() + public function testConfigChangeTrap(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:64610->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:64610->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 198:2:10:48.91 SNMPv2-MIB::snmpTrapOID.0 JUNIPER-CFGMGMT-MIB::jnxCmCfgChange JUNIPER-CFGMGMT-MIB::jnxCmCfgChgEventTime.54 316:13:26:37.65 JUNIPER-CFGMGMT-MIB::jnxCmCfgChgEventDate.54 2018-11-21,7:34:39.0,-6:0 JUNIPER-CFGMGMT-MIB::jnxCmCfgChgEventSource.54 cli JUNIPER-CFGMGMT-MIB::jnxCmCfgChgEventUser.54 TestUser -SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameEX2200"; - - $trap = new Trap($trapText); - $message = 'Config modified by TestUser from cli at 2018-11-21,7:34:39.0,-6:0'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle JnxCmCfgChange trap'); +SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameEX2200 +TRAP, + 'Config modified by TestUser from cli at 2018-11-21,7:34:39.0,-6:0', + 'Could not handle JnxCmCfgChange trap', + ); } - public function testConfigRollbackTrap() + public function testConfigRollbackTrap(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:64610->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:64610->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 198:2:10:48.91 SNMPv2-MIB::snmpTrapOID.0 JUNIPER-CFGMGMT-MIB::jnxCmCfgChange JUNIPER-CFGMGMT-MIB::jnxCmCfgChgEventTime.54 316:13:26:37.65 JUNIPER-CFGMGMT-MIB::jnxCmCfgChgEventDate.54 2017-12-21,7:34:39.0,-6:0 JUNIPER-CFGMGMT-MIB::jnxCmCfgChgEventSource.54 other JUNIPER-CFGMGMT-MIB::jnxCmCfgChgEventUser.54 root -SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameEX2200"; - - $trap = new Trap($trapText); - $message = 'Config rolled back at 2017-12-21,7:34:39.0,-6:0'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle JnxCmCfgChange config rolled back'); +SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameEX2200 +TRAP, + 'Config rolled back at 2017-12-21,7:34:39.0,-6:0', + 'Could not handle JnxCmCfgChange config rolled back', + ); } } diff --git a/tests/Feature/SnmpTraps/JnxDomAlarmTest.php b/tests/Feature/SnmpTraps/JnxDomAlarmTest.php index cfa0355466..f3a1986331 100644 --- a/tests/Feature/SnmpTraps/JnxDomAlarmTest.php +++ b/tests/Feature/SnmpTraps/JnxDomAlarmTest.php @@ -29,16 +29,19 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; use App\Models\Device; use App\Models\Port; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; +use Illuminate\Foundation\Testing\DatabaseTransactions; +use LibreNMS\Tests\Traits\RequiresDatabase; class JnxDomAlarmTest extends SnmpTrapTestCase { - public function testJnxDomAlarmSetTrap() + use RequiresDatabase; + use DatabaseTransactions; + + public function testJnxDomAlarmSetTrap(): void { $device = Device::factory()->create(); /** @var Device $device */ $port = Port::factory()->make(); /** @var Port $port */ - $trapText = "$device->hostname + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:64610->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 198:2:10:48.91 SNMPv2-MIB::snmpTrapOID.0 JUNIPER-DOM-MIB::jnxDomAlarmSet @@ -46,20 +49,19 @@ IF-MIB::ifDescr.$port->ifIndex $port->ifDescr JUNIPER-DOM-MIB::jnxDomLastAlarms.$port->ifIndex \"00 00 00 \" JUNIPER-DOM-MIB::jnxDomCurrentAlarms.$port->ifIndex \"80 00 00 \" JUNIPER-DOM-MIB::jnxDomCurrentAlarmDate.$port->ifIndex 2019-4-17,0:4:51.0,-5:0 -SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameMX480"; - - $trap = new Trap($trapText); - $message = "DOM alarm set for interface $port->ifDescr. Current alarm(s): input loss of signal"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 5); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle JnxDomAlarmSet'); +SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameMX480", + "DOM alarm set for interface $port->ifDescr. Current alarm(s): input loss of signal", + 'Could not handle JnxDomAlarmSet', + [5], + $device, + ); } - public function testJnxDomAlarmClearTrap() + public function testJnxDomAlarmClearTrap(): void { $device = Device::factory()->create(); /** @var Device $device */ $port = Port::factory()->make(); /** @var Port $port */ - $trapText = "$device->hostname + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:64610->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 198:2:10:48.91 SNMPv2-MIB::snmpTrapOID.0 JUNIPER-DOM-MIB::jnxDomAlarmCleared @@ -67,12 +69,11 @@ IF-MIB::ifDescr.$port->ifIndex $port->ifDescr JUNIPER-DOM-MIB::jnxDomLastAlarms.$port->ifIndex \"00 00 00 \" JUNIPER-DOM-MIB::jnxDomCurrentAlarms.$port->ifIndex \"E8 01 00 \" JUNIPER-DOM-MIB::jnxDomCurrentAlarmDate.$port->ifIndex 2019-4-17,0:4:51.0,-5:0 -SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameMX480"; - - $trap = new Trap($trapText); - $message = "DOM alarm cleared for interface $port->ifDescr. Cleared alarm(s): input loss of signal, input loss of lock, input rx path not ready, input laser power low, module not ready"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 1); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle JnxDomAlarmCleared'); +SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameMX480", + "DOM alarm cleared for interface $port->ifDescr. Cleared alarm(s): input loss of signal, input loss of lock, input rx path not ready, input laser power low, module not ready", + 'Could not handle JnxDomAlarmCleared', + [1], + $device, + ); } } diff --git a/tests/Feature/SnmpTraps/JnxDomLaneAlarmTest.php b/tests/Feature/SnmpTraps/JnxDomLaneAlarmTest.php index 4fcf1ea13c..58024812fb 100644 --- a/tests/Feature/SnmpTraps/JnxDomLaneAlarmTest.php +++ b/tests/Feature/SnmpTraps/JnxDomLaneAlarmTest.php @@ -29,18 +29,26 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; use App\Models\Device; use App\Models\Port; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; +use Illuminate\Foundation\Testing\DatabaseTransactions; +use LibreNMS\Tests\Traits\RequiresDatabase; class JnxDomLaneAlarmTest extends SnmpTrapTestCase { - public function testJnxDomLaneAlarmSetTrap() + use RequiresDatabase; + use DatabaseTransactions; + + public function testJnxDomLaneAlarmSetTrap(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $port = Port::factory()->make(['ifAdminStatus' => 'up', 'ifOperStatus' => 'up']); /** @var Port $port */ + $device = Device::factory()->create(); + /** @var Device $device */ + $port = Port::factory()->make(['ifAdminStatus' => 'up', 'ifOperStatus' => 'up']); + /** @var Port $port */ $device->ports()->save($port); - $trapText = "$device->hostname + $warning = "Snmptrap JnxDomLaneAlarmSet: Could not find port at ifIndex $port->ifIndex for device: $device->hostname"; + \Log::shouldReceive('warning')->never()->with($warning); + + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:64610->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 198:2:10:48.91 SNMPv2-MIB::snmpTrapOID.0 JUNIPER-DOM-MIB::jnxDomLaneAlarmSet @@ -49,24 +57,26 @@ JUNIPER-DOM-MIB::jnxDomLaneIndex.$port->ifIndex 0 JUNIPER-DOM-MIB::jnxDomLaneLastAlarms.$port->ifIndex \"00 00 00 \" JUNIPER-DOM-MIB::jnxDomCurrentLaneAlarms.$port->ifIndex \"40 00 00 \" JUNIPER-DOM-MIB::jnxDomCurrentLaneAlarmDate.$port->ifIndex 2019-4-10,0:9:35.0,-5:0 -SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameMX960"; - - \Log::shouldReceive('warning')->never()->with("Snmptrap JnxDomLaneAlarmSet: Could not find port at ifIndex $port->ifIndex for device: $device->hostname"); - - $trap = new Trap($trapText); - $message = "DOM lane alarm on interface $port->ifDescr lane 0. Current alarm(s): input signal low"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 5); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle JnxDomLaneAlarmSet'); +SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameMX960", + "DOM lane alarm on interface $port->ifDescr lane 0. Current alarm(s): input signal low", + 'Could not handle JnxDomLaneAlarmSet', + [5], + $device, + ); } - public function testJnxDomLaneAlarmClearedTrap() + public function testJnxDomLaneAlarmClearedTrap(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $port = Port::factory()->make(['ifAdminStatus' => 'up', 'ifOperStatus' => 'up']); /** @var Port $port */ + $device = Device::factory()->create(); + /** @var Device $device */ + $port = Port::factory()->make(['ifAdminStatus' => 'up', 'ifOperStatus' => 'up']); + /** @var Port $port */ $device->ports()->save($port); - $trapText = "$device->hostname + $warning = "Snmptrap JnxDomLaneAlarmCleared: Could not find port at ifIndex $port->ifIndex for device: $device->hostname"; + \Log::shouldReceive('warning')->never()->with($warning); + + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:64610->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 198:2:10:48.91 SNMPv2-MIB::snmpTrapOID.0 JUNIPER-DOM-MIB::jnxDomLaneAlarmCleared @@ -75,14 +85,11 @@ JUNIPER-DOM-MIB::jnxDomLaneIndex.$port->ifIndex 0 JUNIPER-DOM-MIB::jnxDomLaneLastAlarms.$port->ifIndex \"00 00 00 \" JUNIPER-DOM-MIB::jnxDomCurrentLaneAlarms.$port->ifIndex \"08 00 00 \" JUNIPER-DOM-MIB::jnxDomCurrentLaneAlarmDate.$port->ifIndex 2019-4-10,0:9:35.0,-5:0 -SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameMX960"; - - \Log::shouldReceive('warning')->never()->with("Snmptrap JnxDomLaneAlarmCleared: Could not find port at ifIndex $port->ifIndex for device: $device->hostname"); - - $trap = new Trap($trapText); - $message = "DOM lane alarm cleared on interface $port->ifDescr lane 0. Current alarm(s): output signal high"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 1); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle JnxDomLaneAlarmCleared'); +SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameMX960", + "DOM lane alarm cleared on interface $port->ifDescr lane 0. Current alarm(s): output signal high", + 'Could not handle JnxDomLaneAlarmCleared', + [1], + $device, + ); } } diff --git a/tests/Feature/SnmpTraps/JnxLdpLspTest.php b/tests/Feature/SnmpTraps/JnxLdpLspTest.php index 85c19ea7c9..29ba90c6e1 100644 --- a/tests/Feature/SnmpTraps/JnxLdpLspTest.php +++ b/tests/Feature/SnmpTraps/JnxLdpLspTest.php @@ -29,16 +29,19 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; use App\Models\Device; use App\Models\Ipv4Address; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; +use Illuminate\Foundation\Testing\DatabaseTransactions; +use LibreNMS\Tests\Traits\RequiresDatabase; class JnxLdpLspTest extends SnmpTrapTestCase { - public function testLdpLspDownTrap() + use RequiresDatabase; + use DatabaseTransactions; + + public function testLdpLspDownTrap(): void { $device = Device::factory()->create(); /** @var Device $device */ $ipv4 = Ipv4Address::factory()->make(); /** @var Ipv4Address $ipv4 */ - $trapText = "$device->hostname + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:64610->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 198:2:10:48.91 SNMPv2-MIB::snmpTrapOID.0 JUNIPER-LDP-MIB::jnxLdpLspDown @@ -47,20 +50,19 @@ JUNIPER-LDP-MIB::jnxLdpRtrid.0 $device->ip JUNIPER-LDP-MIB::jnxLdpLspDownReason.0 topologyChanged JUNIPER-LDP-MIB::jnxLdpLspFecLen.0 32 JUNIPER-LDP-MIB::jnxLdpInstanceName.0 \"test instance down\" -SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameMX480"; - - $trap = new Trap($trapText); - $message = "LDP session test instance down from $device->ip to $ipv4->ipv4_address has gone down due to topologyChanged"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 4); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle JnxLdpLspDown trap'); +SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameMX480", + "LDP session test instance down from $device->ip to $ipv4->ipv4_address has gone down due to topologyChanged", + 'Could not handle JnxLdpLspDown trap', + [4], + $device, + ); } - public function testLdpLspUpTrap() + public function testLdpLspUpTrap(): void { $device = Device::factory()->create(); /** @var Device $device */ $ipv4 = Ipv4Address::factory()->make(); /** @var Ipv4Address $ipv4 */ - $trapText = "$device->hostname + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:64610->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 198:2:10:48.91 SNMPv2-MIB::snmpTrapOID.0 JUNIPER-LDP-MIB::jnxLdpLspUp @@ -68,12 +70,11 @@ JUNIPER-LDP-MIB::jnxLdpLspFec.0 $ipv4->ipv4_address JUNIPER-LDP-MIB::jnxLdpRtrid.0 $device->ip JUNIPER-LDP-MIB::jnxLdpLspFecLen.0 32 JUNIPER-LDP-MIB::jnxLdpInstanceName.0 \"test instance up\" -SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameMX480"; - - $trap = new Trap($trapText); - $message = "LDP session test instance up from $device->ip to $ipv4->ipv4_address is now up."; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 1); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle JnxLdpLspUp trap'); +SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameMX480", + "LDP session test instance up from $device->ip to $ipv4->ipv4_address is now up.", + 'Could not handle JnxLdpLspUp trap', + [1], + $device, + ); } } diff --git a/tests/Feature/SnmpTraps/JnxLdpSesTest.php b/tests/Feature/SnmpTraps/JnxLdpSesTest.php index 5f03a94695..bbe5488a48 100644 --- a/tests/Feature/SnmpTraps/JnxLdpSesTest.php +++ b/tests/Feature/SnmpTraps/JnxLdpSesTest.php @@ -29,55 +29,60 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; use App\Models\Device; use App\Models\Port; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; +use Illuminate\Foundation\Testing\DatabaseTransactions; +use LibreNMS\Tests\Traits\RequiresDatabase; class JnxLdpSesTest extends SnmpTrapTestCase { - public function testJnxLdpSesDownTrap() + use RequiresDatabase; + use DatabaseTransactions; + + public function testJnxLdpSesDownTrap(): void { $device = Device::factory()->create(); /** @var Device $device */ $port = Port::factory()->make(['ifAdminStatus' => 'up', 'ifOperStatus' => 'up']); /** @var Port $port */ $device->ports()->save($port); - $trapText = "$device->hostname + $warning = "Snmptrap LdpSesDown: Could not find port at ifIndex $port->ifIndex for device: $device->hostname"; + \Log::shouldReceive('warning')->never()->with($warning); + + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:64610->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 198:2:10:48.91 SNMPv2-MIB::snmpTrapOID.0 JUNIPER-LDP-MIB::jnxLdpSesDown JUNIPER-MPLS-LDP-MIB::jnxMplsLdpSesState.'.q.j..'.1.'.q.p..' nonexistent JUNIPER-LDP-MIB::jnxLdpSesDownReason.0 allAdjacenciesDown JUNIPER-LDP-MIB::jnxLdpSesDownIf.0 $port->ifIndex -SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameMX480"; - - \Log::shouldReceive('warning')->never()->with("Snmptrap LdpSesDown: Could not find port at ifIndex $port->ifIndex for device: $device->hostname"); - - $trap = new Trap($trapText); - $message = "LDP session on interface $port->ifDescr is nonexistent due to allAdjacenciesDown"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 4); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle JnxLdpSesDown trap'); +SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameMX480", + "LDP session on interface $port->ifDescr is nonexistent due to allAdjacenciesDown", + 'Could not handle JnxLdpSesDown trap', + [4], + $device, + ); } - public function testJnxLdpSesUpTrap() + public function testJnxLdpSesUpTrap(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $port = Port::factory()->make(['ifAdminStatus' => 'up', 'ifOperStatus' => 'up']); /** @var Port $port */ + $device = Device::factory()->create(); + /** @var Device $device */ + $port = Port::factory()->make(['ifAdminStatus' => 'up', 'ifOperStatus' => 'up']); + /** @var Port $port */ $device->ports()->save($port); - $trapText = "$device->hostname -UDP: [$device->ip]:64610->[192.168.5.5]:162 + $warning = "Snmptrap LdpSesUp: Could not find port at ifIndex $port->ifIndex for device: $device->hostname"; + \Log::shouldReceive('warning')->never()->with($warning); + + $this->assertTrapLogsMessage("{{ hostname }} +UDP: [{{ ip }}]:64610->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 198:2:10:48.91 SNMPv2-MIB::snmpTrapOID.0 JUNIPER-LDP-MIB::jnxLdpSesUp JUNIPER-MPLS-LDP-MIB::jnxMplsLdpSesState.'.q.d..'.1.'.q.p..' operational JUNIPER-LDP-MIB::jnxLdpSesUpIf.0 $port->ifIndex -SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameMX960"; - - \Log::shouldReceive('warning')->never()->with("Snmptrap LdpSesUp: Could not find port at ifIndex $port->ifIndex for device: $device->hostname"); - - $trap = new Trap($trapText); - $message = "LDP session on interface $port->ifDescr is operational"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 1); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle JnxLdpSesUp trap'); +SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameMX960", + "LDP session on interface $port->ifDescr is operational", + 'Could not handle JnxLdpSesUp trap', + [1], + $device, + ); } } diff --git a/tests/Feature/SnmpTraps/JnxPowerSupplyTest.php b/tests/Feature/SnmpTraps/JnxPowerSupplyTest.php index 277cb9e754..1b0a01adcb 100644 --- a/tests/Feature/SnmpTraps/JnxPowerSupplyTest.php +++ b/tests/Feature/SnmpTraps/JnxPowerSupplyTest.php @@ -27,17 +27,13 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class JnxPowerSupplyTest extends SnmpTrapTestCase { - public function testJnxPowerSupplyFailureTrap() + public function testJnxPowerSupplyFailureTrap(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:49716->[10.0.0.1]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:49716->[10.0.0.1]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 470:23:25:41.21 SNMPv2-MIB::snmpTrapOID.0 JUNIPER-MIB::jnxPowerSupplyFailure JUNIPER-MIB::jnxContentsContainerIndex.2.4.0.0 2 @@ -46,20 +42,19 @@ JUNIPER-MIB::jnxContentsL2Index.2.4.0.0 0 JUNIPER-MIB::jnxContentsL3Index.2.4.0.0 0 JUNIPER-MIB::jnxContentsDescr.2.4.0.0 PEM 3 JUNIPER-MIB::jnxOperatingState.2.4.0.0 down -SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameMX960"; - - $trap = new Trap($trapText); - $message = 'Power Supply PEM 3 is down'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 5); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle JnxPowerSupplyFailure'); +SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameMX960 +TRAP, + 'Power Supply PEM 3 is down', + 'Could not handle JnxPowerSupplyFailure', + [5], + ); } - public function testJnxPowerSupplyOkTrap() + public function testJnxPowerSupplyOkTrap(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:49716->[10.0.0.1]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:49716->[10.0.0.1]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 470:23:25:41.21 SNMPv2-MIB::snmpTrapOID.0 JUNIPER-MIB::jnxPowerSupplyOK JUNIPER-MIB::jnxContentsContainerIndex.2.4.0.0 2 @@ -68,12 +63,11 @@ JUNIPER-MIB::jnxContentsL2Index.2.4.0.0 0 JUNIPER-MIB::jnxContentsL3Index.2.4.0.0 0 JUNIPER-MIB::jnxContentsDescr.2.4.0.0 PEM 4 JUNIPER-MIB::jnxOperatingState.2.4.0.0 ok -SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameMX960"; - - $trap = new Trap($trapText); - $message = 'Power Supply PEM 4 is OK'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 1); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle JnxPowerSupplyOK'); +SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameMX960 +TRAP, + 'Power Supply PEM 4 is OK', + 'Could not handle JnxPowerSupplyOK', + [1], + ); } } diff --git a/tests/Feature/SnmpTraps/JnxVpnIfTest.php b/tests/Feature/SnmpTraps/JnxVpnIfTest.php index 3bdac3998d..75e9cd344b 100644 --- a/tests/Feature/SnmpTraps/JnxVpnIfTest.php +++ b/tests/Feature/SnmpTraps/JnxVpnIfTest.php @@ -30,52 +30,53 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; use App\Models\Device; use App\Models\Port; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; +use Illuminate\Foundation\Testing\DatabaseTransactions; +use LibreNMS\Tests\Traits\RequiresDatabase; class JnxVpnIfTest extends SnmpTrapTestCase { - public function testVpnIfDown() + use RequiresDatabase; + use DatabaseTransactions; + + public function testVpnIfDown(): void { $device = Device::factory()->create(); /** @var Device $device */ $port = Port::factory()->make(['ifAdminStatus' => 'up', 'ifOperStatus' => 'up']); /** @var Port $port */ $device->ports()->save($port); - $trapText = "$device->hostname + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:64610->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 198:2:10:48.91 SNMPv2-MIB::snmpTrapOID.0 JUNIPER-VPN-MIB::jnxVpnIfDown JUNIPER-VPN-MIB::jnxVpnIfVpnType.l2Circuit.\"ge-0/0/2.0\".$port->ifIndex l2Circuit JUNIPER-VPN-MIB::jnxVpnIfVpnName.l2Circuit.\"ge-0/0/2.0\".$port->ifIndex \"$port->ifDescr\" JUNIPER-VPN-MIB::jnxVpnIfIndex.l2Circuit.\"ge-0/0/2.0\".$port->ifIndex $port->ifIndex -SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameMX960"; - - $trap = new Trap($trapText); - $message = "l2Circuit on interface $port->ifDescr has gone down"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 4); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle JnxVpnIfDown trap'); +SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameMX960", + "l2Circuit on interface $port->ifDescr has gone down", + 'Could not handle JnxVpnIfDown trap', + [4], + $device, + ); } - public function testVpnIfUp() + public function testVpnIfUp(): void { $device = Device::factory()->create(); /** @var Device $device */ $port = Port::factory()->make(['ifAdminStatus' => 'up', 'ifOperStatus' => 'up']); /** @var Port $port */ $device->ports()->save($port); - $trapText = "$device->hostname + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:64610->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 198:2:10:48.91 SNMPv2-MIB::snmpTrapOID.0 JUNIPER-VPN-MIB::jnxVpnIfUp JUNIPER-VPN-MIB::jnxVpnIfVpnType.l2Circuit.\"ge-0/0/2.0\".$port->ifIndex l2Circuit JUNIPER-VPN-MIB::jnxVpnIfVpnName.l2Circuit.\"ge-0/0/2.0\".$port->ifIndex $port->ifDescr JUNIPER-VPN-MIB::jnxVpnIfIndex.l2Circuit.\"ge-0/0/2.0\".$port->ifIndex $port->ifIndex -SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameMX960"; - - $trap = new Trap($trapText); - $message = "l2Circuit on interface $port->ifDescr is now connected"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 1); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle JnxVpnIfUp trap'); +SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameMX960", + "l2Circuit on interface $port->ifDescr is now connected", + 'Could not handle JnxVpnIfUp trap', + [1], + $device, + ); } } diff --git a/tests/Feature/SnmpTraps/JnxVpnPwTest.php b/tests/Feature/SnmpTraps/JnxVpnPwTest.php index f2375bebb2..08bd886884 100644 --- a/tests/Feature/SnmpTraps/JnxVpnPwTest.php +++ b/tests/Feature/SnmpTraps/JnxVpnPwTest.php @@ -30,52 +30,53 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; use App\Models\Device; use App\Models\Port; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; +use Illuminate\Foundation\Testing\DatabaseTransactions; +use LibreNMS\Tests\Traits\RequiresDatabase; class JnxVpnPwTest extends SnmpTrapTestCase { - public function testVpnPwDown() + use RequiresDatabase; + use DatabaseTransactions; + + public function testVpnPwDown(): void { $device = Device::factory()->create(); /** @var Device $device */ $port = Port::factory()->make(['ifAdminStatus' => 'up', 'ifOperStatus' => 'up']); /** @var Port $port */ $device->ports()->save($port); - $trapText = "$device->hostname + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:64610->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 198:2:10:48.91 SNMPv2-MIB::snmpTrapOID.0 JUNIPER-VPN-MIB::jnxVpnPwDown JUNIPER-VPN-MIB::jnxVpnPwVpnType.l2Circuit.\"ge-0/0/2.0\".$port->ifIndex l2Circuit JUNIPER-VPN-MIB::jnxVpnPwVpnName.l2Circuit.\"ge-0/0/2.0\".$port->ifIndex $port->ifDescr JUNIPER-VPN-MIB::jnxVpnPwIndex.l2Circuit.\"ge-0/0/2.0\".$port->ifIndex $port->ifIndex -SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameMX480"; - - $trap = new Trap($trapText); - $message = "l2Circuit on a pseudowire belonging to $port->ifDescr has gone down"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 4); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle JnxVpnPwDown trap'); +SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameMX480", + "l2Circuit on a pseudowire belonging to $port->ifDescr has gone down", + 'Could not handle JnxVpnPwDown trap', + [4], + $device, + ); } - public function testVpnPwUp() + public function testVpnPwUp(): void { $device = Device::factory()->create(); /** @var Device $device */ $port = Port::factory()->make(['ifAdminStatus' => 'up', 'ifOperStatus' => 'up']); /** @var Port $port */ $device->ports()->save($port); - $trapText = "$device->hostname + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:64610->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 198:2:10:48.91 SNMPv2-MIB::snmpTrapOID.0 JUNIPER-VPN-MIB::jnxVpnPwUp JUNIPER-VPN-MIB::jnxVpnPwVpnType.l2Circuit.\"ge-0/0/2.0\".$port->ifIndex l2Circuit JUNIPER-VPN-MIB::jnxVpnPwVpnName.l2Circuit.\"ge-0/0/2.0\".$port->ifIndex $port->ifDescr JUNIPER-VPN-MIB::jnxVpnPwIndex.l2Circuit.\"ge-0/02.0\".$port->ifIndex $port->ifIndex -SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameMX960"; - - $trap = new Trap($trapText); - $message = "l2Circuit on a pseudowire belonging to $port->ifDescr is now connected"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 1); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle JnxVpnPwUp trap'); +SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameMX960", + "l2Circuit on a pseudowire belonging to $port->ifDescr is now connected", + 'Could not handle JnxVpnPwUp trap', + [1], + $device, + ); } } diff --git a/tests/Feature/SnmpTraps/MgmtTrapNmsAlarmTest.php b/tests/Feature/SnmpTraps/MgmtTrapNmsAlarmTest.php index f886db9c93..bb9ede4131 100644 --- a/tests/Feature/SnmpTraps/MgmtTrapNmsAlarmTest.php +++ b/tests/Feature/SnmpTraps/MgmtTrapNmsAlarmTest.php @@ -30,137 +30,104 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class MgmtTrapNmsAlarmTest extends SnmpTrapTestCase { - public function testAlarmClear() + public function testAlarmClear(): void { - $device = Device::factory()->create(); /** @var Device $device */ $alarm = self::genEkiAlarm(); - $slotNum = $alarm['slotNum']; - $srcPm = $alarm['srcPm']; - $specific = $alarm['specific']; - $trapText = "$device->hostname -UDP: [$device->ip]:60057->[192.168.1.100]:162 + $this->assertTrapLogsMessage("{{ hostname }} +UDP: [{{ ip }}]:60057->[192.168.1.100]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 168:19:32:11.62 SNMPv2-MIB::snmpTrapOID.0 EKINOPS-MGNT2-NMS-MIB::mgnt2TrapNMSAlarm EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogNotificationId 566098 EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogObjectClassIdentifier module -EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogSourcePm $srcPm -EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogBoardNumber $slotNum +EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogSourcePm {$alarm['srcPm']} +EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogBoardNumber {$alarm['slotNum']} EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogSourcePortType Other EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogSourcePortNumber 0 EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogProbableCause other EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogSeverity cleared -EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogSpecificProblem $specific +EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogSpecificProblem {$alarm['specific']} EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogAdditionalText EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogAlarmType synthesisAlarm EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogTime 2020-8-19,14:21:2.0 EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogNodeControllerIpAddress 0.0.0.0 -EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogChassisId $device->ip"; - - $trap = new Trap($trapText); - - $msg = "Alarm on slot $slotNum, $srcPm Issue: $specific Possible Cause: Unknown"; - - \Log::shouldReceive('event')->once()->with($msg, $device->device_id, 'trap', 1); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle mgnt2TrapNMSAlarm trap CLEARED'); +EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogChassisId {{ ip }}", + "Alarm on slot {$alarm['slotNum']}, {$alarm['srcPm']} Issue: {$alarm['specific']} Possible Cause: Unknown", + 'Could not handle mgnt2TrapNMSAlarm trap CLEARED', + [1], + ); } //Test alarm with addtional text supplied. - public function testAlarmAddText() + public function testAlarmAddText(): void { - $device = Device::factory()->create(); /** @var Device $device */ $alarm = self::genEkiAlarm(); - $slotNum = $alarm['slotNum']; - $srcPm = $alarm['srcPm']; - $specific = $alarm['specific']; - $add = $alarm['addText']; - $trapText = "$device->hostname -UDP: [$device->ip]:60057->[192.168.1.100]:162 + $this->assertTrapLogsMessage("{{ hostname }} +UDP: [{{ ip }}]:60057->[192.168.1.100]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 168:19:32:11.62 SNMPv2-MIB::snmpTrapOID.0 EKINOPS-MGNT2-NMS-MIB::mgnt2TrapNMSAlarm EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogNotificationId 566098 EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogObjectClassIdentifier module -EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogSourcePm $srcPm -EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogBoardNumber $slotNum +EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogSourcePm {$alarm['srcPm']} +EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogBoardNumber {$alarm['slotNum']} EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogSourcePortType Other EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogSourcePortNumber 0 EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogProbableCause other EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogSeverity cleared -EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogSpecificProblem $specific -EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogAdditionalText $add +EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogSpecificProblem {$alarm['specific']} +EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogAdditionalText {$alarm['addText']} EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogAlarmType synthesisAlarm EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogTime 2020-8-19,14:21:2.0 EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogNodeControllerIpAddress 0.0.0.0 -EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogChassisId $device->ip"; - - $trap = new Trap($trapText); - - $msg = "Alarm on slot $slotNum, $srcPm Issue: $specific Additional info: $add Possible Cause: Unknown"; - - \Log::shouldReceive('event')->once()->with($msg, $device->device_id, 'trap', 1); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle mgnt2TrapNMSAlarm trap with additional text'); +EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogChassisId {{ ip }}", + "Alarm on slot {$alarm['slotNum']}, {$alarm['srcPm']} Issue: {$alarm['specific']} Additional info: {$alarm['addText']} Possible Cause: Unknown", + 'Could not handle mgnt2TrapNMSAlarm trap with additional text', + [1], + ); } //Alarm is on a specific port - public function testAlarmPort() + public function testAlarmPort(): void { - $device = Device::factory()->create(); /** @var Device $device */ $alarm = self::genEkiAlarm(); - $slotNum = $alarm['slotNum']; - $srcPm = $alarm['srcPm']; - $specific = $alarm['specific']; - $probCause = $alarm['probCause']; - $portType = $alarm['portType']; - $portNum = $alarm['portNum']; - $add = $alarm['addText']; - $trapText = "$device->hostname -UDP: [$device->ip]:60057->[192.168.1.100]:162 + $this->assertTrapLogsMessage("{{ hostname }} +UDP: [{{ ip }}]:60057->[192.168.1.100]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 168:19:32:03.51 SNMPv2-MIB::snmpTrapOID.0 EKINOPS-MGNT2-NMS-MIB::mgnt2TrapNMSAlarm EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogNotificationId 566097 EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogObjectClassIdentifier port -EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogSourcePm $srcPm -EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogBoardNumber $slotNum -EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogSourcePortType $portType -EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogSourcePortNumber $portNum -EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogProbableCause $probCause +EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogSourcePm {$alarm['srcPm']} +EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogBoardNumber {$alarm['slotNum']} +EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogSourcePortType {$alarm['portType']} +EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogSourcePortNumber {$alarm['portNum']} +EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogProbableCause {$alarm['probCause']} EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogSeverity critical -EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogSpecificProblem $specific +EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogSpecificProblem {$alarm['specific']} EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogAdditionalText EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogAlarmType integrityViolation EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogTime 2020-8-19,14:20:54.0 EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogNodeControllerIpAddress 0.0.0.0 -EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogChassisId $device->ip"; - - $trap = new Trap($trapText); - - $msg = "Alarm on slot $slotNum, $srcPm Port: $portType $portNum Issue: $specific Possible Cause: $probCause"; - - \Log::shouldReceive('event')->once()->with($msg, $device->device_id, 'trap', 5); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle mgnt2TrapNMSAlarm trap with additional text'); +EKINOPS-MGNT2-NMS-MIB::mgnt2AlmLogChassisId {{ ip }}", + "Alarm on slot {$alarm['slotNum']}, {$alarm['srcPm']} Port: {$alarm['portType']} {$alarm['portNum']} Issue: {$alarm['specific']} Possible Cause: {$alarm['probCause']}", + 'Could not handle mgnt2TrapNMSAlarm trap with additional text', + [5], + ); } - public static function genEkiAlarm() + public static function genEkiAlarm(): array { - $alarm['slotNum'] = rand(1, 32); - $alarm['srcPm'] = str_shuffle('0123456789abcdefg'); - $alarm['specific'] = str_shuffle('0123456789abcdefg'); - $alarm['portType'] = str_shuffle('0123456789abcdefg'); - $alarm['probCause'] = str_shuffle('0123456789abcdefg'); - $alarm['portNum'] = rand(1, 32); - $alarm['addText'] = str_shuffle('0123456789abcdefg'); - - return $alarm; + return [ + 'slotNum' => rand(1, 32), + 'srcPm' => str_shuffle('0123456789abcdefg'), + 'specific' => str_shuffle('0123456789abcdefg'), + 'portType' => str_shuffle('0123456789abcdefg'), + 'probCause' => str_shuffle('0123456789abcdefg'), + 'portNum' => rand(1, 32), + 'addText' => str_shuffle('0123456789abcdefg'), + ]; } } diff --git a/tests/Feature/SnmpTraps/MgmtTrapNmsEventTest.php b/tests/Feature/SnmpTraps/MgmtTrapNmsEventTest.php index 0741f6a512..bd9e32bcc3 100644 --- a/tests/Feature/SnmpTraps/MgmtTrapNmsEventTest.php +++ b/tests/Feature/SnmpTraps/MgmtTrapNmsEventTest.php @@ -30,132 +30,97 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class MgmtTrapNmsEventTest extends SnmpTrapTestCase { - public function testEvent() + public function testEvent(): void { - $device = Device::factory()->create(); /** @var Device $device */ $alarm = self::genEkiEvent(); - $slotNum = $alarm['slotNum']; - $srcPm = $alarm['srcPm']; - $reason = $alarm['reason']; - $trapText = "$device->hostname -UDP: [$device->ip]:60057->[10.0.0.1]:162 + $this->assertTrapLogsMessage("{{ hostname }} +UDP: [{{ ip }}]:60057->[10.0.0.1]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 159:19:33:14.42 SNMPv2-MIB::snmpTrapOID.0 EKINOPS-MGNT2-NMS-MIB::mgnt2TrapNMSEvent EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogNotificationId 132 EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogObjectClassIdentifier chassis -EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogSourcePm $srcPm -EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogBoardNumber $slotNum +EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogSourcePm {$alarm['srcPm']} +EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogBoardNumber {$alarm['slotNum']} EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogSourcePortType None EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogSourcePortNumber 0 EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogEventType activityLog EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogSourceType event -EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogReason $reason +EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogReason {$alarm['reason']} EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogAdditionalText EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogTime 2020-8-10,14:22:5 EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogNodeControllerIpAddress 0.0.0.0 -EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogChassisId $device->ip"; - - $trap = new Trap($trapText); - - $msg = "Event on slot $slotNum, $srcPm Reason: $reason"; - - \Log::shouldReceive('event')->once()->with($msg, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle mgnt2TrapNMSEvent trap'); +EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogChassisId {{ ip }}", + "Event on slot {$alarm['slotNum']}, {$alarm['srcPm']} Reason: {$alarm['reason']}", + 'Could not handle mgnt2TrapNMSEvent trap' + ); } //Test alarm with addtional text supplied. - public function testEventAddText() + public function testEventAddText(): void { - $device = Device::factory()->create(); /** @var Device $device */ $alarm = self::genEkiEvent(); - $slotNum = $alarm['slotNum']; - $srcPm = $alarm['srcPm']; - $reason = $alarm['reason']; - $add = $alarm['addText']; - $trapText = "$device->hostname -UDP: [$device->ip]:60057->[10.0.0.1]:162 + $this->assertTrapLogsMessage("{{ hostname }} +UDP: [{{ ip }}]:60057->[10.0.0.1]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 159:19:33:14.42 SNMPv2-MIB::snmpTrapOID.0 EKINOPS-MGNT2-NMS-MIB::mgnt2TrapNMSEvent EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogNotificationId 132 EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogObjectClassIdentifier chassis -EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogSourcePm $srcPm -EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogBoardNumber $slotNum +EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogSourcePm {$alarm['srcPm']} +EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogBoardNumber {$alarm['slotNum']} EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogSourcePortType None EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogSourcePortNumber 0 EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogEventType activityLog EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogSourceType event -EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogReason $reason -EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogAdditionalText $add +EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogReason {$alarm['reason']} +EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogAdditionalText {$alarm['addText']} EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogTime 2020-8-10,14:22:5 EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogNodeControllerIpAddress 0.0.0.0 -EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogChassisId $device->ip"; - - $trap = new Trap($trapText); - - $msg = "Event on slot $slotNum, $srcPm Reason: $reason Additional info: $add"; - - \Log::shouldReceive('event')->once()->with($msg, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle mgnt2TrapNMSEvent trap with additional text'); +EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogChassisId {{ ip }}", + "Event on slot {$alarm['slotNum']}, {$alarm['srcPm']} Reason: {$alarm['reason']} Additional info: {$alarm['addText']}", + 'Could not handle mgnt2TrapNMSEvent trap with additional text' + ); } //Event trap on a specific port - public function testEventPort() + public function testEventPort(): void { - $device = Device::factory()->create(); /** @var Device $device */ $alarm = self::genEkiEvent(); - $slotNum = $alarm['slotNum']; - $srcPm = $alarm['srcPm']; - $reason = $alarm['reason']; - $add = $alarm['addText']; - $portType = $alarm['portType']; - $portNum = $alarm['portNum']; - $trapText = "$device->hostname -UDP: [$device->ip]:60057->[10.0.0.1]:162 + $this->assertTrapLogsMessage("{{ hostname }} +UDP: [{{ ip }}]:60057->[10.0.0.1]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 159:19:33:14.42 SNMPv2-MIB::snmpTrapOID.0 EKINOPS-MGNT2-NMS-MIB::mgnt2TrapNMSEvent EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogNotificationId 132 EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogObjectClassIdentifier port -EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogSourcePm $srcPm -EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogBoardNumber $slotNum -EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogSourcePortType $portType -EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogSourcePortNumber $portNum +EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogSourcePm {$alarm['srcPm']} +EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogBoardNumber {$alarm['slotNum']} +EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogSourcePortType {$alarm['portType']} +EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogSourcePortNumber {alarm['portNum']} EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogEventType activityLog EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogSourceType event -EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogReason $reason +EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogReason {$alarm['reason']} EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogAdditionalText EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogTime 2020-8-10,14:22:5 EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogNodeControllerIpAddress 0.0.0.0 -EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogChassisId $device->ip"; - - $trap = new Trap($trapText); - - $msg = "Event on slot $slotNum, $srcPm Port: $portType $portNum. Reason: $reason"; - - \Log::shouldReceive('event')->once()->with($msg, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle mgnt2TrapNMSEvent trap with a specficied port'); +EKINOPS-MGNT2-NMS-MIB::mgnt2EventLogChassisId {{ ip }}", + "Event on slot {$alarm['slotNum']}, {$alarm['srcPm']} Port: {$alarm['portType']} {alarm['portNum']}. Reason: {$alarm['reason']}", + 'Could not handle mgnt2TrapNMSEvent trap with a specified port', + ); } - public static function genEkiEvent() + public static function genEkiEvent(): array { - $alarm['slotNum'] = rand(1, 32); - $alarm['srcPm'] = str_shuffle('0123456789abcdefg'); - $alarm['reason'] = str_shuffle('0123456789abcdefg'); - $alarm['portType'] = str_shuffle('0123456789abcdefg'); - $alarm['portNum'] = rand(1, 32); - $alarm['addText'] = str_shuffle('0123456789abcdefg'); - - return $alarm; + return [ + 'slotNum' => rand(1, 32), + 'srcPm' => str_shuffle('0123456789abcdefg'), + 'reason' => str_shuffle('0123456789abcdefg'), + 'portType' => str_shuffle('0123456789abcdefg'), + 'portNum' => rand(1, 32), + 'addText' => str_shuffle('0123456789abcdefg'), + ]; } } diff --git a/tests/Feature/SnmpTraps/NetgearFailedUserLoginTest.php b/tests/Feature/SnmpTraps/NetgearFailedUserLoginTest.php index 277ee790bc..f3899555f2 100644 --- a/tests/Feature/SnmpTraps/NetgearFailedUserLoginTest.php +++ b/tests/Feature/SnmpTraps/NetgearFailedUserLoginTest.php @@ -22,39 +22,33 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class NetgearFailedUserLoginTest extends SnmpTrapTestCase { - public function testManagedSeries() + public function testManagedSeries(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:44298->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:44298->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 0:6:11:31.55 -SNMPv2-MIB::snmpTrapOID.0 NETGEAR-SWITCHING-MIB::failedUserLoginTrap"; - - $message = "SNMP Trap: Failed User Login: {$device->displayName()}"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'auth', 4); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle NETGEAR-SWITCHING-MIB::failedUserLoginTrap trap'); +SNMPv2-MIB::snmpTrapOID.0 NETGEAR-SWITCHING-MIB::failedUserLoginTrap +TRAP, + 'SNMP Trap: Failed User Login: {{ hostname }}', + 'Could not handle NETGEAR-SWITCHING-MIB::failedUserLoginTrap trap', + [4, 'auth'], + ); } - public function testSmartSeries() + public function testSmartSeries(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:1026->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:1026->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 30:22:57:58.00 -SNMPv2-MIB::snmpTrapOID.0 NETGEAR-SMART-SWITCHING-MIB::failedUserLoginTrap"; - - $message = "SNMP Trap: Failed User Login: {$device->displayName()}"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'auth', 4); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle NETGEAR-SMART-SWITCHING-MIB::failedUserLoginTrap trap'); +SNMPv2-MIB::snmpTrapOID.0 NETGEAR-SMART-SWITCHING-MIB::failedUserLoginTrap +TRAP, + 'SNMP Trap: Failed User Login: {{ hostname }}', + 'Could not handle NETGEAR-SMART-SWITCHING-MIB::failedUserLoginTrap trap', + [4, 'auth'], + ); } } diff --git a/tests/Feature/SnmpTraps/OspfIfStateChangeTest.php b/tests/Feature/SnmpTraps/OspfIfStateChangeTest.php index 93da8f834e..04dae0ad55 100644 --- a/tests/Feature/SnmpTraps/OspfIfStateChangeTest.php +++ b/tests/Feature/SnmpTraps/OspfIfStateChangeTest.php @@ -32,13 +32,16 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; use App\Models\Device; use App\Models\OspfPort; use App\Models\Port; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; +use Illuminate\Foundation\Testing\DatabaseTransactions; +use LibreNMS\Tests\Traits\RequiresDatabase; class OspfIfStateChangeTest extends SnmpTrapTestCase { + use RequiresDatabase; + use DatabaseTransactions; + //Test OSPF interface state down - public function testOspfIfDown() + public function testOspfIfDown(): void { $device = Device::factory()->create(); /** @var Device $device */ $port = Port::factory()->make(['ifAdminStatus' => 'up', 'ifOperStatus' => 'up']); /** @var Port $port */ @@ -47,7 +50,7 @@ class OspfIfStateChangeTest extends SnmpTrapTestCase $ospfIf = OspfPort::factory()->make(['port_id' => $port->port_id, 'ospfIfState' => 'designatedRouter']); /** @var OspfPort $ospfIf */ $device->ospfPorts()->save($ospfIf); - $trapText = "$device->hostname + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 0:6:11:31.55 SNMPv2-MIB::snmpTrapOID.0 OSPF-TRAP-MIB::ospfIfStateChange @@ -55,22 +58,19 @@ OSPF-MIB::ospfRouterId.0 $device->ip OSPF-MIB::ospfIfIpAddress.$ospfIf->ospfIfIpAddress.0 $ospfIf->ospfIfIpAddress OSPF-MIB::ospfAddressLessIf.$ospfIf->ospfIfIpAddress.0 $ospfIf->ospfAddressLessIf OSPF-MIB::ospfIfState.$ospfIf->ospfIfIpAddress.0 down -SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX240"; - - $trap = new Trap($trapText); - - $message = "OSPF interface $port->ifName is down"; - - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 5); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle ospfIfStateChange down'); +SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX240", + "OSPF interface $port->ifName is down", + 'Could not handle ospfIfStateChange down', + [5], + $device, + ); $ospfIf = $ospfIf->fresh(); $this->assertEquals($ospfIf->ospfIfState, 'down'); } //Test OSPF interface state DesignatedRouter - public function testOspfIfDr() + public function testOspfIfDr(): void { $device = Device::factory()->create(); /** @var Device $device */ $port = Port::factory()->make(['ifAdminStatus' => 'up', 'ifOperStatus' => 'up']); /** @var Port $port */ @@ -79,7 +79,7 @@ SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX2 $ospfIf = OspfPort::factory()->make(['port_id' => $port->port_id, 'ospfIfState' => 'down']); /** @var OspfPort $ospfIf */ $device->ospfPorts()->save($ospfIf); - $trapText = "$device->hostname + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 0:6:11:31.55 SNMPv2-MIB::snmpTrapOID.0 OSPF-TRAP-MIB::ospfIfStateChange @@ -87,22 +87,20 @@ OSPF-MIB::ospfRouterId.0 $device->ip OSPF-MIB::ospfIfIpAddress.$ospfIf->ospfIfIpAddress.0 $ospfIf->ospfIfIpAddress OSPF-MIB::ospfAddressLessIf.$ospfIf->ospfIfIpAddress.0 $ospfIf->ospfAddressLessIf OSPF-MIB::ospfIfState.$ospfIf->ospfIfIpAddress.0 designatedRouter -SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX240"; - - $trap = new Trap($trapText); - - $message = "OSPF interface $port->ifName is designatedRouter"; - - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 1); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle ospfIfStateChange designatedRouter'); +SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX240 +", + "OSPF interface $port->ifName is designatedRouter", + 'Could not handle ospfIfStateChange designatedRouter', + [1], + $device, + ); $ospfIf = $ospfIf->fresh(); $this->assertEquals($ospfIf->ospfIfState, 'designatedRouter'); } //Test OSPF interface state backupDesignatedRouter - public function testOspfIfBdr() + public function testOspfIfBdr(): void { $device = Device::factory()->create(); /** @var Device $device */ $port = Port::factory()->make(['ifAdminStatus' => 'up', 'ifOperStatus' => 'up']); /** @var Port $port */ @@ -111,7 +109,7 @@ SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX2 $ospfIf = OspfPort::factory()->make(['port_id' => $port->port_id, 'ospfIfState' => 'down']); /** @var OspfPort $ospfIf */ $device->ospfPorts()->save($ospfIf); - $trapText = "$device->hostname + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 0:6:11:31.55 SNMPv2-MIB::snmpTrapOID.0 OSPF-TRAP-MIB::ospfIfStateChange @@ -119,22 +117,19 @@ OSPF-MIB::ospfRouterId.0 $device->ip OSPF-MIB::ospfIfIpAddress.$ospfIf->ospfIfIpAddress.0 $ospfIf->ospfIfIpAddress OSPF-MIB::ospfAddressLessIf.$ospfIf->ospfIfIpAddress.0 $ospfIf->ospfAddressLessIf OSPF-MIB::ospfIfState.$ospfIf->ospfIfIpAddress.0 backupDesignatedRouter -SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX240"; - - $trap = new Trap($trapText); - - $message = "OSPF interface $port->ifName is backupDesignatedRouter"; - - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 1); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle ospfIfStateChange backupDesignatedRouter'); +SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX240", + "OSPF interface $port->ifName is backupDesignatedRouter", + 'Could not handle ospfIfStateChange backupDesignatedRouter', + [1], + $device, + ); $ospfIf = $ospfIf->fresh(); $this->assertEquals($ospfIf->ospfIfState, 'backupDesignatedRouter'); } //Test OSPF interface state otherDesignatedRouter - public function testOspfIfOdr() + public function testOspfIfOdr(): void { $device = Device::factory()->create(); /** @var Device $device */ $port = Port::factory()->make(['ifAdminStatus' => 'up', 'ifOperStatus' => 'up']); /** @var Port $port */ @@ -143,7 +138,7 @@ SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX2 $ospfIf = OspfPort::factory()->make(['port_id' => $port->port_id, 'ospfIfState' => 'down']); /** @var OspfPort $ospfIf */ $device->ospfPorts()->save($ospfIf); - $trapText = "$device->hostname + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 0:6:11:31.55 SNMPv2-MIB::snmpTrapOID.0 OSPF-TRAP-MIB::ospfIfStateChange @@ -151,22 +146,19 @@ OSPF-MIB::ospfRouterId.0 $device->ip OSPF-MIB::ospfIfIpAddress.$ospfIf->ospfIfIpAddress.0 $ospfIf->ospfIfIpAddress OSPF-MIB::ospfAddressLessIf.$ospfIf->ospfIfIpAddress.0 $ospfIf->ospfAddressLessIf OSPF-MIB::ospfIfState.$ospfIf->ospfIfIpAddress.0 otherDesignatedRouter -SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX240"; - - $trap = new Trap($trapText); - - $message = "OSPF interface $port->ifName is otherDesignatedRouter"; - - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 1); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle ospfIfStateChange otherDesignatedRouter'); +SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX240", + "OSPF interface $port->ifName is otherDesignatedRouter", + 'Could not handle ospfIfStateChange otherDesignatedRouter', + [1], + $device, + ); $ospfIf = $ospfIf->fresh(); $this->assertEquals($ospfIf->ospfIfState, 'otherDesignatedRouter'); } //Test OSPF interface state pointToPoint - public function testOspfIfPtp() + public function testOspfIfPtp(): void { $device = Device::factory()->create(); /** @var Device $device */ $port = Port::factory()->make(['ifAdminStatus' => 'up', 'ifOperStatus' => 'up']); /** @var Port $port */ @@ -175,7 +167,7 @@ SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX2 $ospfIf = OspfPort::factory()->make(['port_id' => $port->port_id, 'ospfIfState' => 'down']); /** @var OspfPort $ospfIf */ $device->ospfPorts()->save($ospfIf); - $trapText = "$device->hostname + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 0:6:11:31.55 SNMPv2-MIB::snmpTrapOID.0 OSPF-TRAP-MIB::ospfIfStateChange @@ -183,22 +175,19 @@ OSPF-MIB::ospfRouterId.0 $device->ip OSPF-MIB::ospfIfIpAddress.$ospfIf->ospfIfIpAddress.0 $ospfIf->ospfIfIpAddress OSPF-MIB::ospfAddressLessIf.$ospfIf->ospfIfIpAddress.0 $ospfIf->ospfAddressLessIf OSPF-MIB::ospfIfState.$ospfIf->ospfIfIpAddress.0 pointToPoint -SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX240"; - - $trap = new Trap($trapText); - - $message = "OSPF interface $port->ifName is pointToPoint"; - - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 1); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle ospfIfStateChange pointToPoint'); +SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX240", + "OSPF interface $port->ifName is pointToPoint", + 'Could not handle ospfIfStateChange pointToPoint', + [1], + $device, + ); $ospfIf = $ospfIf->fresh(); $this->assertEquals($ospfIf->ospfIfState, 'pointToPoint'); } //Test OSPF interface state waiting - public function testOspfIfWait() + public function testOspfIfWait(): void { $device = Device::factory()->create(); /** @var Device $device */ $port = Port::factory()->make(['ifAdminStatus' => 'up', 'ifOperStatus' => 'up']); /** @var Port $port */ @@ -207,7 +196,7 @@ SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX2 $ospfIf = OspfPort::factory()->make(['port_id' => $port->port_id, 'ospfIfState' => 'designatedRouter']); /** @var OspfPort $ospfIf */ $device->ospfPorts()->save($ospfIf); - $trapText = "$device->hostname + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 0:6:11:31.55 SNMPv2-MIB::snmpTrapOID.0 OSPF-TRAP-MIB::ospfIfStateChange @@ -215,22 +204,19 @@ OSPF-MIB::ospfRouterId.0 $device->ip OSPF-MIB::ospfIfIpAddress.$ospfIf->ospfIfIpAddress.0 $ospfIf->ospfIfIpAddress OSPF-MIB::ospfAddressLessIf.$ospfIf->ospfIfIpAddress.0 $ospfIf->ospfAddressLessIf OSPF-MIB::ospfIfState.$ospfIf->ospfIfIpAddress.0 waiting -SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX240"; - - $trap = new Trap($trapText); - - $message = "OSPF interface $port->ifName is waiting"; - - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 4); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle ospfIfStateChange waiting'); +SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX240", + "OSPF interface $port->ifName is waiting", + 'Could not handle ospfIfStateChange waiting', + [4], + $device, + ); $ospfIf = $ospfIf->fresh(); $this->assertEquals($ospfIf->ospfIfState, 'waiting'); } //Test OSPF interface state loopback - public function testOspfIfLoop() + public function testOspfIfLoop(): void { $device = Device::factory()->create(); /** @var Device $device */ $port = Port::factory()->make(['ifAdminStatus' => 'up', 'ifOperStatus' => 'up']); /** @var Port $port */ @@ -239,7 +225,7 @@ SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX2 $ospfIf = OspfPort::factory()->make(['port_id' => $port->port_id, 'ospfIfState' => 'designatedRouter']); /** @var OspfPort $ospfIf */ $device->ospfPorts()->save($ospfIf); - $trapText = "$device->hostname + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 0:6:11:31.55 SNMPv2-MIB::snmpTrapOID.0 OSPF-TRAP-MIB::ospfIfStateChange @@ -247,15 +233,12 @@ OSPF-MIB::ospfRouterId.0 $device->ip OSPF-MIB::ospfIfIpAddress.$ospfIf->ospfIfIpAddress.0 $ospfIf->ospfIfIpAddress OSPF-MIB::ospfAddressLessIf.$ospfIf->ospfIfIpAddress.0 $ospfIf->ospfAddressLessIf OSPF-MIB::ospfIfState.$ospfIf->ospfIfIpAddress.0 loopback -SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX240"; - - $trap = new Trap($trapText); - - $message = "OSPF interface $port->ifName is loopback"; - - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 4); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle ospfIfStateChange loopback'); +SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX240", + "OSPF interface $port->ifName is loopback", + 'Could not handle ospfIfStateChange loopback', + [4], + $device, + ); $ospfIf = $ospfIf->fresh(); $this->assertEquals($ospfIf->ospfIfState, 'loopback'); diff --git a/tests/Feature/SnmpTraps/OspfNbrStateChangeTest.php b/tests/Feature/SnmpTraps/OspfNbrStateChangeTest.php index 5265c6fbf8..171ce077a2 100644 --- a/tests/Feature/SnmpTraps/OspfNbrStateChangeTest.php +++ b/tests/Feature/SnmpTraps/OspfNbrStateChangeTest.php @@ -31,20 +31,23 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; use App\Models\Device; use App\Models\OspfNbr; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; +use Illuminate\Foundation\Testing\DatabaseTransactions; +use LibreNMS\Tests\Traits\RequiresDatabase; class OspfNbrStateChangeTest extends SnmpTrapTestCase { + use RequiresDatabase; + use DatabaseTransactions; + //Test OSPF neighbor state down trap - public function testOspfNbrDown() + public function testOspfNbrDown(): void { $device = Device::factory()->create(); /** @var Device $device */ - $ospfNbr = OspfNbr::factory()->make(['device_id' => $device->device_id, 'ospfNbrState' => 'full']); /** @var OspfNbr $ospfNbr */ + $ospfNbr = OspfNbr::factory()->make(['ospfNbrState' => 'full']); /** @var OspfNbr $ospfNbr */ $ospfNbr->ospf_nbr_id = "$ospfNbr->ospfNbrIpAddr.$ospfNbr->ospfNbrAddressLessIndex"; $device->ospfNbrs()->save($ospfNbr); - $trapText = "$device->hostname + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 0:1:07:16.06 SNMPv2-MIB::snmpTrapOID.0 OSPF-TRAP-MIB::ospfNbrStateChange @@ -53,29 +56,26 @@ OSPF-MIB::ospfNbrIpAddr.$ospfNbr->ospf_nbr_id $ospfNbr->ospfNbrIpAddr OSPF-MIB::ospfNbrAddressLessIndex.$ospfNbr->ospf_nbr_id $ospfNbr->ospfNbrAddressLessIndex OSPF-MIB::ospfNbrRtrId.$ospfNbr->ospf_nbr_id $ospfNbr->ospfNbrRtrId OSPF-MIB::ospfNbrState.$ospfNbr->ospf_nbr_id down -SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX240 "; - - $trap = new Trap($trapText); - - $message = "OSPF neighbor $ospfNbr->ospfNbrRtrId changed state to down"; - - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 5); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle ospfNbrStateChange down'); +SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX240 ", + "OSPF neighbor $ospfNbr->ospfNbrRtrId changed state to down", + 'Could not handle ospfNbrStateChange down', + [5], + $device, + ); $ospfNbr = $ospfNbr->fresh(); $this->assertEquals($ospfNbr->ospfNbrState, 'down'); } //Test OSPF neighbor state full trap - public function testOspfNbrFull() + public function testOspfNbrFull(): void { $device = Device::factory()->create(); /** @var Device $device */ - $ospfNbr = OspfNbr::factory()->make(['device_id' => $device->device_id, 'ospfNbrState' => 'down']); /** @var OspfNbr $ospfNbr */ + $ospfNbr = OspfNbr::factory()->make(['ospfNbrState' => 'down']); /** @var OspfNbr $ospfNbr */ $ospfNbr->ospf_nbr_id = "$ospfNbr->ospfNbrIpAddr.$ospfNbr->ospfNbrAddressLessIndex"; $device->ospfNbrs()->save($ospfNbr); - $trapText = "$device->hostname + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 0:1:07:16.06 SNMPv2-MIB::snmpTrapOID.0 OSPF-TRAP-MIB::ospfNbrStateChange @@ -84,29 +84,26 @@ OSPF-MIB::ospfNbrIpAddr.$ospfNbr->ospf_nbr_id $ospfNbr->ospfNbrIpAddr OSPF-MIB::ospfNbrAddressLessIndex.$ospfNbr->ospf_nbr_id $ospfNbr->ospfNbrAddressLessIndex OSPF-MIB::ospfNbrRtrId.$ospfNbr->ospf_nbr_id $ospfNbr->ospfNbrRtrId OSPF-MIB::ospfNbrState.$ospfNbr->ospf_nbr_id full -SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX240 "; - - $trap = new Trap($trapText); - - $message = "OSPF neighbor $ospfNbr->ospfNbrRtrId changed state to full"; - - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 1); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle ospfNbrStateChange full'); +SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX240 ", + "OSPF neighbor $ospfNbr->ospfNbrRtrId changed state to full", + 'Could not handle ospfNbrStateChange full', + [1], + $device, + ); $ospfNbr = $ospfNbr->fresh(); $this->assertEquals($ospfNbr->ospfNbrState, 'full'); } //Test OSPF neighbor state trap any other state - public function testOspfNbrOther() + public function testOspfNbrOther(): void { $device = Device::factory()->create(); /** @var Device $device */ - $ospfNbr = OspfNbr::factory()->make(['device_id' => $device->device_id, 'ospfNbrState' => 'full']); /** @var OspfNbr $ospfNbr */ + $ospfNbr = OspfNbr::factory()->make(['ospfNbrState' => 'full']); /** @var OspfNbr $ospfNbr */ $ospfNbr->ospf_nbr_id = "$ospfNbr->ospfNbrIpAddr.$ospfNbr->ospfNbrAddressLessIndex"; $device->ospfNbrs()->save($ospfNbr); - $trapText = "$device->hostname + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 0:1:07:16.06 SNMPv2-MIB::snmpTrapOID.0 OSPF-TRAP-MIB::ospfNbrStateChange @@ -115,15 +112,12 @@ OSPF-MIB::ospfNbrIpAddr.$ospfNbr->ospf_nbr_id $ospfNbr->ospfNbrIpAddr OSPF-MIB::ospfNbrAddressLessIndex.$ospfNbr->ospf_nbr_id $ospfNbr->ospfNbrAddressLessIndex OSPF-MIB::ospfNbrRtrId.$ospfNbr->ospf_nbr_id $ospfNbr->ospfNbrRtrId OSPF-MIB::ospfNbrState.$ospfNbr->ospf_nbr_id exstart -SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX240 "; - - $trap = new Trap($trapText); - - $message = "OSPF neighbor $ospfNbr->ospfNbrRtrId changed state to exstart"; - - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 4); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle ospfNbrStateChange exstart'); +SNMPv2-MIB::snmpTrapEnterprise.0 JUNIPER-CHASSIS-DEFINES-MIB::jnxProductNameSRX240 ", + "OSPF neighbor $ospfNbr->ospfNbrRtrId changed state to exstart", + 'Could not handle ospfNbrStateChange exstart', + [4], + $device, + ); $ospfNbr = $ospfNbr->fresh(); $this->assertEquals($ospfNbr->ospfNbrState, 'exstart'); diff --git a/tests/Feature/SnmpTraps/OspfTxRetransmitTest.php b/tests/Feature/SnmpTraps/OspfTxRetransmitTest.php index 2957258ccb..243ba3e6d9 100755 --- a/tests/Feature/SnmpTraps/OspfTxRetransmitTest.php +++ b/tests/Feature/SnmpTraps/OspfTxRetransmitTest.php @@ -25,10 +25,6 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class OspfTxRetransmitTest extends SnmpTrapTestCase { /** @@ -36,11 +32,11 @@ class OspfTxRetransmitTest extends SnmpTrapTestCase * * @return void */ - public function testLsUpdatePacket() + public function testLsUpdatePacket(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[10.0.0.1]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[10.0.0.1]:162 SNMPv2-MIB::sysUpTime.0 16:21:49.33 SNMPv2-MIB::snmpTrapOID.0 OSPF-TRAP-MIB::ospfTxRetransmit OSPF-MIB::ospfRouterId 10.1.2.3 @@ -50,12 +46,11 @@ OSPF-MIB::ospfNbrRtrId 10.3.4.5 OSPF-TRAP-MIB::ospfPacketType lsUpdate OSPF-MIB::ospfLsdbType routerLink OSPF-MIB::ospfLsdbLsid 10.1.1.0 -OSPF-MIB::ospfLsdbRouterId 10.4.5.6"; - - $trap = new Trap($trapText); - $message = 'SNMP Trap: OSPFTxRetransmit trap recieved from ' . $device->displayName() . '(Router ID: 10.1.2.3). A lsUpdate packet was sent to 10.3.4.5. LSType: routerLink, route ID: 10.1.1.0, originating from 10.4.5.6.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle testlsUpdatePacket trap'); +OSPF-MIB::ospfLsdbRouterId 10.4.5.6 +TRAP, + 'SNMP Trap: OSPFTxRetransmit trap received from {{ hostname }}(Router ID: 10.1.2.3). A lsUpdate packet was sent to 10.3.4.5. LSType: routerLink, route ID: 10.1.1.0, originating from 10.4.5.6.', + 'Could not handle testlsUpdatePacket trap', + ); } /** @@ -63,11 +58,11 @@ OSPF-MIB::ospfLsdbRouterId 10.4.5.6"; * * @return void */ - public function testNotLsUpdatePacket() + public function testNotLsUpdatePacket(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[10.0.0.1]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[10.0.0.1]:162 SNMPv2-MIB::sysUpTime.0 16:21:49.33 SNMPv2-MIB::snmpTrapOID.0 OSPF-TRAP-MIB::ospfTxRetransmit OSPF-MIB::ospfRouterId 10.1.2.3 @@ -77,11 +72,10 @@ OSPF-MIB::ospfNbrRtrId 10.3.4.5 OSPF-TRAP-MIB::ospfPacketType hello OSPF-MIB::ospfLsdbType routerLink OSPF-MIB::ospfLsdbLsid 10.1.1.0 -OSPF-MIB::ospfLsdbRouterId 10.4.5.6"; - - $trap = new Trap($trapText); - $message = 'SNMP TRAP: ' . $device->displayName() . '(Router ID: 10.1.2.3) sent a hello packet to 10.3.4.5.'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle testNotLsUpdatePacket trap'); +OSPF-MIB::ospfLsdbRouterId 10.4.5.6 +TRAP, + 'SNMP TRAP: {{ hostname }}(Router ID: 10.1.2.3) sent a hello packet to 10.3.4.5.', + 'Could not handle testNotLsUpdatePacket trap', + ); } } diff --git a/tests/Feature/SnmpTraps/PortsTrapTest.php b/tests/Feature/SnmpTraps/PortsTrapTest.php index 967ec0c21d..ca9ce17d67 100644 --- a/tests/Feature/SnmpTraps/PortsTrapTest.php +++ b/tests/Feature/SnmpTraps/PortsTrapTest.php @@ -27,20 +27,22 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; use App\Models\Device; use App\Models\Port; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; -use Log; +use Illuminate\Foundation\Testing\DatabaseTransactions; +use LibreNMS\Tests\Traits\RequiresDatabase; class PortsTrapTest extends SnmpTrapTestCase { - public function testLinkDown() + use RequiresDatabase; + use DatabaseTransactions; + + public function testLinkDown(): void { // make a device and associate a port with it $device = Device::factory()->create(); /** @var Device $device */ $port = Port::factory()->make(['ifAdminStatus' => 'up', 'ifOperStatus' => 'up']); /** @var Port $port */ $device->ports()->save($port); - $trapText = " + $this->assertTrapLogsMessage(" UDP: [$device->ip]:57123->[192.168.4.4]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 2:15:07:12.87 SNMPv2-MIB::snmpTrapOID.0 IF-MIB::linkDown @@ -49,28 +51,34 @@ IF-MIB::ifAdminStatus.$port->ifIndex down IF-MIB::ifOperStatus.$port->ifIndex down IF-MIB::ifDescr.$port->ifIndex GigabitEthernet0/5 IF-MIB::ifType.$port->ifIndex ethernetCsmacd -OLD-CISCO-INTERFACES-MIB::locIfReason.$port->ifIndex \"down\"\n"; - - Log::shouldReceive('event')->once()->with('SNMP Trap: linkDown down/down ' . $port->ifDescr, $device->device_id, 'interface', 5, $port->port_id); - Log::shouldReceive('event')->once()->with("Interface Disabled : $port->ifDescr (TRAP)", $device->device_id, 'interface', 3, $port->port_id); - Log::shouldReceive('event')->once()->with("Interface went Down : $port->ifDescr (TRAP)", $device->device_id, 'interface', 5, $port->port_id); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle linkDown'); +OLD-CISCO-INTERFACES-MIB::locIfReason.$port->ifIndex \"down\"\n", + [ + 'SNMP Trap: linkDown down/down ' . $port->ifDescr, + "Interface Disabled : $port->ifDescr (TRAP)", + "Interface went Down : $port->ifDescr (TRAP)", + ], + 'Could not handle linkDown', + [ + [5, 'interface', $port->port_id], + [3, 'interface', $port->port_id], + [5, 'interface', $port->port_id], + ], + $device, + ); $port = $port->fresh(); // refresh from database $this->assertEquals($port->ifAdminStatus, 'down'); $this->assertEquals($port->ifOperStatus, 'down'); } - public function testLinkUp() + public function testLinkUp(): void { // make a device and associate a port with it $device = Device::factory()->create(); /** @var Device $device */ $port = Port::factory()->make(['ifAdminStatus' => 'down', 'ifOperStatus' => 'down']); /** @var Port $port */ $device->ports()->save($port); - $trapText = " + $this->assertTrapLogsMessage(" UDP: [$device->ip]:57123->[185.29.68.52]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 2:15:07:18.21 SNMPv2-MIB::snmpTrapOID.0 IF-MIB::linkUp @@ -79,14 +87,20 @@ IF-MIB::ifAdminStatus.$port->ifIndex up IF-MIB::ifOperStatus.$port->ifIndex up IF-MIB::ifDescr.$port->ifIndex GigabitEthernet0/5 IF-MIB::ifType.$port->ifIndex ethernetCsmacd -OLD-CISCO-INTERFACES-MIB::locIfReason.$port->ifIndex \"up\"\n"; - - Log::shouldReceive('event')->once()->with('SNMP Trap: linkUp up/up ' . $port->ifDescr, $device->device_id, 'interface', 1, $port->port_id); - Log::shouldReceive('event')->once()->with("Interface Enabled : $port->ifDescr (TRAP)", $device->device_id, 'interface', 3, $port->port_id); - Log::shouldReceive('event')->once()->with("Interface went Up : $port->ifDescr (TRAP)", $device->device_id, 'interface', 1, $port->port_id); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle linkUp'); +OLD-CISCO-INTERFACES-MIB::locIfReason.$port->ifIndex \"up\"\n", + [ + 'SNMP Trap: linkUp up/up ' . $port->ifDescr, + "Interface Enabled : $port->ifDescr (TRAP)", + "Interface went Up : $port->ifDescr (TRAP)", + ], + 'Could not handle linkUp', + [ + [1, 'interface', $port->port_id], + [3, 'interface', $port->port_id], + [1, 'interface', $port->port_id], + ], + $device, + ); $port = $port->fresh(); // refresh from database $this->assertEquals($port->ifAdminStatus, 'up'); diff --git a/tests/Feature/SnmpTraps/RuckusEventTest.php b/tests/Feature/SnmpTraps/RuckusEventTest.php index d146d784f2..fbbb693f2b 100644 --- a/tests/Feature/SnmpTraps/RuckusEventTest.php +++ b/tests/Feature/SnmpTraps/RuckusEventTest.php @@ -27,60 +27,47 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class RuckusEventTest extends SnmpTrapTestCase { - public function testRuckusAssocTrap() + public function testRuckusAssocTrap(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 RUCKUS-EVENT-MIB::ruckusEventAssocTrap -RUCKUS-EVENT-MIB::ruckusEventClientMacAddr \"de:ad:be:ef:11:221.0.5.1.1.1.2.2\""; - - $trap = new Trap($trapText); - - $message = 'Client de:ad:be:ef:11:22 associated'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle ruckusEventAssocTrap'); +RUCKUS-EVENT-MIB::ruckusEventClientMacAddr "de:ad:be:ef:11:221.0.5.1.1.1.2.2" +TRAP, + 'Client de:ad:be:ef:11:22 associated', + 'Could not handle ruckusEventAssocTrap', + ); } - public function testRuckusDiassocTrap() + public function testRuckusDiassocTrap(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 RUCKUS-EVENT-MIB::ruckusEventDiassocTrap -RUCKUS-EVENT-MIB::ruckusEventClientMacAddr \"de:ad:be:ef:33:441.0.5.1.1.1.2.2\""; - - $trap = new Trap($trapText); - - $message = 'Client de:ad:be:ef:33:44 disassociated'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle ruckusEventDiassocTrap'); +RUCKUS-EVENT-MIB::ruckusEventClientMacAddr "de:ad:be:ef:33:441.0.5.1.1.1.2.2" +TRAP, + 'Client de:ad:be:ef:33:44 disassociated', + 'Could not handle ruckusEventDiassocTrap', + ); } - public function testRuckusSetErrorTrap() + public function testRuckusSetErrorTrap(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 RUCKUS-EVENT-MIB::ruckusEventSetErrorTrap -RUCKUS-EVENT-MIB::ruckusEventSetErrorOID Wrong Type (should be OBJECT IDENTIFIER): \"1.3.6.1.2.1.25.1.1.0.5.1.1.1.2.2\""; - - $trap = new Trap($trapText); - - $message = 'SNMP set error on oid 1.3.6.1.2.1.25.1.1.0.5.1.1.1.2.2'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle ruckusEventSetErrorTrap'); +RUCKUS-EVENT-MIB::ruckusEventSetErrorOID Wrong Type (should be OBJECT IDENTIFIER): "1.3.6.1.2.1.25.1.1.0.5.1.1.1.2.2" +TRAP, + 'SNMP set error on oid 1.3.6.1.2.1.25.1.1.0.5.1.1.1.2.2', + 'Could not handle ruckusEventSetErrorTrap', + ); } } diff --git a/tests/Feature/SnmpTraps/RuckusSzClusterStateTest.php b/tests/Feature/SnmpTraps/RuckusSzClusterStateTest.php index dcdeb9e5c8..8c68fc6a15 100644 --- a/tests/Feature/SnmpTraps/RuckusSzClusterStateTest.php +++ b/tests/Feature/SnmpTraps/RuckusSzClusterStateTest.php @@ -27,49 +27,40 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class RuckusSzClusterStateTest extends SnmpTrapTestCase { - public function testClusterInMaintenance() + public function testClusterInMaintenance(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 RUCKUS-SZ-EVENT-MIB::ruckusSZClusterInMaintenanceStateTrap -RUCKUS-SZ-EVENT-MIB::ruckusSZEventSeverity.0 \"Critical\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventCode.0 \"807\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventType.0 \"clusterInMaintenanceState\" -RUCKUS-SZ-EVENT-MIB::ruckusSZClusterName.0 \"$device->hostname\""; - - $trap = new Trap($trapText); - - $message = "Smartzone cluster $device->hostname state changed to maintenance"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 3); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle ruckusSZClusterInMaintenanceStateTrap'); +RUCKUS-SZ-EVENT-MIB::ruckusSZEventSeverity.0 "Critical" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventCode.0 "807" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventType.0 "clusterInMaintenanceState" +RUCKUS-SZ-EVENT-MIB::ruckusSZClusterName.0 "{{ hostname }}" +TRAP, + 'Smartzone cluster {{ hostname }} state changed to maintenance', + 'Could not handle ruckusSZClusterInMaintenanceStateTrap', + [3], + ); } - public function testClusterInService() + public function testClusterInService(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 RUCKUS-SZ-EVENT-MIB::ruckusSZClusterBackToInServiceTrap -RUCKUS-SZ-EVENT-MIB::ruckusSZEventSeverity.0 \"Informational\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventCode.0 \"808\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventType.0 \"clusterBackToInService\" -RUCKUS-SZ-EVENT-MIB::ruckusSZClusterName.0 \"$device->hostname\""; - - $trap = new Trap($trapText); - - $message = "Smartzone cluster $device->hostname is now in service"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle ruckusSZClusterBackToInServiceTrap'); +RUCKUS-SZ-EVENT-MIB::ruckusSZEventSeverity.0 "Informational" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventCode.0 "808" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventType.0 "clusterBackToInService" +RUCKUS-SZ-EVENT-MIB::ruckusSZClusterName.0 "{{ hostname }}" +TRAP, + 'Smartzone cluster {{ hostname }} is now in service', + 'Could not handle ruckusSZClusterBackToInServiceTrap', + ); } } diff --git a/tests/Feature/SnmpTraps/RuckusSzEventTest.php b/tests/Feature/SnmpTraps/RuckusSzEventTest.php index dec50d4581..81ec24fdb7 100644 --- a/tests/Feature/SnmpTraps/RuckusSzEventTest.php +++ b/tests/Feature/SnmpTraps/RuckusSzEventTest.php @@ -27,109 +27,97 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class RuckusSzEventTest extends SnmpTrapTestCase { - public function testSzApConf() + public function testSzApConf(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 RUCKUS-SZ-EVENT-MIB::ruckusSZAPConfUpdatedTrap -RUCKUS-SZ-EVENT-MIB::ruckusSZEventSeverity.0 \"Informational\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventCode.0 \"110\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventType.0 \"apConfUpdated\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPName.0 \"$device->hostname\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPMacAddr.0 \"de:ad:be:ef:33:40\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPIP.0 \"$device->ip\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPLocation.0 \"$device->location\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPDescription.0 \"$device->sysDescr\" -RUCKUS-SZ-EVENT-MIB::ruckusSZAPConfigID.0 \"2f860f70-6b88-11e9-a3c5-000000937916\""; - - $trap = new Trap($trapText); - - $message = "AP at location $device->location configuration updated with config-id 2f860f70-6b88-11e9-a3c5-000000937916"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle ruckusSZAPConfUpdatedTrap'); +RUCKUS-SZ-EVENT-MIB::ruckusSZEventSeverity.0 "Informational" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventCode.0 "110" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventType.0 "apConfUpdated" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPName.0 "{{ hostname }}" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPMacAddr.0 "de:ad:be:ef:33:40" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPIP.0 "{{ ip }}" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPLocation.0 "{{ location }}" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPDescription.0 "{{ sysDescr }}" +RUCKUS-SZ-EVENT-MIB::ruckusSZAPConfigID.0 "2f860f70-6b88-11e9-a3c5-000000937916" +TRAP, + 'AP at location {{ location }} configuration updated with config-id 2f860f70-6b88-11e9-a3c5-000000937916', + 'Could not handle ruckusSZAPConfUpdatedTrap', + [2], + ); } - public function testSzApConnect() + public function testSzApConnect(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 RUCKUS-SZ-EVENT-MIB::ruckusSZAPConnectedTrap -RUCKUS-SZ-EVENT-MIB::ruckusSZEventSeverity.0 \"Informational\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventCode.0 \"312\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventType.0 \"apConnected\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPName.0 \"$device->hostname\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPMacAddr.0 \"de:ad:be:ef:33:40\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPIP.0 \"$device->ip\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPLocation.0 \"$device->location\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPDescription.0 \"$device->sysDescr\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventReason.0 \"AP connected after rebooting\""; - - $trap = new Trap($trapText); - - $message = "AP at location $device->location has connected to the SmartZone with reason AP connected after rebooting"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle ruckusSZAPConnectedTrap'); +RUCKUS-SZ-EVENT-MIB::ruckusSZEventSeverity.0 "Informational" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventCode.0 "312" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventType.0 "apConnected" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPName.0 "{{ hostname }}" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPMacAddr.0 "de:ad:be:ef:33:40" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPIP.0 "{{ ip }}" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPLocation.0 "{{ location }}" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPDescription.0 "{{ sysDescr }}" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventReason.0 "AP connected after rebooting" +TRAP, + 'AP at location {{ location }} has connected to the SmartZone with reason AP connected after rebooting', + 'Could not handle ruckusSZAPConnectedTrap', + [2], + ); } - public function testSzApMiscEvent() + public function testSzApMiscEvent(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 RUCKUS-SZ-EVENT-MIB::ruckusSZAPMiscEventTrap -RUCKUS-SZ-EVENT-MIB::ruckusSZEventSeverity.0 \"Minor\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventCode.0 \"322\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventType.0 \"apWLANStateChanged\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPName.0 \"$device->hostname\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPMacAddr.0 \"de:ad:be:ef:33:40\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPIP.0 \"$device->ip\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPLocation.0 \"$device->location\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPDescription.0 \"$device->sysDescr\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventDescription.0 \"Test AP event has occured\""; - - $trap = new Trap($trapText); - - $message = 'AP event: Test AP event has occured'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 4); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle ruckusSZAPMiscEventTrap'); +RUCKUS-SZ-EVENT-MIB::ruckusSZEventSeverity.0 "Minor" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventCode.0 "322" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventType.0 "apWLANStateChanged" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPName.0 "{{ hostname }}" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPMacAddr.0 "de:ad:be:ef:33:40" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPIP.0 "{{ ip }}" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPLocation.0 "{{ location }}" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPDescription.0 "{{ sysDescr }}" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventDescription.0 "Test AP event has occurred" +TRAP, + 'AP event: Test AP event has occurred', + 'Could not handle ruckusSZAPMiscEventTrap', + [4], + ); } - public function testSzApRebooted() + public function testSzApRebooted(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 26:19:43:37.24 SNMPv2-MIB::snmpTrapOID.0 RUCKUS-SZ-EVENT-MIB::ruckusSZAPRebootTrap -RUCKUS-SZ-EVENT-MIB::ruckusSZEventSeverity.0 \"Critical\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventCode.0 \"301\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventType.0 \"apRebootByUser\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPName.0 \"$device->hostname\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPMacAddr.0 \"de:ad:be:ef:33:40\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPIP.0 \"$device->ip\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPLocation.0 \"$device->location\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPDescription.0 \"$device->sysDescr\" -RUCKUS-SZ-EVENT-MIB::ruckusSZEventReason.0 \"AP rebooted by controller user\""; - - $trap = new Trap($trapText); - - $message = "AP at site $device->location rebooted with reason AP rebooted by controller user"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 5); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle ruckusSZAPRebootTrap'); +RUCKUS-SZ-EVENT-MIB::ruckusSZEventSeverity.0 "Critical" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventCode.0 "301" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventType.0 "apRebootByUser" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPName.0 "{{ hostname }}" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPMacAddr.0 "de:ad:be:ef:33:40" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPIP.0 "{{ ip }}" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPLocation.0 "{{ location }}" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventAPDescription.0 "{{ sysDescr }}" +RUCKUS-SZ-EVENT-MIB::ruckusSZEventReason.0 "AP rebooted by controller user" +TRAP, + 'AP at site {{ location }} rebooted with reason AP rebooted by controller user', + 'Could not handle ruckusSZAPRebootTrap', + [5], + ); } } diff --git a/tests/Feature/SnmpTraps/SnTrapUserAuthTest.php b/tests/Feature/SnmpTraps/SnTrapUserAuthTest.php index a0fbc7e254..be2df6aef1 100644 --- a/tests/Feature/SnmpTraps/SnTrapUserAuthTest.php +++ b/tests/Feature/SnmpTraps/SnTrapUserAuthTest.php @@ -27,10 +27,6 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class SnTrapUserAuthTest extends SnmpTrapTestCase { /** @@ -39,21 +35,18 @@ class SnTrapUserAuthTest extends SnmpTrapTestCase * * @return void */ - public function testSnTrapUserLogin() + public function testSnTrapUserLogin(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 SNMPv2-MIB::snmpTrapOID.0 FOUNDRY-SN-TRAP-MIB::snTrapUserLogin DISMAN-EVENT-MIB::sysUpTimeInstance 172:9:43:55.64 -FOUNDRY-SN-AGENT-MIB::snAgGblTrapMessage.0 \"Security: ssh login by rancid from src IP $device->ip to PRIVILEGED EXEC mode using RSA as Server Host Key. \""; - - $trap = new Trap($trapText); - - $message = "Security: ssh login by rancid from src IP $device->ip to PRIVILEGED EXEC mode using RSA as Server Host Key. "; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle snTrapUserLogin'); +FOUNDRY-SN-AGENT-MIB::snAgGblTrapMessage.0 "Security: ssh login by rancid from src IP {{ ip }} to PRIVILEGED EXEC mode using RSA as Server Host Key. " +TRAP, + 'Security: ssh login by rancid from src IP {{ ip }} to PRIVILEGED EXEC mode using RSA as Server Host Key. ', + 'Could not handle snTrapUserLogin', + ); } /** @@ -62,20 +55,17 @@ FOUNDRY-SN-AGENT-MIB::snAgGblTrapMessage.0 \"Security: ssh login by rancid from * * @return void */ - public function testSnTrapUserLogout() + public function testSnTrapUserLogout(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:57602->[192.168.5.5]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:57602->[192.168.5.5]:162 SNMPv2-MIB::snmpTrapOID.0 FOUNDRY-SN-TRAP-MIB::snTrapUserLogin DISMAN-EVENT-MIB::sysUpTimeInstance 172:9:43:55.64 -FOUNDRY-SN-AGENT-MIB::snAgGblTrapMessage.0 \"Security: ssh logout by rancid from src IP $device->ip from USER EXEC mode using RSA as Server Host Key. \""; - - $trap = new Trap($trapText); - - $message = "Security: ssh logout by rancid from src IP $device->ip from USER EXEC mode using RSA as Server Host Key. "; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle snTrapUserLogout'); +FOUNDRY-SN-AGENT-MIB::snAgGblTrapMessage.0 "Security: ssh logout by rancid from src IP {{ ip }} from USER EXEC mode using RSA as Server Host Key. " +TRAP, + 'Security: ssh logout by rancid from src IP {{ ip }} from USER EXEC mode using RSA as Server Host Key. ', + 'Could not handle snTrapUserLogout', + ); } } diff --git a/tests/Feature/SnmpTraps/SnmpTrapTestCase.php b/tests/Feature/SnmpTraps/SnmpTrapTestCase.php index e10dc6ee94..4a1c15e0ae 100644 --- a/tests/Feature/SnmpTraps/SnmpTrapTestCase.php +++ b/tests/Feature/SnmpTraps/SnmpTrapTestCase.php @@ -25,10 +25,47 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use Illuminate\Foundation\Testing\DatabaseTransactions; -use LibreNMS\Tests\DBTestCase; +use App\Models\Device; +use App\Models\Location; +use App\View\SimpleTemplate; +use Illuminate\Support\Arr; +use LibreNMS\Snmptrap\Dispatcher; +use LibreNMS\Tests\TestCase; +use Mockery; -class SnmpTrapTestCase extends DBTestCase +abstract class SnmpTrapTestCase extends TestCase { - use DatabaseTransactions; // people skip this a lot so extract it to here + protected function assertTrapLogsMessage(string $rawTrap, string|array $log, string $failureMessage = '', array $args = [], ?Device $device = null): void + { + if ($device === null) { + $device = Device::factory()->make(['display' => '{{ hostname }}']); + $device->setRelation('location', Location::factory()->make()); + } + + $template_variables = [ + 'hostname' => $device->hostname, + 'ip' => $device->ip, + 'location' => $device->location, + 'sysDescr' => $device->sysDescr, + ]; + $rawTrap = SimpleTemplate::parse($rawTrap, $template_variables); + $trap = Mockery::mock('LibreNMS\Snmptrap\Trap[log,getDevice]', [$rawTrap]); + $trap->shouldReceive('getDevice')->andReturn($device); // mock getDevice to avoid saving to database + foreach (Arr::wrap($log) as $index => $message) { + $call_args = is_array($args[$index]) ? $args[$index] : $args; + + $trap->shouldReceive('log')->once()->with(SimpleTemplate::parse($message, $template_variables), ...$call_args); + } + + $log_spy = \Log::spy(); + + /** @var \LibreNMS\Snmptrap\Trap $trap */ + $this->assertTrue(Dispatcher::handle($trap), $failureMessage); + + // if the test set any log expectations, log_spy will be null + if ($log_spy != null) { + $log_spy->shouldNotHaveReceived('error'); + $log_spy->shouldNotHaveReceived('warning'); + } + } } diff --git a/tests/Feature/SnmpTraps/TrippliteTrapTest.php b/tests/Feature/SnmpTraps/TrippliteTrapTest.php index 2ec7f82aec..4858cc256d 100644 --- a/tests/Feature/SnmpTraps/TrippliteTrapTest.php +++ b/tests/Feature/SnmpTraps/TrippliteTrapTest.php @@ -25,17 +25,13 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; - class TrippliteTrapTest extends SnmpTrapTestCase { - public function testTlpNotificationsAlarmEntryAdded() + public function testTlpNotificationsAlarmEntryAdded(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:46024->[1.1.1.1]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:46024->[1.1.1.1]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 0:1:55:34.92 SNMPv2-MIB::snmpTrapOID.0 TRIPPLITE-PRODUCTS::tlpNotificationsAlarmEntryAdded TRIPPLITE-PRODUCTS::tlpAlarmId 6 @@ -49,21 +45,19 @@ TRIPPLITE-PRODUCTS::tlpAlarmState active TRIPPLITE-PRODUCTS::tlpDeviceName.1 $device->sysDescr TRIPPLITE-PRODUCTS::tlpDeviceLocation.1 $device->location TRIPPLITE-PRODUCTS::tlpAgentMAC.0 00:06:67:AE:BE:13 -TRIPPLITE-PRODUCTS::tlpAgentUuid.0 c94e376a-8080-44fb-96ad-0fe6583d1c4a"; - - $trap = new Trap($trapText); - - $message = 'Trap Alarm active: On Battery'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 4); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle tlpNotificationsAlarmEntryAdded'); +TRIPPLITE-PRODUCTS::tlpAgentUuid.0 c94e376a-8080-44fb-96ad-0fe6583d1c4a +TRAP, + 'Trap Alarm active: On Battery', + 'Could not handle tlpNotificationsAlarmEntryAdded', + [4], + ); } - public function testTlpNotificationsAlarmEntryRemoved() + public function testTlpNotificationsAlarmEntryRemoved(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $trapText = "$device->hostname -UDP: [$device->ip]:46024->[1.1.1.1]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:46024->[1.1.1.1]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 0:1:56:40.26 SNMPv2-MIB::snmpTrapOID.0 TRIPPLITE-PRODUCTS::tlpNotificationsAlarmEntryRemoved TRIPPLITE-PRODUCTS::tlpAlarmId 6 @@ -77,13 +71,11 @@ TRIPPLITE-PRODUCTS::tlpAlarmState inactive TRIPPLITE-PRODUCTS::tlpDeviceName.1 $device->sysDescr TRIPPLITE-PRODUCTS::tlpDeviceLocation.1 $device->location TRIPPLITE-PRODUCTS::tlpAgentMAC.0 00:06:67:AE:BE:13 -TRIPPLITE-PRODUCTS::tlpAgentUuid.0 c94e376a-8080-44fb-96ad-0fe6583d1c4a"; - - $trap = new Trap($trapText); - - $message = 'Trap Alarm inactive: On Utility Power'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle tlpNotificationsAlarmEntryRemoved'); +TRIPPLITE-PRODUCTS::tlpAgentUuid.0 c94e376a-8080-44fb-96ad-0fe6583d1c4a +TRAP, + 'Trap Alarm inactive: On Utility Power', + 'Could not handle tlpNotificationsAlarmEntryRemoved', + [2], + ); } } diff --git a/tests/Feature/SnmpTraps/UpsTrapOnBatteryTest.php b/tests/Feature/SnmpTraps/UpsTrapOnBatteryTest.php index 88cbf4193b..e63dbd5fe2 100644 --- a/tests/Feature/SnmpTraps/UpsTrapOnBatteryTest.php +++ b/tests/Feature/SnmpTraps/UpsTrapOnBatteryTest.php @@ -26,11 +26,14 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; use App\Models\Device; use App\Models\Sensor; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; +use Illuminate\Foundation\Testing\DatabaseTransactions; +use LibreNMS\Tests\Traits\RequiresDatabase; class UpsTrapOnBatteryTest extends SnmpTrapTestCase { + use RequiresDatabase; + use DatabaseTransactions; + public function testOnBattery(): void { $device = Device::factory()->create(); /** @var Device $device */ @@ -41,23 +44,22 @@ class UpsTrapOnBatteryTest extends SnmpTrapTestCase $device->sensors()->save($time); $device->sensors()->save($remaining); - $trapText = "$device->hostname + \Log::shouldReceive('warning')->never()->with("Snmptrap upsTrapOnBattery: Could not find matching sensor \'Estimated battery time remaining\' for device: " . $device->hostname); + \Log::shouldReceive('warning')->never()->with("Snmptrap upsTrapOnBattery: Could not find matching sensor \'Time on battery\' for device: " . $device->hostname); + \Log::shouldReceive('warning')->never()->with("Snmptrap upsTrapOnBattery: Could not find matching sensor \'upsOutputSourceState\' for device: " . $device->hostname); + + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:161->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 9:22:15:00.01 SNMPv2-MIB::snmpTrapOID.0 UPS-MIB::upsTrapOnBattery UPS-MIB::upsEstimatedMinutesRemaining 100 minutes UPS-MIB::upsSecondsOnBattery 120 seconds -UPS-MIB::upsConfigLowBattTime 1 minutes"; - - \Log::shouldReceive('warning')->never()->with("Snmptrap upsTrapOnBattery: Could not find matching sensor \'Estimated battery time remaining\' for device: " . $device->hostname); - \Log::shouldReceive('warning')->never()->with("Snmptrap upsTrapOnBattery: Could not find matching sensor \'Time on battery\' for device: " . $device->hostname); - \Log::shouldReceive('warning')->never()->with("Snmptrap upsTrapOnBattery: Could not find matching sensor \'upsOutputSourceState\' for device: " . $device->hostname); - - $message = 'UPS running on battery for 120 seconds. Estimated 100 minutes remaining'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 5); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle UPS-MIB::upsTrapOnBattery trap'); +UPS-MIB::upsConfigLowBattTime 1 minutes", + 'UPS running on battery for 120 seconds. Estimated 100 minutes remaining', + 'Could not handle UPS-MIB::upsTrapOnBattery trap', + [5], + $device, + ); $state = $state->fresh(); $time = $time->fresh(); diff --git a/tests/Feature/SnmpTraps/UpsTrapsOnBatteryTest.php b/tests/Feature/SnmpTraps/UpsTrapsOnBatteryTest.php index 0092cd21c4..7cc0ce3c3c 100644 --- a/tests/Feature/SnmpTraps/UpsTrapsOnBatteryTest.php +++ b/tests/Feature/SnmpTraps/UpsTrapsOnBatteryTest.php @@ -26,12 +26,15 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; use App\Models\Device; use App\Models\Sensor; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; +use Illuminate\Foundation\Testing\DatabaseTransactions; +use LibreNMS\Tests\Traits\RequiresDatabase; class UpsTrapsOnBatteryTest extends SnmpTrapTestCase { - public function testOnBattery() + use RequiresDatabase; + use DatabaseTransactions; + + public function testOnBattery(): void { $device = Device::factory()->create(); /** @var Device $device */ $state = Sensor::factory()->make(['sensor_class' => 'state', 'sensor_type' => 'upsOutputSourceState', 'sensor_current' => '2']); /** @var Sensor $state */ @@ -41,23 +44,22 @@ class UpsTrapsOnBatteryTest extends SnmpTrapTestCase $device->sensors()->save($time); $device->sensors()->save($remaining); - $trapText = "$device->hostname + \Log::shouldReceive('warning')->never()->with("Snmptrap UpsTraps: Could not find matching sensor \'Estimated battery time remaining\' for device: " . $device->hostname); + \Log::shouldReceive('warning')->never()->with("Snmptrap UpsTraps: Could not find matching sensor \'Time on battery\' for device: " . $device->hostname); + \Log::shouldReceive('warning')->never()->with("Snmptrap UpsTraps: Could not find matching sensor \'upsOutputSourceState\' for device: " . $device->hostname); + + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:161->[192.168.5.5]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 9:22:15:00.01 SNMPv2-MIB::snmpTrapOID.0 UPS-MIB::upsTraps.0.1 UPS-MIB::upsEstimatedMinutesRemaining.0 100 minutes UPS-MIB::upsSecondsOnBattery.0 120 seconds -UPS-MIB::upsConfigLowBattTime.0 1 minutes"; - - \Log::shouldReceive('warning')->never()->with("Snmptrap UpsTraps: Could not find matching sensor \'Estimated battery time remaining\' for device: " . $device->hostname); - \Log::shouldReceive('warning')->never()->with("Snmptrap UpsTraps: Could not find matching sensor \'Time on battery\' for device: " . $device->hostname); - \Log::shouldReceive('warning')->never()->with("Snmptrap UpsTraps: Could not find matching sensor \'upsOutputSourceState\' for device: " . $device->hostname); - - $message = 'UPS running on battery for 120 seconds. Estimated 100 minutes remaining'; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 5); - - $trap = new Trap($trapText); - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle UPS-MIB::upsTraps.0.1 trap'); +UPS-MIB::upsConfigLowBattTime.0 1 minutes", + 'UPS running on battery for 120 seconds. Estimated 100 minutes remaining', + 'Could not handle UPS-MIB::upsTraps.0.1 trap', + [5], + $device, + ); $state = $state->fresh(); $time = $time->fresh(); diff --git a/tests/Feature/SnmpTraps/VeeamTrapTest.php b/tests/Feature/SnmpTraps/VeeamTrapTest.php index c040875cc0..59036d4288 100644 --- a/tests/Feature/SnmpTraps/VeeamTrapTest.php +++ b/tests/Feature/SnmpTraps/VeeamTrapTest.php @@ -2,142 +2,119 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; -use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; -use Log; - class VeeamTrapTest extends SnmpTrapTestCase { public function testVeeamBackupJobCompleted(): void { - $device = Device::factory()->create(); - - $trapText = "$device->hostname -UDP: [$device->ip]:46024->[1.1.1.1]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:46024->[1.1.1.1]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 4:13:08:37.60 SNMPv2-MIB::snmpTrapOID.0 VEEAM-MIB::onBackupJobCompleted VEEAM-MIB::backupJobId 7a1b3549-c4c7-4629-84d6-74e24fee8011 VEEAM-MIB::backupJobName SureBackup Job 1 VEEAM-MIB::sourceHostName hostname VEEAM-MIB::backupJobComment comment -VEEAM-MIB::backupJobResult Success"; - - $trap = new Trap($trapText); - - $message = 'SNMP Trap: Backup Job Success - SureBackup Job 1 - comment'; - Log::shouldReceive('event')->once()->with($message, $device->device_id, 'backup', 1); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle VEEAM-MIB::traps'); +VEEAM-MIB::backupJobResult Success +TRAP, + 'SNMP Trap: Backup Job Success - SureBackup Job 1 - comment', + 'Could not handle VEEAM-MIB::traps job completed', + [1, 'backup'] + ); } public function testVeeamBackupJobCompletedWarning(): void { - $device = Device::factory()->create(); - - $trapText = "$device->hostname -UDP: [$device->ip]:46024->[1.1.1.1]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:46024->[1.1.1.1]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 4:13:08:37.60 SNMPv2-MIB::snmpTrapOID.0 VEEAM-MIB::onBackupJobCompleted VEEAM-MIB::backupJobId 7a1b3549-c4c7-4629-84d6-74e24fee8011 VEEAM-MIB::backupJobName SureBackup Job 1 VEEAM-MIB::sourceHostName hostname VEEAM-MIB::backupJobComment comment -VEEAM-MIB::backupJobResult Warning"; - - $trap = new Trap($trapText); - - $message = 'SNMP Trap: Backup Job Warning - SureBackup Job 1 - comment'; - Log::shouldReceive('event')->once()->with($message, $device->device_id, 'backup', 4); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle VEEAM-MIB::traps'); +VEEAM-MIB::backupJobResult Warning +TRAP, + 'SNMP Trap: Backup Job Warning - SureBackup Job 1 - comment', + 'Could not handle VEEAM-MIB::traps job completed warning', + [4, 'backup'], + ); } public function testVeeamBackupJobCompletedFailed(): void { - $device = Device::factory()->create(); - - $trapText = "$device->hostname -UDP: [$device->ip]:46024->[1.1.1.1]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:46024->[1.1.1.1]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 4:13:08:37.60 SNMPv2-MIB::snmpTrapOID.0 VEEAM-MIB::onBackupJobCompleted VEEAM-MIB::backupJobId 7a1b3549-c4c7-4629-84d6-74e24fee8011 VEEAM-MIB::backupJobName SureBackup Job 1 VEEAM-MIB::sourceHostName hostname VEEAM-MIB::backupJobComment comment -VEEAM-MIB::backupJobResult Failed"; - - $trap = new Trap($trapText); - - $message = 'SNMP Trap: Backup Job Failed - SureBackup Job 1 - comment'; - Log::shouldReceive('event')->once()->with($message, $device->device_id, 'backup', 5); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle VEEAM-MIB::traps'); +VEEAM-MIB::backupJobResult Failed +TRAP, + 'SNMP Trap: Backup Job Failed - SureBackup Job 1 - comment', + 'Could not handle VEEAM-MIB::traps job completed failed', + [5, 'backup'], + ); } public function testVeeamVmBackupCompleted(): void { - $device = Device::factory()->create(); - - $trapText = "$device->hostname -UDP: [$device->ip]:46024->[1.1.1.1]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:46024->[1.1.1.1]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 4:13:08:37.60 SNMPv2-MIB::snmpTrapOID.0 VEEAM-MIB::onVmBackupCompleted VEEAM-MIB::backupJobName Linux taeglich low VEEAM-MIB::vmName vmname1 VEEAM-MIB::sourceHostName hostname VEEAM-MIB::vmBackupComment comment -VEEAM-MIB::vmBackupResult Success"; - - $trap = new Trap($trapText); - - $message = 'SNMP Trap: VM backup Success - vmname1 Job: Linux taeglich low - comment'; - Log::shouldReceive('event')->once()->with($message, $device->device_id, 'backup', 1); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle VEEAM-MIB::traps'); +VEEAM-MIB::vmBackupResult Success +TRAP, + 'SNMP Trap: VM backup Success - vmname1 Job: Linux taeglich low - comment', + 'Could not handle VEEAM-MIB::traps backup completed', + [1, 'backup'], + ); } public function testVeeamVmBackupCompletedWarning(): void { - $device = Device::factory()->create(); - - $trapText = "$device->hostname -UDP: [$device->ip]:46024->[1.1.1.1]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:46024->[1.1.1.1]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 4:13:08:37.60 SNMPv2-MIB::snmpTrapOID.0 VEEAM-MIB::onVmBackupCompleted VEEAM-MIB::backupJobName Linux taeglich low VEEAM-MIB::vmName vmname1 VEEAM-MIB::sourceHostName hostname VEEAM-MIB::vmBackupComment comment -VEEAM-MIB::vmBackupResult Warning"; - - $trap = new Trap($trapText); - - $message = 'SNMP Trap: VM backup Warning - vmname1 Job: Linux taeglich low - comment'; - Log::shouldReceive('event')->once()->with($message, $device->device_id, 'backup', 4); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle VEEAM-MIB::traps'); +VEEAM-MIB::vmBackupResult Warning +TRAP, + 'SNMP Trap: VM backup Warning - vmname1 Job: Linux taeglich low - comment', + 'Could not handle VEEAM-MIB::traps backup completed warning', + [4, 'backup'], + ); } public function testVeeamVmBackupCompletedFailed(): void { - $device = Device::factory()->create(); - - $trapText = "$device->hostname -UDP: [$device->ip]:46024->[1.1.1.1]:162 + $this->assertTrapLogsMessage(<<<'TRAP' +{{ hostname }} +UDP: [{{ ip }}]:46024->[1.1.1.1]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 4:13:08:37.60 SNMPv2-MIB::snmpTrapOID.0 VEEAM-MIB::onVmBackupCompleted VEEAM-MIB::backupJobName Linux taeglich low VEEAM-MIB::vmName vmname1 VEEAM-MIB::sourceHostName hostname VEEAM-MIB::vmBackupComment comment -VEEAM-MIB::vmBackupResult Failed"; - - $trap = new Trap($trapText); - - $message = 'SNMP Trap: VM backup Failed - vmname1 Job: Linux taeglich low - comment'; - Log::shouldReceive('event')->once()->with($message, $device->device_id, 'backup', 5); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle VEEAM-MIB::traps'); +VEEAM-MIB::vmBackupResult Failed +TRAP, + 'SNMP Trap: VM backup Failed - vmname1 Job: Linux taeglich low - comment', + 'Could not handle VEEAM-MIB::traps backup completed failed', + [5, 'backup'], + ); } } diff --git a/tests/Feature/SnmpTraps/VmwHBTest.php b/tests/Feature/SnmpTraps/VmwHBTest.php index efe48a0605..9dc13c67f4 100644 --- a/tests/Feature/SnmpTraps/VmwHBTest.php +++ b/tests/Feature/SnmpTraps/VmwHBTest.php @@ -28,50 +28,42 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; use App\Models\Device; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; class VmwHBTest extends SnmpTrapTestCase { - public function testVmwVmHBLostTrap() + public function testVmwVmHBLostTrap(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $guest = Device::factory()->create(); /** @var Device $guest */ - $trapText = "$device->hostname -UDP: [$device->ip]:28386->[10.10.10.100]:162 + $guest = Device::factory()->make(); /** @var Device $guest */ + $this->assertTrapLogsMessage("{{ hostname }} +UDP: [{{ ip }}]:28386->[10.10.10.100]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 5:18:30:26.00 SNMPv2-MIB::snmpTrapOID.0 VMWARE-VMINFO-MIB::vmwVmHBLost VMWARE-VMINFO-MIB::vmwVmID.0 28 VMWARE-VMINFO-MIB::vmwVmConfigFilePath.0 /vmfs/volumes/50101bda-eaf6ac7e-7e44-d4ae5267fb9f/$guest->hostname/$guest->hostname.vmx VMWARE-VMINFO-MIB::vmwVmDisplayName.28 $guest->hostname SNMP-COMMUNITY-MIB::snmpTrapAddress.0 $guest->ip SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 \"public\" -SNMPv2-MIB::snmpTrapEnterprise.0 VMWARE-PRODUCTS-MIB::vmwESX"; - - $trap = new Trap($trapText); - $message = "Heartbeat from guest $guest->hostname lost"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 4); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle VmwVmHBLostTrap'); +SNMPv2-MIB::snmpTrapEnterprise.0 VMWARE-PRODUCTS-MIB::vmwESX", + "Heartbeat from guest $guest->hostname lost", + 'Could not handle VmwVmHBLostTrap', + [4], + ); } - public function testVmwVmHBDetectedTrap() + public function testVmwVmHBDetectedTrap(): void { - $device = Device::factory()->create(); /** @var Device $device */ - $guest = Device::factory()->create(); /** @var Device $guest */ - $trapText = "$device->hostname -UDP: [$device->ip]:28386->[10.10.10.100]:162 + $guest = Device::factory()->make(); /** @var Device $guest */ + $this->assertTrapLogsMessage("{{ hostname }} +UDP: [{{ ip }}]:28386->[10.10.10.100]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 5:18:30:26.00 SNMPv2-MIB::snmpTrapOID.0 VMWARE-VMINFO-MIB::vmwVmHBDetected VMWARE-VMINFO-MIB::vmwVmID.0 28 VMWARE-VMINFO-MIB::vmwVmConfigFilePath.0 /vmfs/volumes/50101bda-eaf6ac7e-7e44-d4ae5267fb9f/$guest->hostname/$guest->hostname.vmx VMWARE-VMINFO-MIB::vmwVmDisplayName.28 $guest->hostname SNMP-COMMUNITY-MIB::snmpTrapAddress.0 $guest->ip SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 \"public\" -SNMPv2-MIB::snmpTrapEnterprise.0 VMWARE-PRODUCTS-MIB::vmwESX"; - - $trap = new Trap($trapText); - $message = "Heartbeat from guest $guest->hostname detected"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 1); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle VmwVmHBDetectedTrap'); +SNMPv2-MIB::snmpTrapEnterprise.0 VMWARE-PRODUCTS-MIB::vmwESX", + "Heartbeat from guest $guest->hostname detected", + 'Could not handle VmwVmHBDetectedTrap', + [1], + ); } } diff --git a/tests/Feature/SnmpTraps/VmwPowerStateTest.php b/tests/Feature/SnmpTraps/VmwPowerStateTest.php index 6a46d8606c..c7255ca676 100644 --- a/tests/Feature/SnmpTraps/VmwPowerStateTest.php +++ b/tests/Feature/SnmpTraps/VmwPowerStateTest.php @@ -29,16 +29,22 @@ namespace LibreNMS\Tests\Feature\SnmpTraps; use App\Models\Device; use App\Models\Vminfo; -use LibreNMS\Snmptrap\Dispatcher; -use LibreNMS\Snmptrap\Trap; +use Illuminate\Foundation\Testing\DatabaseTransactions; +use LibreNMS\Enum\PowerState; +use LibreNMS\Tests\Traits\RequiresDatabase; class VmwPowerStateTest extends SnmpTrapTestCase { - public function testVmwVmPoweredOffTrap() + use RequiresDatabase; + use DatabaseTransactions; + + public function testVmwVmPoweredOffTrap(): void { $device = Device::factory()->create(); /** @var Device $device */ - $guest = Vminfo::factory()->create(['device_id' => $device->device_id]); /** @var Vminfo $guest */ - $trapText = "$device->hostname + $guest = Vminfo::factory()->make(); /** @var Vminfo $guest */ + $device->vminfo()->save($guest); + + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:28386->[10.10.10.100]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 5:18:30:26.00 SNMPv2-MIB::snmpTrapOID.0 VMWARE-VMINFO-MIB::vmwVmPoweredOff @@ -46,20 +52,23 @@ VMWARE-VMINFO-MIB::vmwVmID.0 28 VMWARE-VMINFO-MIB::vmwVmConfigFilePath.0 /vmfs/v VMWARE-VMINFO-MIB::vmwVmDisplayName.28 $guest->vmwVmDisplayName SNMP-COMMUNITY-MIB::snmpTrapAddress.0 $device->ip SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 \"public\" -SNMPv2-MIB::snmpTrapEnterprise.0 VMWARE-PRODUCTS-MIB::vmwESX"; +SNMPv2-MIB::snmpTrapEnterprise.0 VMWARE-PRODUCTS-MIB::vmwESX", + "Guest $guest->vmwVmDisplayName was powered off", + 'Could not handle VmwVmPoweredOffTrap', + device: $device, + ); - $trap = new Trap($trapText); - $message = "Guest $guest->vmwVmDisplayName was powered off"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle VmwVmPoweredOffTrap'); + $guest->refresh(); + $this->assertEquals(PowerState::OFF, $guest->vmwVmState); } - public function testVmwVmPoweredONTrap() + public function testVmwVmPoweredONTrap(): void { $device = Device::factory()->create(); /** @var Device $device */ - $guest = Vminfo::factory()->create(['device_id' => $device->device_id]); /** @var Vminfo $guest */ - $trapText = "$device->hostname + $guest = Vminfo::factory()->make(); /** @var Vminfo $guest */ + $device->vminfo()->save($guest); + + $this->assertTrapLogsMessage("$device->hostname UDP: [$device->ip]:28386->[10.10.10.100]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 5:18:30:26.00 SNMPv2-MIB::snmpTrapOID.0 VMWARE-VMINFO-MIB::vmwVmPoweredOn @@ -67,33 +76,37 @@ VMWARE-VMINFO-MIB::vmwVmID.0 28 VMWARE-VMINFO-MIB::vmwVmConfigFilePath.0 /vmfs/v VMWARE-VMINFO-MIB::vmwVmDisplayName.28 $guest->vmwVmDisplayName SNMP-COMMUNITY-MIB::snmpTrapAddress.0 $device->ip SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 \"public\" -SNMPv2-MIB::snmpTrapEnterprise.0 VMWARE-PRODUCTS-MIB::vmwESX"; +SNMPv2-MIB::snmpTrapEnterprise.0 VMWARE-PRODUCTS-MIB::vmwESX", + "Guest $guest->vmwVmDisplayName was powered on", + 'Could not handle VmwVmPoweredOnTrap', + device: $device, + ); - $trap = new Trap($trapText); - $message = "Guest $guest->vmwVmDisplayName was powered on"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle VmwVmPoweredOnTrap'); + $guest->refresh(); + $this->assertEquals(PowerState::ON, $guest->vmwVmState); } - public function testVmwVmSuspendedTrap() + public function testVmwVmSuspendedTrap(): void { $device = Device::factory()->create(); /** @var Device $device */ - $guest = Vminfo::factory()->create(['device_id' => $device->device_id]); /** @var Vminfo $guest */ - $trapText = "$device->hostname -UDP: [$device->ip]:28386->[10.10.10.100]:162 + $guest = Vminfo::factory()->make(); /** @var Vminfo $guest */ + $device->vminfo()->save($guest); + + $this->assertTrapLogsMessage("{{ hostname }} +UDP: [{{ ip }}]:28386->[10.10.10.100]:162 DISMAN-EVENT-MIB::sysUpTimeInstance 5:18:30:26.00 SNMPv2-MIB::snmpTrapOID.0 VMWARE-VMINFO-MIB::vmwVmSuspended VMWARE-VMINFO-MIB::vmwVmID.0 28 VMWARE-VMINFO-MIB::vmwVmConfigFilePath.0 /vmfs/volumes/50101bda-eaf6ac7e-7e44-d4ae5267fb9f/$guest->vmwVmDisplayName/$guest->vmwVmDisplayName.vmx VMWARE-VMINFO-MIB::vmwVmDisplayName.28 $guest->vmwVmDisplayName SNMP-COMMUNITY-MIB::snmpTrapAddress.0 $device->ip SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 \"public\" -SNMPv2-MIB::snmpTrapEnterprise.0 VMWARE-PRODUCTS-MIB::vmwESX"; +SNMPv2-MIB::snmpTrapEnterprise.0 VMWARE-PRODUCTS-MIB::vmwESX", + "Guest $guest->vmwVmDisplayName has been suspended", + 'Could not handle VmwVmSuspendedTrap', + device: $device, + ); - $trap = new Trap($trapText); - $message = "Guest $guest->vmwVmDisplayName has been suspended"; - \Log::shouldReceive('event')->once()->with($message, $device->device_id, 'trap', 2); - - $this->assertTrue(Dispatcher::handle($trap), 'Could not handle VmwVmSuspendedTrap'); + $guest->refresh(); + $this->assertEquals(PowerState::SUSPENDED, $guest->vmwVmState); } } diff --git a/tests/Traits/RequiresDatabase.php b/tests/Traits/RequiresDatabase.php new file mode 100644 index 0000000000..ea7d9b2a96 --- /dev/null +++ b/tests/Traits/RequiresDatabase.php @@ -0,0 +1,38 @@ +. + * + * @link https://www.librenms.org + * + * @copyright 2022 Tony Murray + * @author Tony Murray + */ + +namespace LibreNMS\Tests\Traits; + +trait RequiresDatabase +{ + public static function setUpBeforeClass(): void + { + if (! getenv('DBTEST')) { + static::markTestSkipped('Database tests not enabled. Set DBTEST=1 to enable.'); + } + + parent::setUpBeforeClass(); + } +}