. * * @link https://www.librenms.org */ namespace LibreNMS\Tests\Feature\SnmpTraps; use App\Models\Device; use LibreNMS\Snmptrap\Dispatcher; use LibreNMS\Snmptrap\Trap; class ApcPduOverloadTest extends SnmpTrapTestCase { /** * Test ApcPduNearOverload trap handle * * @return void */ public function testNearOverload() { $device = Device::factory()->create(); /** @var Device $device */ $trapText = "$device->hostname UDP: [$device->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::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'); } /** * Test ApcPduNearOverloadClear trap handle * * @return void */ public function testNearOverloadClear() { $device = Device::factory()->create(); /** @var Device $device */ $trapText = "$device->hostname UDP: [$device->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::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'); } /** * Test ApcPduOverload trap handle * * @return void */ public function testOverload() { $device = Device::factory()->create(); /** @var Device $device */ $trapText = "$device->hostname UDP: [$device->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::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'); } /** * Test ApcPduOverloadCleared trap handle * * @return void */ public function testOverloadClear() { $device = Device::factory()->create(); /** @var Device $device */ $trapText = "$device->hostname UDP: [$device->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::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'); } }