Example #1
0
 /**
  * Dataprovider for testRun
  */
 public function runDataProvider()
 {
     $now = time();
     $dailySchedule = $this->getMock('Piwik\\Scheduler\\Schedule\\Daily', array('getTime'));
     $dailySchedule->expects($this->any())->method('getTime')->will($this->returnValue($now));
     $scheduledTaskOne = new Task($this, 'scheduledTaskOne', null, $dailySchedule);
     $scheduledTaskTwo = new Task($this, 'scheduledTaskTwo', 1, $dailySchedule);
     $scheduledTaskThree = new Task($this, 'scheduledTaskThree', null, $dailySchedule);
     $caseOneExpectedTable = array(__CLASS__ . '.scheduledTaskOne' => $scheduledTaskOne->getRescheduledTime(), __CLASS__ . '.scheduledTaskTwo_1' => $now + 60000, __CLASS__ . '.scheduledTaskThree' => $scheduledTaskThree->getRescheduledTime());
     $caseTwoTimetableBeforeExecution = $caseOneExpectedTable;
     $caseTwoTimetableBeforeExecution[__CLASS__ . '.scheduledTaskThree'] = $now;
     // simulate elapsed time between case 1 and 2
     return array(array($caseOneExpectedTable, array(__CLASS__ . '.scheduledTaskOne'), array(__CLASS__ . '.scheduledTaskOne' => $now, __CLASS__ . '.scheduledTaskTwo_1' => $now + 60000), array($scheduledTaskOne, $scheduledTaskTwo, $scheduledTaskThree)), array(array(__CLASS__ . '.scheduledTaskOne' => $scheduledTaskOne->getRescheduledTime(), __CLASS__ . '.scheduledTaskThree' => $scheduledTaskThree->getRescheduledTime()), array(__CLASS__ . '.scheduledTaskThree'), $caseTwoTimetableBeforeExecution, array($scheduledTaskOne, $scheduledTaskThree)));
 }
Example #2
0
 /**
  * @dataProvider getTaskNameTestCases
  */
 public function testGetTaskName($expectedTaskName, $className, $methodName, $methodParameter)
 {
     $this->assertEquals($expectedTaskName, Task::getTaskName($className, $methodName, $methodParameter));
 }
Example #3
0
 public function getScheduledTimeForMethod($className, $methodName, $methodParameter = null)
 {
     $taskName = Task::getTaskName($className, $methodName, $methodParameter);
     return $this->taskHasBeenScheduledOnce($taskName) ? $this->timetable[$taskName] : false;
 }
Example #4
0
 /**
  * Executes the given task
  *
  * @param Task $task
  * @return string
  */
 private function executeTask($task)
 {
     $this->logger->info("Scheduler: executing task {taskName}...", array('taskName' => $task->getName()));
     $this->isRunningTask = true;
     $timer = new Timer();
     try {
         $callable = array($task->getObjectInstance(), $task->getMethodName());
         call_user_func($callable, $task->getMethodParameter());
         $message = $timer->__toString();
     } catch (Exception $e) {
         $message = 'ERROR: ' . $e->getMessage();
     }
     $this->isRunningTask = false;
     $this->logger->info("Scheduler: finished. {timeElapsed}", array('timeElapsed' => $timer));
     return $message;
 }
Example #5
0
 /**
  * Executes the given task
  *
  * @param Task $task
  * @return string
  */
 private function executeTask($task)
 {
     $this->logger->debug('Running task {task}', array('task' => $task->getName()));
     try {
         $timer = new Timer();
         call_user_func(array($task->getObjectInstance(), $task->getMethodName()), $task->getMethodParameter());
         $message = $timer->__toString();
     } catch (Exception $e) {
         $message = 'ERROR: ' . $e->getMessage();
     }
     return $message;
 }
 /**
  * See {@link Piwik\Scheduler\Schedule\Schedule::getRescheduledTime()}.
  */
 public function getRescheduledTime()
 {
     $nextScheduledTime = parent::getRescheduledTime();
     // if a geoip database is out of date, run the updater as soon as possible
     if ($this->isAtLeastOneGeoIpDbOutOfDate($nextScheduledTime)) {
         return time();
     }
     return $nextScheduledTime;
 }