1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
<?php
namespace MediaWiki\Tests\Maintenance;
use MediaWiki\Http\Telemetry;
use NullJob;
use ShowJobs;
/**
* @covers \ShowJobs
* @group Database
* @author Dreamy Jazz
*/
class ShowJobsTest extends MaintenanceBaseTestCase {
public function getMaintenanceClass() {
return ShowJobs::class;
}
private function commonTestExecute( $options, $expectedOutputRegex ) {
foreach ( $options as $name => $value ) {
$this->maintenance->setOption( $name, $value );
}
$this->maintenance->execute();
// Check that the script returns the right output
$this->expectOutputRegex( $expectedOutputRegex );
}
public function testExecuteWithNoOptionsSpecified() {
$jobQueueGroup = $this->getServiceContainer()->getJobQueueGroup();
$jobQueueGroup->push( new NullJob( [] ) );
$jobQueueGroup->push( new NullJob( [] ) );
$this->commonTestExecute( [], '/2/' );
}
/** @dataProvider provideJobCount */
public function testExecuteWithForListSpecified( int $jobCount ) {
$jobQueueGroup = $this->getServiceContainer()->getJobQueueGroup();
$expectedRegexOutput = '/';
for ( $i = 0; $i < $jobCount; $i++ ) {
$jobQueueGroup->push( new NullJob( [] ) );
$expectedRegexOutput .= '.*null.*' . Telemetry::getInstance()->getRequestId() . ".*\n";
}
$this->commonTestExecute( [ 'list' => 1 ], $expectedRegexOutput . '/' );
}
public function testExecuteWithForListSpecifiedWithLimit() {
$jobQueueGroup = $this->getServiceContainer()->getJobQueueGroup();
for ( $i = 0; $i < 5; $i++ ) {
$jobQueueGroup->push( new NullJob( [] ) );
}
$expectedRegexOutput = '/';
for ( $i = 0; $i < 4; $i++ ) {
$expectedRegexOutput .= '.*null.*' . Telemetry::getInstance()->getRequestId() . ".*\n";
}
$this->commonTestExecute( [ 'list' => 1, 'limit' => 4 ], $expectedRegexOutput . '/' );
}
public function testExecuteWithTypeSpecified() {
$jobQueueGroup = $this->getServiceContainer()->getJobQueueGroup();
for ( $i = 0; $i < 3; $i++ ) {
$jobQueueGroup->push( new NullJob( [] ) );
}
$this->commonTestExecute( [ 'list' => 1, 'type' => 'fish' ], '//' );
}
/** @dataProvider provideJobCount */
public function testExecuteWithForGroupSpecified( int $jobCount ) {
$jobQueueGroup = $this->getServiceContainer()->getJobQueueGroup();
for ( $i = 0; $i < $jobCount; $i++ ) {
$jobQueueGroup->push( new NullJob( [] ) );
}
$this->commonTestExecute( [ 'group' => 1 ], "/.*null.*$jobCount queued.*\n/" );
}
public static function provideJobCount() {
return [
'1 job' => [ 1 ],
'3 jobs' => [ 3 ],
];
}
}
|