/** * Returns the next scheduled time for the auto updater. * * @return Date|false */ public static function getNextRunTime() { $task = new GeoIPAutoUpdater(); $timetable = new ScheduledTaskTimetable(); return $timetable->getScheduledTaskTime($task->getName()); }
/** * @group Core * * @dataProvider testRunTasksTestCases */ public function testRunTasks($expectedTimetable, $expectedExecutedTasks, $timetableBeforeTaskExecution, $configuredTasks) { // temporarily unload plugins $plugins = \Piwik\Plugin\Manager::getInstance()->getLoadedPlugins(); $plugins = array_map(function ($p) { return $p->getPluginName(); }, $plugins); \Piwik\Plugin\Manager::getInstance()->unloadPlugins(); // make sure the get tasks event returns our configured tasks \Piwik\Piwik::addAction(TaskScheduler::GET_TASKS_EVENT, function (&$tasks) use($configuredTasks) { $tasks = $configuredTasks; }); // stub the piwik option object to control the returned option value self::stubPiwikOption(serialize($timetableBeforeTaskExecution)); TaskScheduler::unsetInstance(); // execute tasks $executionResults = TaskScheduler::runTasks(); // assert methods are executed $executedTasks = array(); foreach ($executionResults as $executionResult) { $executedTasks[] = $executionResult['task']; $this->assertNotEmpty($executionResult['output']); } $this->assertEquals($expectedExecutedTasks, $executedTasks); // assert the timetable is correctly updated $timetable = new ScheduledTaskTimetable(); $this->assertEquals($expectedTimetable, $timetable->getTimetable()); // restore loaded plugins & piwik options EventDispatcher::getInstance()->clearObservers(TaskScheduler::GET_TASKS_EVENT); \Piwik\Plugin\Manager::getInstance()->loadPlugins($plugins); self::resetPiwikOption(); }