MDL-80749 core: Tidy up task tests

This commit is contained in:
Andrew Nicols 2024-03-05 21:16:33 +08:00
parent 30bfb5fe81
commit 94177ec2da
No known key found for this signature in database
GPG key ID: 6D1E3157C8CFBF14

View file

@ -16,10 +16,6 @@
namespace core\task; namespace core\task;
defined('MOODLE_INTERNAL') || die();
require_once(__DIR__ . '/../fixtures/task_fixtures.php');
/** /**
* Test class for adhoc tasks. * Test class for adhoc tasks.
* *
@ -27,14 +23,19 @@ require_once(__DIR__ . '/../fixtures/task_fixtures.php');
* @category test * @category test
* @copyright 2013 Damyon Wiese * @copyright 2013 Damyon Wiese
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
* @coversDefaultClass \core\task\manager * @covers \core\task\manager
*/ */
class adhoc_task_test extends \advanced_testcase { final class adhoc_task_test extends \advanced_testcase {
public static function setUpBeforeClass(): void {
parent::setUpBeforeClass();
require_once(__DIR__ . '/../fixtures/task_fixtures.php');
}
/** /**
* Test getting name of task that implements it's own get_name method * Test getting name of task that implements it's own get_name method
* *
* @covers \core\task\adhoc_task::get_name * @covers \core\task\adhoc_task
*/ */
public function test_get_name(): void { public function test_get_name(): void {
$task = new \core\task\adhoc_test_task(); $task = new \core\task\adhoc_test_task();
@ -44,7 +45,7 @@ class adhoc_task_test extends \advanced_testcase {
/** /**
* Test getting name of task that uses the default implementation of get_name * Test getting name of task that uses the default implementation of get_name
* *
* @covers \core\task\adhoc_task::get_name * @covers \core\task\adhoc_task
*/ */
public function test_get_name_default(): void { public function test_get_name_default(): void {
$task = new \mod_fake\task\adhoc_component_task(); $task = new \mod_fake\task\adhoc_component_task();
@ -53,10 +54,8 @@ class adhoc_task_test extends \advanced_testcase {
/** /**
* Test basic adhoc task execution. * Test basic adhoc task execution.
*
* @covers ::get_next_adhoc_task
*/ */
public function test_get_next_adhoc_task_now() { public function test_get_next_adhoc_task_now(): void {
$this->resetAfterTest(true); $this->resetAfterTest(true);
// Create an adhoc task. // Create an adhoc task.
@ -75,10 +74,8 @@ class adhoc_task_test extends \advanced_testcase {
/** /**
* Test basic adhoc task execution. * Test basic adhoc task execution.
*
* @covers ::get_next_adhoc_task
*/ */
public function test_get_next_adhoc_task_class() { public function test_get_next_adhoc_task_class(): void {
$this->resetAfterTest(true); $this->resetAfterTest(true);
// Create an adhoc task. // Create an adhoc task.
@ -102,11 +99,8 @@ class adhoc_task_test extends \advanced_testcase {
/** /**
* Test adhoc task failure retry backoff. * Test adhoc task failure retry backoff.
*
* @covers ::get_next_adhoc_task
* @covers ::get_adhoc_task
*/ */
public function test_get_next_adhoc_task_fail_retry() { public function test_get_next_adhoc_task_fail_retry(): void {
$this->resetAfterTest(true); $this->resetAfterTest(true);
// Create an adhoc task. // Create an adhoc task.
@ -144,10 +138,6 @@ class adhoc_task_test extends \advanced_testcase {
/** /**
* Test adhoc task failure retry backoff. * Test adhoc task failure retry backoff.
*
* @covers ::queue_adhoc_task
* @covers ::get_next_adhoc_task
* @covers ::adhoc_task_failed
*/ */
public function test_adhoc_task_with_retry_flag(): void { public function test_adhoc_task_with_retry_flag(): void {
global $DB; global $DB;
@ -247,11 +237,6 @@ class adhoc_task_test extends \advanced_testcase {
/** /**
* Test adhoc task failure cleanup. * Test adhoc task failure cleanup.
*
* @covers ::queue_adhoc_task
* @covers ::get_next_adhoc_task
* @covers ::adhoc_task_failed
* @covers ::clean_failed_adhoc_tasks
*/ */
public function test_adhoc_task_clean_up(): void { public function test_adhoc_task_clean_up(): void {
global $DB, $CFG; global $DB, $CFG;
@ -323,7 +308,8 @@ class adhoc_task_test extends \advanced_testcase {
$DB->set_field( $DB->set_field(
table: 'task_adhoc', table: 'task_adhoc',
newfield: 'firststartingtime', newfield: 'firststartingtime',
newvalue: time() - $CFG->task_adhoc_failed_retention - 10, // Plus 10 seconds to make sure it is older than the retention time. // Plus 10 seconds to make sure it is older than the retention time.
newvalue: time() - $CFG->task_adhoc_failed_retention - 10,
conditions: ['id' => $taskid1], conditions: ['id' => $taskid1],
); );
@ -351,10 +337,6 @@ class adhoc_task_test extends \advanced_testcase {
/** /**
* Test adhoc task failure will retain the time information. * Test adhoc task failure will retain the time information.
*
* @covers ::queue_adhoc_task
* @covers ::get_next_adhoc_task
* @covers ::adhoc_task_failed
*/ */
public function test_adhoc_task_failed_will_retain_time_info(): void { public function test_adhoc_task_failed_will_retain_time_info(): void {
global $DB; global $DB;
@ -401,9 +383,8 @@ class adhoc_task_test extends \advanced_testcase {
/** /**
* Test future adhoc task execution. * Test future adhoc task execution.
* @covers ::get_next_adhoc_task
*/ */
public function test_get_next_adhoc_task_future() { public function test_get_next_adhoc_task_future(): void {
$this->resetAfterTest(true); $this->resetAfterTest(true);
$now = time(); $now = time();
@ -424,7 +405,6 @@ class adhoc_task_test extends \advanced_testcase {
/** /**
* Test queueing an adhoc task belonging to a component, where we set the task component accordingly * Test queueing an adhoc task belonging to a component, where we set the task component accordingly
* @covers ::queue_adhoc_task
*/ */
public function test_queue_adhoc_task_for_component(): void { public function test_queue_adhoc_task_for_component(): void {
$this->resetAfterTest(); $this->resetAfterTest();
@ -438,7 +418,6 @@ class adhoc_task_test extends \advanced_testcase {
/** /**
* Test queueing an adhoc task belonging to a component, where we do not set the task component * Test queueing an adhoc task belonging to a component, where we do not set the task component
* @covers ::queue_adhoc_task
*/ */
public function test_queue_task_for_component_without_set_component(): void { public function test_queue_task_for_component_without_set_component(): void {
$this->resetAfterTest(); $this->resetAfterTest();
@ -454,7 +433,6 @@ class adhoc_task_test extends \advanced_testcase {
/** /**
* Test queueing an adhoc task belonging to an invalid component, where we do not set the task component * Test queueing an adhoc task belonging to an invalid component, where we do not set the task component
* @covers ::queue_adhoc_task
*/ */
public function test_queue_task_for_invalid_component_without_set_component(): void { public function test_queue_task_for_invalid_component_without_set_component(): void {
$this->resetAfterTest(); $this->resetAfterTest();
@ -467,9 +445,8 @@ class adhoc_task_test extends \advanced_testcase {
/** /**
* Test empty set of adhoc tasks * Test empty set of adhoc tasks
* @covers ::get_adhoc_tasks
*/ */
public function test_get_adhoc_tasks_empty_set() { public function test_get_adhoc_tasks_empty_set(): void {
$this->resetAfterTest(true); $this->resetAfterTest(true);
$this->assertEquals([], manager::get_adhoc_tasks('\\core\\task\\adhoc_test_task')); $this->assertEquals([], manager::get_adhoc_tasks('\\core\\task\\adhoc_test_task'));
@ -477,9 +454,8 @@ class adhoc_task_test extends \advanced_testcase {
/** /**
* Test correct set of adhoc tasks is returned for class. * Test correct set of adhoc tasks is returned for class.
* @covers ::get_adhoc_tasks
*/ */
public function test_get_adhoc_tasks_result_set() { public function test_get_adhoc_tasks_result_set(): void {
$this->resetAfterTest(true); $this->resetAfterTest(true);
for ($i = 0; $i < 3; $i++) { for ($i = 0; $i < 3; $i++) {
@ -509,9 +485,8 @@ class adhoc_task_test extends \advanced_testcase {
/** /**
* Ensure that the reschedule_or_queue_adhoc_task function will schedule a new task if no tasks exist. * Ensure that the reschedule_or_queue_adhoc_task function will schedule a new task if no tasks exist.
* @covers ::reschedule_or_queue_adhoc_task
*/ */
public function test_reschedule_or_queue_adhoc_task_no_existing() { public function test_reschedule_or_queue_adhoc_task_no_existing(): void {
$this->resetAfterTest(true); $this->resetAfterTest(true);
// Schedule adhoc task. // Schedule adhoc task.
@ -524,9 +499,8 @@ class adhoc_task_test extends \advanced_testcase {
/** /**
* Ensure that the reschedule_or_queue_adhoc_task function will schedule a new task if a task for the same user does * Ensure that the reschedule_or_queue_adhoc_task function will schedule a new task if a task for the same user does
* not exist. * not exist.
* @covers ::reschedule_or_queue_adhoc_task
*/ */
public function test_reschedule_or_queue_adhoc_task_different_user() { public function test_reschedule_or_queue_adhoc_task_different_user(): void {
$this->resetAfterTest(true); $this->resetAfterTest(true);
$user = \core_user::get_user_by_username('admin'); $user = \core_user::get_user_by_username('admin');
@ -547,9 +521,8 @@ class adhoc_task_test extends \advanced_testcase {
/** /**
* Ensure that the reschedule_or_queue_adhoc_task function will schedule a new task if a task with different custom * Ensure that the reschedule_or_queue_adhoc_task function will schedule a new task if a task with different custom
* data exists. * data exists.
* @covers ::reschedule_or_queue_adhoc_task
*/ */
public function test_reschedule_or_queue_adhoc_task_different_data() { public function test_reschedule_or_queue_adhoc_task_different_data(): void {
$this->resetAfterTest(true); $this->resetAfterTest(true);
// Schedule adhoc task. // Schedule adhoc task.
@ -568,9 +541,8 @@ class adhoc_task_test extends \advanced_testcase {
/** /**
* Ensure that the reschedule_or_queue_adhoc_task function will not make any change for matching data if no time was * Ensure that the reschedule_or_queue_adhoc_task function will not make any change for matching data if no time was
* specified. * specified.
* @covers ::reschedule_or_queue_adhoc_task
*/ */
public function test_reschedule_or_queue_adhoc_task_match_no_change() { public function test_reschedule_or_queue_adhoc_task_match_no_change(): void {
$this->resetAfterTest(true); $this->resetAfterTest(true);
// Schedule adhoc task. // Schedule adhoc task.
@ -592,9 +564,8 @@ class adhoc_task_test extends \advanced_testcase {
/** /**
* Ensure that the reschedule_or_queue_adhoc_task function will update the run time if there are planned changes. * Ensure that the reschedule_or_queue_adhoc_task function will update the run time if there are planned changes.
* @covers ::reschedule_or_queue_adhoc_task
*/ */
public function test_reschedule_or_queue_adhoc_task_match_update_runtime() { public function test_reschedule_or_queue_adhoc_task_match_update_runtime(): void {
$this->resetAfterTest(true); $this->resetAfterTest(true);
$initialruntime = time() + DAYSECS; $initialruntime = time() + DAYSECS;
$newruntime = time() + WEEKSECS; $newruntime = time() + WEEKSECS;
@ -622,40 +593,39 @@ class adhoc_task_test extends \advanced_testcase {
/** /**
* Test queue_adhoc_task "if not scheduled". * Test queue_adhoc_task "if not scheduled".
* @covers ::queue_adhoc_task
*/ */
public function test_queue_adhoc_task_if_not_scheduled() { public function test_queue_adhoc_task_if_not_scheduled(): void {
$this->resetAfterTest(true); $this->resetAfterTest(true);
$user = \core_user::get_user_by_username('admin'); $user = \core_user::get_user_by_username('admin');
// Schedule adhoc task. // Schedule adhoc task.
$task = new adhoc_test_task(); $task = new adhoc_test_task();
$task->set_custom_data(array('courseid' => 10)); $task->set_custom_data(['courseid' => 10]);
$this->assertNotEmpty(manager::queue_adhoc_task($task, true)); $this->assertNotEmpty(manager::queue_adhoc_task($task, true));
$this->assertEquals(1, count(manager::get_adhoc_tasks('core\task\adhoc_test_task'))); $this->assertEquals(1, count(manager::get_adhoc_tasks('core\task\adhoc_test_task')));
// Schedule adhoc task with a user. // Schedule adhoc task with a user.
$task = new adhoc_test_task(); $task = new adhoc_test_task();
$task->set_custom_data(array('courseid' => 10)); $task->set_custom_data(['courseid' => 10]);
$task->set_userid($user->id); $task->set_userid($user->id);
$this->assertNotEmpty(manager::queue_adhoc_task($task, true)); $this->assertNotEmpty(manager::queue_adhoc_task($task, true));
$this->assertEquals(2, count(manager::get_adhoc_tasks('core\task\adhoc_test_task'))); $this->assertEquals(2, count(manager::get_adhoc_tasks('core\task\adhoc_test_task')));
// Schedule same adhoc task with different custom data. // Schedule same adhoc task with different custom data.
$task = new adhoc_test_task(); $task = new adhoc_test_task();
$task->set_custom_data(array('courseid' => 1)); $task->set_custom_data(['courseid' => 1]);
$this->assertNotEmpty(manager::queue_adhoc_task($task, true)); $this->assertNotEmpty(manager::queue_adhoc_task($task, true));
$this->assertEquals(3, count(manager::get_adhoc_tasks('core\task\adhoc_test_task'))); $this->assertEquals(3, count(manager::get_adhoc_tasks('core\task\adhoc_test_task')));
// Schedule same adhoc task with same custom data. // Schedule same adhoc task with same custom data.
$task = new adhoc_test_task(); $task = new adhoc_test_task();
$task->set_custom_data(array('courseid' => 1)); $task->set_custom_data(['courseid' => 1]);
$this->assertEmpty(manager::queue_adhoc_task($task, true)); $this->assertEmpty(manager::queue_adhoc_task($task, true));
$this->assertEquals(3, count(manager::get_adhoc_tasks('core\task\adhoc_test_task'))); $this->assertEquals(3, count(manager::get_adhoc_tasks('core\task\adhoc_test_task')));
// Schedule same adhoc task with same custom data and a user. // Schedule same adhoc task with same custom data and a user.
$task = new adhoc_test_task(); $task = new adhoc_test_task();
$task->set_custom_data(array('courseid' => 1)); $task->set_custom_data(['courseid' => 1]);
$task->set_userid($user->id); $task->set_userid($user->id);
$this->assertNotEmpty(manager::queue_adhoc_task($task, true)); $this->assertNotEmpty(manager::queue_adhoc_task($task, true));
$this->assertEquals(4, count(manager::get_adhoc_tasks('core\task\adhoc_test_task'))); $this->assertEquals(4, count(manager::get_adhoc_tasks('core\task\adhoc_test_task')));
@ -689,9 +659,9 @@ class adhoc_task_test extends \advanced_testcase {
/** /**
* Test that when no userid is specified, it returns empty from the DB * Test that when no userid is specified, it returns empty from the DB
* too. * too.
* @covers \core\task\adhoc_task::get_userid * @covers \core\task\adhoc_task
*/ */
public function test_adhoc_task_user_empty() { public function test_adhoc_task_user_empty(): void {
$this->resetAfterTest(true); $this->resetAfterTest(true);
// Create an adhoc task in future. // Create an adhoc task in future.
@ -710,10 +680,9 @@ class adhoc_task_test extends \advanced_testcase {
* Test that when a userid is specified, that userid is subsequently * Test that when a userid is specified, that userid is subsequently
* returned. * returned.
* *
* @covers \core\task\adhoc_task::set_userid * @covers \core\task\adhoc_task
* @covers \core\task\adhoc_task::get_userid
*/ */
public function test_adhoc_task_user_set() { public function test_adhoc_task_user_set(): void {
$this->resetAfterTest(true); $this->resetAfterTest(true);
// Create an adhoc task in future. // Create an adhoc task in future.
@ -732,11 +701,6 @@ class adhoc_task_test extends \advanced_testcase {
/** /**
* Test adhoc task with the first starting time. * Test adhoc task with the first starting time.
*
* @covers ::queue_adhoc_task
* @covers ::get_next_adhoc_task
* @covers ::adhoc_task_starting
* @covers ::adhoc_task_failed
*/ */
public function test_adhoc_task_get_first_starting_time(): void { public function test_adhoc_task_get_first_starting_time(): void {
global $DB; global $DB;
@ -801,9 +765,9 @@ class adhoc_task_test extends \advanced_testcase {
/** /**
* Test get_concurrency_limit() method to return 0 by default. * Test get_concurrency_limit() method to return 0 by default.
* *
* @covers \core\task\adhoc_task::get_concurrency_limit * @covers \core\task\adhoc_task
*/ */
public function test_get_concurrency_limit() { public function test_get_concurrency_limit(): void {
$this->resetAfterTest(true); $this->resetAfterTest(true);
$task = new adhoc_test_task(); $task = new adhoc_test_task();
$concurrencylimit = $task->get_concurrency_limit(); $concurrencylimit = $task->get_concurrency_limit();
@ -812,9 +776,9 @@ class adhoc_task_test extends \advanced_testcase {
/** /**
* Test get_concurrency_limit() method to return a default value set in config. * Test get_concurrency_limit() method to return a default value set in config.
* @covers \core\task\adhoc_task::get_concurrency_limit * @covers \core\task\adhoc_task
*/ */
public function test_get_concurrency_limit_default() { public function test_get_concurrency_limit_default(): void {
$this->resetAfterTest(true); $this->resetAfterTest(true);
set_config('task_concurrency_limit_default', 10); set_config('task_concurrency_limit_default', 10);
$task = new adhoc_test_task(); $task = new adhoc_test_task();
@ -824,13 +788,13 @@ class adhoc_task_test extends \advanced_testcase {
/** /**
* Test get_concurrency_limit() method to return a value for specific task class. * Test get_concurrency_limit() method to return a value for specific task class.
* @covers \core\task\adhoc_task::get_concurrency_limit * @covers \core\task\adhoc_task
*/ */
public function test_get_concurrency_limit_for_task() { public function test_get_concurrency_limit_for_task(): void {
global $CFG; global $CFG;
$this->resetAfterTest(true); $this->resetAfterTest(true);
set_config('task_concurrency_limit_default', 10); set_config('task_concurrency_limit_default', 10);
$CFG->task_concurrency_limit = array('core\task\adhoc_test_task' => 5); $CFG->task_concurrency_limit = ['core\task\adhoc_test_task' => 5];
$task = new adhoc_test_task(); $task = new adhoc_test_task();
$concurrencylimit = $task->get_concurrency_limit(); $concurrencylimit = $task->get_concurrency_limit();
$this->assertEquals(5, $concurrencylimit); $this->assertEquals(5, $concurrencylimit);
@ -838,9 +802,8 @@ class adhoc_task_test extends \advanced_testcase {
/** /**
* Test adhoc task sorting. * Test adhoc task sorting.
* @covers ::get_next_adhoc_task
*/ */
public function test_get_next_adhoc_task_sorting() { public function test_get_next_adhoc_task_sorting(): void {
$this->resetAfterTest(true); $this->resetAfterTest(true);
// Create adhoc tasks. // Create adhoc tasks.
@ -885,9 +848,8 @@ class adhoc_task_test extends \advanced_testcase {
/** /**
* Test adhoc task run from CLI. * Test adhoc task run from CLI.
* @covers ::run_adhoc_from_cli
*/ */
public function test_run_adhoc_from_cli() { public function test_run_adhoc_from_cli(): void {
$this->resetAfterTest(true); $this->resetAfterTest(true);
$taskid = 1; $taskid = 1;
@ -909,9 +871,8 @@ class adhoc_task_test extends \advanced_testcase {
/** /**
* Test adhoc class run from CLI. * Test adhoc class run from CLI.
* @covers ::run_all_adhoc_from_cli
*/ */
public function test_run_all_adhoc_from_cli() { public function test_run_all_adhoc_from_cli(): void {
$this->resetAfterTest(true); $this->resetAfterTest(true);
$classname = 'fake'; $classname = 'fake';