MDL-70975 task: Support for running adhoc tasks by id
* CLI adhoc_task.php: new option --id * cron::run_adhoc_task($taskid) for running tasks by id * core\task\manager::get_adhoc_task($taskid) for retreival/locking
This commit is contained in:
@@ -75,6 +75,7 @@ class adhoc_task_test extends \advanced_testcase {
|
||||
* Test adhoc task failure retry backoff.
|
||||
*
|
||||
* @covers ::get_next_adhoc_task
|
||||
* @covers ::get_adhoc_task
|
||||
*/
|
||||
public function test_get_next_adhoc_task_fail_retry() {
|
||||
$this->resetAfterTest(true);
|
||||
@@ -87,17 +88,25 @@ class adhoc_task_test extends \advanced_testcase {
|
||||
|
||||
// Get it from the scheduler, execute it, and mark it as failed.
|
||||
$task = manager::get_next_adhoc_task($now);
|
||||
$taskid = $task->get_id();
|
||||
$task->execute();
|
||||
manager::adhoc_task_failed($task);
|
||||
|
||||
// The task will not be returned immediately.
|
||||
$this->assertNull(manager::get_next_adhoc_task($now));
|
||||
|
||||
// Should get the adhoc task (retry after delay).
|
||||
// Should get the adhoc task (retry after delay). Fail it again.
|
||||
$task = manager::get_next_adhoc_task($now + 120);
|
||||
$this->assertInstanceOf('\\core\\task\\adhoc_test_task', $task);
|
||||
$this->assertEquals($taskid, $task->get_id());
|
||||
$task->execute();
|
||||
manager::adhoc_task_failed($task);
|
||||
|
||||
// Should get the adhoc task immediately.
|
||||
$task = manager::get_adhoc_task($taskid);
|
||||
$this->assertInstanceOf('\\core\\task\\adhoc_test_task', $task);
|
||||
$this->assertEquals($taskid, $task->get_id());
|
||||
$task->execute();
|
||||
manager::adhoc_task_complete($task);
|
||||
|
||||
// Should not get any task.
|
||||
|
||||
Reference in New Issue
Block a user