X7ROOT File Manager
Current Path:
/home/cbholdings/pasukulu/lib/tests/task
home
/
cbholdings
/
pasukulu
/
lib
/
tests
/
task
/
📁
..
📄
adhoc_task_test.php
(21.11 KB)
📄
calendar_cron_task_test.php
(2.64 KB)
📄
completion_daily_task_test.php
(5.03 KB)
📄
database_logger_test.php
(19.89 KB)
📄
file_temp_cleanup_task_test.php
(6.92 KB)
📄
h5p_get_content_types_task_test.php
(2.45 KB)
📄
logging_test.php
(16.75 KB)
📄
manager_test.php
(9.27 KB)
📄
running_test.php
(6.37 KB)
📄
scheduled_task_test.php
(30.37 KB)
📄
send_login_notifications_test.php
(11.05 KB)
Editing: manager_test.php
<?php // This file is part of Moodle - http://moodle.org/ // // Moodle is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Moodle is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Moodle. If not, see <http://www.gnu.org/licenses/>. namespace core\task; defined('MOODLE_INTERNAL') || die(); require_once(__DIR__ . '/../fixtures/task_fixtures.php'); /** * This file contains the unit tests for the task manager. * * @package core * @category test * @copyright 2019 Brendan Heywood <brendan@catalyst-au.net> * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class manager_test extends \advanced_testcase { /** * Data provider for test_get_candidate_adhoc_tasks. * * @return array */ public function get_candidate_adhoc_tasks_provider(): array { return [ [ 'concurrencylimit' => 5, 'limit' => 100, 'pertasklimits' => [], 'tasks' => [ new adhoc_test_task(time() - 20, null), new adhoc_test_task(time() - 20, null), new adhoc_test_task(time() - 20, null), new adhoc_test_task(time() - 20, null), new adhoc_test_task(time() - 20, null) ], 'expected' => [ adhoc_test_task::class, adhoc_test_task::class, adhoc_test_task::class, adhoc_test_task::class, adhoc_test_task::class ] ], [ 'concurrencylimit' => 5, 'limit' => 100, 'pertasklimits' => [], 'tasks' => [ new adhoc_test_task(time() - 20, time()), new adhoc_test_task(time() - 20, null), new adhoc_test_task(time() - 20, null), new adhoc_test_task(time() - 20, null), new adhoc_test_task(time() - 20, null) ], 'expected' => [ adhoc_test_task::class, adhoc_test_task::class, adhoc_test_task::class, adhoc_test_task::class ] ], [ 'concurrencylimit' => 1, 'limit' => 100, 'pertasklimits' => [], 'tasks' => [ new adhoc_test_task(time() - 20, time()), new adhoc_test_task(time() - 20, null), new adhoc_test_task(time() - 20, null), new adhoc_test_task(time() - 20, null), new adhoc_test_task(time() - 20, null) ], 'expected' => [] ], [ 'concurrencylimit' => 2, 'limit' => 100, 'pertasklimits' => [], 'tasks' => [ new adhoc_test_task(time() - 20, time()), new adhoc_test_task(time() - 20, time()), new adhoc_test_task(time() - 20, null), new adhoc_test_task(time() - 20, null), new adhoc_test_task(time() - 20, null) ], 'expected' => [] ], [ 'concurrencylimit' => 2, 'limit' => 100, 'pertasklimits' => [], 'tasks' => [ new adhoc_test_task(time() - 20, time()), new adhoc_test_task(time() - 20, time()), new adhoc_test2_task(time() - 20, time()), new adhoc_test2_task(time() - 20, time()), new adhoc_test3_task(time() - 20, null) ], 'expected' => [adhoc_test3_task::class] ], [ 'concurrencylimit' => 2, 'limit' => 2, 'pertasklimits' => [], 'tasks' => [ new adhoc_test_task(time() - 20, null), new adhoc_test_task(time() - 20, null), new adhoc_test_task(time() - 20, null), new adhoc_test2_task(time() - 20, null), ], 'expected' => [ adhoc_test_task::class, adhoc_test_task::class ] ], [ 'concurrencylimit' => 2, 'limit' => 2, 'pertasklimits' => [], 'tasks' => [ new adhoc_test_task(time() - 20, time()), new adhoc_test_task(time() - 20, time()), new adhoc_test_task(time() - 20, null), new adhoc_test2_task(time() - 20, null), ], 'expected' => [ adhoc_test2_task::class ] ], [ 'concurrencylimit' => 3, 'limit' => 100, 'pertasklimits' => [], 'tasks' => [ new adhoc_test_task(time() - 20, time()), new adhoc_test_task(time() - 20, time()), new adhoc_test_task(time() - 20, null), new adhoc_test2_task(time() - 20, time()), new adhoc_test2_task(time() - 20, time()), new adhoc_test2_task(time() - 20, null), new adhoc_test3_task(time() - 20, time()), new adhoc_test3_task(time() - 20, time()), new adhoc_test3_task(time() - 20, null), new adhoc_test4_task(time() - 20, time()), new adhoc_test4_task(time() - 20, time()), new adhoc_test4_task(time() - 20, null), new adhoc_test5_task(time() - 20, time()), new adhoc_test5_task(time() - 20, time()), new adhoc_test5_task(time() - 20, null), ], 'expected' => [ adhoc_test_task::class, adhoc_test2_task::class, adhoc_test3_task::class, adhoc_test4_task::class, adhoc_test5_task::class ] ], [ 'concurrencylimit' => 3, 'limit' => 100, 'pertasklimits' => [ 'adhoc_test_task' => 2, 'adhoc_test2_task' => 2, 'adhoc_test3_task' => 2, 'adhoc_test4_task' => 2, 'adhoc_test5_task' => 2 ], 'tasks' => [ new adhoc_test_task(time() - 20, time()), new adhoc_test_task(time() - 20, time()), new adhoc_test_task(time() - 20, null), new adhoc_test2_task(time() - 20, time()), new adhoc_test2_task(time() - 20, time()), new adhoc_test2_task(time() - 20, null), new adhoc_test3_task(time() - 20, time()), new adhoc_test3_task(time() - 20, time()), new adhoc_test3_task(time() - 20, null), new adhoc_test4_task(time() - 20, time()), new adhoc_test4_task(time() - 20, time()), new adhoc_test4_task(time() - 20, null), new adhoc_test5_task(time() - 20, time()), new adhoc_test5_task(time() - 20, time()), new adhoc_test5_task(time() - 20, null), ], 'expected' => [] ] ]; } /** * Test that the candidate adhoc tasks are returned in the right order. * * @dataProvider get_candidate_adhoc_tasks_provider * * @param int $concurrencylimit The max number of runners each task can consume * @param int $limit SQL limit * @param array $pertasklimits Per-task limits * @param array $tasks Array of tasks to put in DB and retrieve * @param array $expected Array of expected classnames * @return void * @covers \manager::get_candidate_adhoc_tasks */ public function test_get_candidate_adhoc_tasks( int $concurrencylimit, int $limit, array $pertasklimits, array $tasks, array $expected ): void { $this->resetAfterTest(); foreach ($tasks as $task) { manager::queue_adhoc_task($task); } $candidates = manager::get_candidate_adhoc_tasks(time(), $limit, $concurrencylimit, $pertasklimits); $this->assertEquals( array_map( function(string $classname): string { return '\\' . $classname; }, $expected ), array_column($candidates, 'classname') ); } }
Upload File
Create Folder