forked from Daniel-Marynicz/BehatParallelExtension
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathWorkerPollTest.php
76 lines (67 loc) · 1.88 KB
/
WorkerPollTest.php
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
<?php
namespace DMarynicz\Tests\Worker;
use DMarynicz\BehatParallelExtension\Event\EventDispatcherDecorator;
use DMarynicz\BehatParallelExtension\Exception\Runtime;
use DMarynicz\BehatParallelExtension\Task\Queue;
use DMarynicz\BehatParallelExtension\Worker\WorkerPoll;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
class WorkerPollTest extends TestCase
{
/**
* @param int $maxWorkers
*
* @dataProvider maxWorkersProvider
*/
public function testWorkerPoll($maxWorkers): void
{
$poll = $this->getNewWorkerPoll();
$poll->setMaxWorkers($maxWorkers);
$poll->start();
$poll->wait();
$this->assertTrue($poll->isStarted());
$this->assertEquals($maxWorkers, $poll->getTotalWorkers());
$poll->stop();
}
public function testWorkerPoll2(): void
{
$poll = $this->getNewWorkerPoll();
$poll->setMaxWorkers(3);
$poll->start();
$this->expectException(Runtime::class);
$this->expectExceptionMessage('Worker Poll is already started');
$poll->start();
}
/**
* @return int[][]
*/
public function maxWorkersProvider(): array
{
return [
[1],
[2],
[21],
[21],
];
}
private function getNewWorkerPoll(): WorkerPoll
{
$queue = $this->createQueueMock();
$eventDispatcher = $this->createEventDispatcherDecoratorMock();
return new WorkerPoll($queue, $eventDispatcher, []);
}
/**
* @return MockObject|Queue
*/
private function createQueueMock()
{
return $this->createMock(Queue::class);
}
/**
* @return MockObject|EventDispatcherDecorator
*/
private function createEventDispatcherDecoratorMock()
{
return $this->createMock(EventDispatcherDecorator::class);
}
}