public function testGetByType() { Yii::app()->user->userModel = User::getByUsername('super'); $jobLog = new JobLog(); $jobLog->type = 'Monitor'; $jobLog->startDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $jobLog->endDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $jobLog->status = JobLog::STATUS_COMPLETE_WITHOUT_ERROR; $jobLog->isProcessed = false; $this->assertTrue($jobLog->save()); $jobLog = new JobLog(); $jobLog->type = 'Monitor'; $jobLog->startDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $jobLog->endDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $jobLog->status = JobLog::STATUS_COMPLETE_WITHOUT_ERROR; $jobLog->isProcessed = false; $this->assertTrue($jobLog->save()); $jobLog = new JobLog(); $jobLog->type = 'SomethingElse'; $jobLog->startDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $jobLog->endDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $jobLog->status = JobLog::STATUS_COMPLETE_WITHOUT_ERROR; $jobLog->isProcessed = false; $this->assertTrue($jobLog->save()); $jobLogs = JobLog::getByType('Monitor'); $this->assertCount(2, $jobLogs); $jobLogs = JobLog::getByType('Monitor', 1); $this->assertCount(1, $jobLogs); $jobLogs = JobLog::getByType('SomethingElse'); $this->assertCount(1, $jobLogs); $jobLogs = JobLog::getByType('SomethingElse', 1); $this->assertCount(1, $jobLogs); }
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 testJobLog() { Yii::app()->user->userModel = User::getByUsername('super'); $jobLog = new JobLog(); $jobLog->type = 'Monitor'; $jobLog->startDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $jobLog->endDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $jobLog->status = JobLog::STATUS_COMPLETE_WITHOUT_ERROR; //Should fail to save because isProcessed is not specified. $this->assertFalse($jobLog->save()); $jobLog->isProcessed = false; $this->assertTrue($jobLog->save()); $id = $jobLog->id; $jobLog = JobLog::getById($id); $jobLog->delete(); $this->assertEquals(0, count(JobInProcess::getAll())); }
public function testRenderStatusAndMessageListContent() { $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super'); $jobLog = new JobLog(); $jobLog->isProcessed = true; $jobLog->type = 'Monitor'; $jobLog->startDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $jobLog->endDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $jobLog->status = JobLog::STATUS_COMPLETE_WITHOUT_ERROR; $this->assertTrue($jobLog->save()); $this->setGetArray(array('type' => 'Monitor')); $content = $this->runControllerWithNoExceptionsAndGetContent('jobsManager/default/jobLogsModalList'); $this->assertTrue(stripos($content, Zurmo::t('Core', 'Completed')) !== false); $jobLog->status = JobLog::STATUS_COMPLETE_WITH_ERROR; $this->assertTrue($jobLog->save()); $this->setGetArray(array('type' => 'Monitor')); $content = $this->runControllerWithNoExceptionsAndGetContent('jobsManager/default/jobLogsModalList'); $this->assertTrue(stripos($content, Zurmo::t('JobsManagerModule', 'Completed with Errors')) !== false); $jobLog->status = null; $this->assertFalse($jobLog->save()); }
/** * Special method to load up many job logs to view paginiation, modal, etc. in job log modal view */ public function actionLoadManyJobLogs() { if (Yii::app()->user->userModel->username != 'super') { throw new NotSupportedException(); } echo 'Creating jobs for CurrencyRatesUpdate' . "\n"; for ($i = 0; $i < 10; $i++) { $jobLog = new JobLog(); $jobLog->type = 'CurrencyRatesUpdate'; $jobLog->startDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $jobLog->endDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $jobLog->status = JobLog::STATUS_COMPLETE_WITHOUT_ERROR; $jobLog->isProcessed = true; $jobLog->message = 'A test message.'; $saved = $jobLog->save(); if (!$saved) { throw new FailedToSaveModelException(); } } }
/** * @depends testFlashMessageShowsUpIfJobsDidntRun */ public function testFlashMessageDoesNotShowUpIfJobsHaveRun() { $jobLog = new JobLog(); $jobLog->type = 'AutoresponderQueueMessagesInOutbox'; $jobLog->startDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $jobLog->endDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $jobLog->status = JobLog::STATUS_COMPLETE_WITHOUT_ERROR; $jobLog->isProcessed = false; $this->assertTrue($jobLog->save()); $jobLog = new JobLog(); $jobLog->type = 'ProcessOutboundEmail'; $jobLog->startDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $jobLog->endDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $jobLog->status = JobLog::STATUS_COMPLETE_WITHOUT_ERROR; $jobLog->isProcessed = false; $this->assertTrue($jobLog->save()); $redirectUrl = 'http://www.zurmo.com/'; $this->setGetArray(array('marketingListId' => static::$marketingListId, 'redirectUrl' => $redirectUrl)); $content = $this->runControllerWithNoExceptionsAndGetContent('autoresponders/default/create'); $compareContent = 'Autoresponders will not run properly until scheduled jobs are set up. Contact your administrator.'; $this->assertNotContains($compareContent, $content); }
/** * Given a 'type' of job, run the job. This is for non-monitor jobs only. * @param $type * @param MessageLogger $messageLogger * @param $isJobInProgress * @throws FailedToSaveModelException */ public static function runNonMonitorJob($type, MessageLogger $messageLogger, &$isJobInProgress) { assert('is_string($type) && $type != "Monitor"'); assert('is_bool($isJobInProgress)'); try { JobInProcess::getByType($type); $messageLogger->addInfoMessage("Existing job detected"); $isJobInProgress = true; } catch (NotFoundException $e) { $jobInProcess = new JobInProcess(); $jobInProcess->type = $type; $jobInProcess->save(); $startDateTime = $jobInProcess->createdDateTime; $jobClassName = $type . 'Job'; $job = new $jobClassName(); $job->setMessageLogger($messageLogger); $ranSuccessfully = $job->run(); $errorMessage = $job->getErrorMessage(); $jobInProcess->delete(); $jobLog = new JobLog(); $jobLog->type = $type; $jobLog->startDateTime = $startDateTime; $jobLog->endDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); if ($ranSuccessfully) { $messageLogger->addInfoMessage("Job completed successfully"); $jobLog->status = JobLog::STATUS_COMPLETE_WITHOUT_ERROR; } else { $messageLogger->addInfoMessage("Job completed with errors"); $jobLog->status = JobLog::STATUS_COMPLETE_WITH_ERROR; $jobLog->message = $errorMessage; } $jobLog->isProcessed = false; if (!$jobLog->save()) { throw new FailedToSaveModelException(); } $stuckJob = StuckJob::getByType($type); $stuckJob->quantity = 0; if (!$stuckJob->save()) { throw new FailedToSaveModelException(); } } }
/** * @depends testSuperUserAllDefaultControllerActions */ public function testWhenJobsHaveRunTheFlashMessageDoesNotShowUp() { $jobLog = new JobLog(); $jobLog->type = 'CampaignGenerateDueCampaignItems'; $jobLog->startDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $jobLog->endDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $jobLog->status = JobLog::STATUS_COMPLETE_WITHOUT_ERROR; $jobLog->isProcessed = false; $this->assertTrue($jobLog->save()); $jobLog = new JobLog(); $jobLog->type = 'CampaignMarkCompleted'; $jobLog->startDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $jobLog->endDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $jobLog->status = JobLog::STATUS_COMPLETE_WITHOUT_ERROR; $jobLog->isProcessed = false; $this->assertTrue($jobLog->save()); $jobLog = new JobLog(); $jobLog->type = 'CampaignQueueMessagesInOutbox'; $jobLog->startDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $jobLog->endDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $jobLog->status = JobLog::STATUS_COMPLETE_WITHOUT_ERROR; $jobLog->isProcessed = false; $this->assertTrue($jobLog->save()); $jobLog = new JobLog(); $jobLog->type = 'ProcessOutboundEmail'; $jobLog->startDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $jobLog->endDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $jobLog->status = JobLog::STATUS_COMPLETE_WITHOUT_ERROR; $jobLog->isProcessed = false; $this->assertTrue($jobLog->save()); $content = $this->runControllerWithNoExceptionsAndGetContent('campaigns/default/create'); $compareContent = 'Campaigns will not run properly until scheduled jobs are set up. Contact your administrator.'; $this->assertNotContains($compareContent, $content); }