public function testRun() { //Create 2 jobLogs, and set one with a date over a week ago (8 days ago) for the endDateTime $eightDaysAgoTimestamp = DateTimeUtil::convertTimestampToDbFormatDateTime(time() - 60 * 60 * 24 * 8); $jobLog = new JobLog(); $jobLog->type = 'Monitor'; $jobLog->startDateTime = $eightDaysAgoTimestamp; $jobLog->endDateTime = $eightDaysAgoTimestamp; $jobLog->status = JobLog::STATUS_COMPLETE_WITHOUT_ERROR; $jobLog->isProcessed = false; $jobLog->save(); $jobLog2 = new JobLog(); $jobLog2->type = 'ImportCleanup'; $jobLog2->startDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $jobLog2->endDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $jobLog2->status = JobLog::STATUS_COMPLETE_WITHOUT_ERROR; $jobLog2->isProcessed = false; $jobLog2->save(); $sql = 'select count(*) count from item'; $row = R::getRow($sql); $this->assertEquals(4, $row['count']); $job = new JobLogCleanupJob(); $this->assertTrue($job->run()); $jobLogs = JobLog::getAll(); $this->assertEquals(1, count($jobLogs)); $this->assertEquals($jobLog2->id, $jobLogs[0]->id); $sql = 'select count(*) count from item'; $row = R::getRow($sql); $this->assertEquals(3, $row['count']); }
public function testRunMonitorJob() { Yii::app()->user->userModel = User::getByUsername('super'); foreach (JobLog::getAll() as $jobLog) { $jobLog->delete(); } $isJobInProgress = false; JobsManagerUtil::runNonMonitorJob('Test', new MessageLogger(), $isJobInProgress); $this->assertFalse($isJobInProgress); $jobLogs = JobLog::getAll(); $this->assertEquals(1, count($jobLogs)); $this->assertEquals(0, $jobLogs[0]->isProcessed); $jobLogId = $jobLogs[0]->id; $jobLogs[0]->forget(); //to ensure cache is cleared before running monitor job $isJobInProgress = false; JobsManagerUtil::runMonitorJob(new MessageLogger(), $isJobInProgress); $this->assertFalse($isJobInProgress); $jobLogs = JobLog::getAll(); $this->assertEquals(2, count($jobLogs)); $this->assertEquals($jobLogId, $jobLogs[0]->id); $this->assertEquals(1, $jobLogs[0]->isProcessed); $this->assertEquals(0, $jobLogs[1]->isProcessed); }