Test Failed
Push — main ( c76fcf...a2096a )
by Bingo
14:02
created

PoolExecutorTest::testTaskExecution()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 25
Code Lines 23

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 23
c 0
b 0
f 0
dl 0
loc 25
rs 9.552
cc 1
nc 1
nop 0
1
<?php
2
3
namespace Tests\Util;
4
5
use PHPUnit\Framework\TestCase;
6
use Jabe\Engine\Impl\Util\Concurrent\{
7
    ArrayBlockingQueue,
8
    InterruptibleProcess,
9
    ProcessPoolExecutor,
10
    RunnableInterface,
11
    TimeUnit,
12
    Worker
13
};
14
15
class PoolExecutorTest extends TestCase
16
{
17
    protected function setUp(): void
18
    {
19
    }
20
21
    public function testBlockingQueue(): void
22
    {
23
        $queue = new ArrayBlockingQueue(3);
24
        $queue->add(1);
25
        $queue->add(2);
26
        $queue->add(3);
27
        $this->assertEquals(3, $queue->size());
28
        $it = $queue->iterator();
29
        $this->assertEquals(1, $it->current());
30
        $this->assertEquals(1, $it->current());
31
        $this->assertTrue($it->valid());
32
        while ($it->valid()) {
33
            $it->next();
34
        }
35
        $this->assertEquals(3, $it->current());
36
        $this->assertFalse($it->valid());
37
38
        $queue->clear();
39
        $this->assertEquals(0, $queue->size());
40
        $queue->add(1);
41
        $this->assertEquals(1, $queue->size());
42
        $queue->remove(2);
0 ignored issues
show
Bug introduced by
2 of type integer is incompatible with the type Jabe\Engine\Impl\Util\Concurrent\element expected by parameter $o of Jabe\Engine\Impl\Util\Co...BlockingQueue::remove(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

42
        $queue->remove(/** @scrutinizer ignore-type */ 2);
Loading history...
43
        $this->assertEquals(1, $queue->size());
44
        $queue->remove(1);
45
        $this->assertEquals(0, $queue->size());
46
        $queue->add(2);
47
        $queue->add(3);
48
        $ar = $queue->toArray();
49
        $this->assertCount(2, $ar);
50
    }
51
52
    public function testTaskExecution(): void
53
    {
54
        $workQueue = new ArrayBlockingQueue(3);
55
        $pool = new ProcessPoolExecutor(3, 0, TimeUnit::SECONDS, $workQueue);
56
        $task1 = new TestTask("task 1");
57
        $task2 = new TestTask("task 2");
58
        $task3 = new TestTask("task 3");
59
        $task4 = new TestTask("task 4");
60
        $task5 = new TestTask("task 5");
61
        $task6 = new TestTask("task 6");
62
        $task7 = new TestTask("task 7");
63
        $task8 = new TestTask("task 8");
64
        $task9 = new TestTask("task 9");
65
        $pool->execute($task1);
66
        $pool->execute($task2);
67
        $pool->execute($task3);
68
        $pool->execute($task4);
69
        $pool->execute($task5);
70
        $pool->shutdown();
71
        $pool->execute($task6);
72
        $pool->execute($task7);
73
        $pool->execute($task8);
74
        $pool->execute($task9);
75
        $pool->shutdown();
76
        $this->assertTrue($pool->isShutdown());
77
    }
78
}
79