/** * @expectedException LaterJob\Exception * @expectedExceptionMessage SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '2012-11-27 13:00:00' for key */ public function testOnMonitorLockAlreadyHasException() { $date = new DateTime('27-11-2012 13:00:00'); $transition_gateway = $this->getTransitionTableGateway(); $monitor_gateway = $this->getMonitorTableGateway(); $handler = new MonitorSubscriber($monitor_gateway, $transition_gateway); # create stats container for results of the monitoring event $stats = new Stats(); $stats->setMonitorDate($date); $stats->setWorkerMaxThroughput(50); $stats_repeat = new Stats(); $stats_repeat->setMonitorDate($date); $stats_repeat->setWorkerMaxThroughput(50); # create event object to pass to handle $event = new MonitoringEvent($stats); $event->setInterval('+ 5 hours'); $event_repeat = new MonitoringEvent($stats_repeat); $event_repeat->setInterval('+ 5 hours'); # first call work as normal $handler->onMonitorLock($event); $this->assertTrue($event->getResult()); $this->assertEquals(1, $event->getStats()->getMonitorId(1)); # lock in place should FAIL $handler->onMonitorLock($event_repeat); }
public function testOnMonitorLock() { $date = new DateTime('10-12-2012 01:00:00'); $transition_gateway = $this->getTransitionTableGateway(); $monitor_gateway = $this->getMonitorTableGateway(); $handler = new MonitorSubscriber($monitor_gateway, $transition_gateway); $stats = new Stats(); $event = new MonitoringEvent($stats); $stats->setMonitorDate($date); $handler->onMonitorLock($event); $resulting_table = $this->getConnection()->createQueryTable("later_job_monitor", "SELECT * FROM later_job_monitor LIMIT 1"); $expected_table = $this->createXmlDataSet(__DIR__ . DIRECTORY_SEPARATOR . 'Fixture' . DIRECTORY_SEPARATOR . "lock_handler_result.xml")->getTable("later_job_monitor"); $this->assertEquals(true, $event->getResult()); $this->assertTablesEqual($expected_table, $resulting_table); }