8000 Rename receivers · symfony/symfony@f8e8125 · GitHub
[go: up one dir, main page]

Skip to content

Commit f8e8125

Browse files
Rename receivers
1 parent a9c9cbe commit f8e8125

File tree

6 files changed

+50
-68
lines changed

6 files changed

+50
-68
lines changed

src/Symfony/Component/Messenger/Command/ConsumeMessagesCommand.php

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
use Symfony\Component\Console\Input\InputOption;
2020
use Symfony\Component\Console\Output\OutputInterface;
2121
use Symfony\Component\Messenger\MessageBusInterface;
22-
use Symfony\Component\Messenger\Transport\Enhancers\MaximumCountReceiver;
23-
use Symfony\Component\Messenger\Transport\Enhancers\MemoryLimitReceiver;
22+
use Symfony\Component\Messenger\Transport\Enhancers\StopWhenMessageCountIsExceededReceiver;
23+
use Symfony\Component\Messenger\Transport\Enhancers\StopWhenMemoryUsageIsExceededReceiver;
2424
use Symfony\Component\Messenger\Transport\ReceiverInterface;
2525
use Symfony\Component\Messenger\Worker;
2626

@@ -89,14 +89,43 @@ protected function execute(InputInterface $input, OutputInterface $output)
8989
}
9090

9191
if ($limit = $input->getOption('limit')) {
92-
$receiver = new MaximumCountReceiver($receiver, $limit, $this->logger);
92+
$receiver = new StopWhenMessageCountIsExceededReceiver($receiver, $limit, $this->logger);
9393
}
9494

9595
if ($memoryLimit = $input->getOption('memory-limit')) {
96-
$receiver = new MemoryLimitReceiver($receiver, $memoryLimit, $this->logger);
96+
$receiver = new StopWhenMemoryUsageIsExceededReceiver($receiver, $this->convertToBytes($memoryLimit), $this->logger);
9797
}
9898

9999
$worker = new Worker($receiver, $this->bus);
100100
$worker->run();
101101
}
102+
103+
private function convertToBytes($memoryLimit)
104+
{
105+
if ('-1' === $memoryLimit) {
106+
return -1;
107+
}
108+
109+
$memoryLimit = strtolower($memoryLimit);
110+
$max = strtolower(ltrim($memoryLimit, '+'));
111+
if (0 === strpos($max, '0x')) {
112+
$max = intval($max, 16);
113+
} elseif (0 === strpos($max, '0')) {
114+
$max = intval($max, 8);
115+
} else {
116+
$max = (int) $max;
117+
}
118+
119+
switch (substr($memoryLimit, -1)) {
120+
case 't': $max *= 1024;
121+
// no break
122+
case 'g': $max *= 1024;
123+
// no break
124+
case 'm': $max *= 1024;
125+
// no break
126+
case 'k': $max *= 1024;
127+
}
128+
129+
return $max;
130+
}
102131
}

src/Symfony/Component/Messenger/Tests/Adapter/AmqpExt/AmqpExtIntegrationTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public function testItSendsAndReceivesMessages()
5757
$receiver->receive(function ($message) use ($receiver, &$receivedMessages, $firstMessage, $secondMessage) {
5858
$this->assertEquals(0 == $receivedMessages ? $firstMessage : $secondMessage, $message);
5959

60-
if (2 == ++$receivedMessages) {
60+
if (2 === ++$receivedMessages) {
6161
$receiver->stop();
6262
}
6363
});

src/Symfony/Component/Messenger/Tests/Transport/Enhancers/MemoryLimitReceiverTest.php renamed to src/Symfony/Component/Messenger/Tests/Transport/Enhancers/StopWhenMemoryUsageIsExceededReceiverTest.php

Lines changed: 6 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,14 @@
1515
use Psr\Log\LoggerInterface;
1616
use Symfony\Component\Messenger\Tests\Fixtures\CallbackReceiver;
1717
use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage;
18-
use Symfony\Component\Messenger\Transport\Enhancers\MemoryLimitReceiver;
19-
use Symfony\Component\Messenger\Transport\ReceiverInterface;
18+
use Symfony\Component\Messenger\Transport\Enhancers\StopWhenMemoryUsageIsExceededReceiver;
2019

21-
class MemoryLimitReceiverTest extends TestCase
20+
class StopWhenMemoryUsageIsExceededReceiverTest extends TestCase
2221
{
2322
/**
2423
* @dataProvider memoryProvider
2524
*/
26-
public function testReceiverStopsWhenMemoryLimitExceeded($memoryUsage, $memoryLimit, $shouldStop)
25+
public function testReceiverStopsWhenMemoryLimitExceeded(int $memoryUsage, int $memoryLimit, bool $shouldStop)
2726
{
2827
$callable = function ($handler) {
2928
$handler(new DummyMessage('API'));
@@ -45,44 +44,15 @@ public function testReceiverStopsWhenMemoryLimitExceeded($memoryUsage, $memoryLi
4544
return $memoryUsage;
4645
};
4746

48-
$memoryLimitReceiver = new MemoryLimitReceiver($decoratedReceiver, $memoryLimit, null, $memoryResolver);
47+
$memoryLimitReceiver = new StopWhenMemoryUsageIsExceededReceiver($decoratedReceiver, $memoryLimit, null, $memoryResolver);
4948
$memoryLimitReceiver->receive(function () {});
5049
}
5150

5251
public function memoryProvider()
5352
{
5453
yield array(2048, 1024, true);
55-
yield array(1024, 1024, true);
54+
yield array(1024, 1024, false);
5655
yield array(1024, 2048, false);
57-
yield array(129 * 1024, '128K', true);
58-
yield array(128 * 1024, '128K', true);
59-
yield array(127 * 1024, '128K', false);
60-
yield array(65 * 1024 * 1024, '64M', true);
61-
yield array(64 * 1024 * 1024, '64M', true);
62-
yield array(63 * 1024 * 1024, '64M', false);
63-
yield array(2 * 1024 * 1024 * 1024, '1G', true);
64-
yield array(1 * 1024 * 1024 * 1024, '1G', true);
65-
yield array(10 * 1024 * 1024, '1G', false);
66-
yield array(1 * 1024 * 1024 * 1024, '1M', true);
67-
yield array(1 * 1024 * 1024 * 1024, '1K', true);
68-
}
69-
70-
/**
71-
* @dataProvider invalidMemoryLimitProvider
72-
* @expectedException \InvalidArgumentException
73-
*/
74-
public function testReceiverThrowsExceptionWithInvalidMemoryLimit($memoryLimit)
75-
{
76-
$decoratedReceiver = $this->createMock(ReceiverInterface::class);
77-
$memoryLimitReceiver = new MemoryLimitReceiver($decoratedReceiver, $memoryLimit);
78-
}
79-
80-
public function invalidMemoryLimitProvider()
81-
{
82-
yield array('without_digit'); // string without digit
83-
yield array('1024X'); // bad unit
84-
yield array('128m'); // lowercase unit
85-
yield array('128 M'); // string with space
8656
}
8757

8858
public function testReceiverLogsMemoryExceededWhenLoggerIsGiven()
@@ -110,7 +80,7 @@ public function testReceiverLogsMemoryExceededWhenLoggerIsGiven()
11080
return 70 * 1024 * 1024;
11181
};
11282

113-
$memoryLimitReceiver = new MemoryLimitReceiver($decoratedReceiver, '64M', $logger, $memoryResolver);
83+
$memoryLimitReceiver = new StopWhenMemoryUsageIsExceededReceiver($decoratedReceiver, 64 * 1024 * 1024, $logger, $memoryResolver);
11484
$memoryLimitReceiver->receive(function () {});
11585
}
11686
}

src/Symfony/Component/Messenger/Tests/Transport/Enhancers/MaximumCountReceiverTest.php renamed to src/Symfony/Component/Messenger/Tests/Transport/Enhancers/StopWhenMessageCountIsExceededReceiverTest.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515
use Psr\Log\LoggerInterface;
1616
use Symfony\Component\Messenger\Tests\Fixtures\CallbackReceiver;
1717
use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage;
18-
use Symfony\Component\Messenger\Transport\Enhancers\MaximumCountReceiver;
18+
use Symfony\Component\Messenger\Transport\Enhancers\StopWhenMessageCountIsExceededReceiver;
1919

20-
class MaximumCountReceiverTest extends TestCase
20+
class StopWhenMessageCountIsExceededReceiverTest extends TestCase
2121
{
2222
/**
2323
* @dataProvider countProvider
@@ -42,7 +42,7 @@ public function testReceiverStopsWhenMaximumCountExceeded($max, $shouldStop)
4242
$decoratedReceiver->expects($this->never())->method('stop');
4343
}
4444

45-
$maximumCountReceiver = new MaximumCountReceiver($decoratedReceiver, $max);
45+
$maximumCountReceiver = new StopWhenMessageCountIsExceededReceiver($decoratedReceiver, $max);
4646
$maximumCountReceiver->receive(function () {});
4747
}
4848

@@ -71,7 +71,7 @@ public function testReceiverDoesntIncreaseItsCounterWhenReceiveNullMessage()
7171
$decoratedReceiver->expects($this->once())->method('receive');
7272
$decoratedReceiver->expects($this->never())->method('stop');
7373

74-
$maximumCountReceiver = new MaximumCountReceiver($decoratedReceiver, 1);
74+
$maximumCountReceiver = new StopWhenMessageCountIsExceededReceiver($decoratedReceiver, 1);
7575
$maximumCountReceiver->receive(function () {});
7676
}
7777

@@ -96,7 +96,7 @@ public function testReceiverLogsMaximumCountExceededWhenLoggerIsGiven()
9696
$this->equalTo(array('count' => 1))
9797
);
9898

99-
$maximumCountReceiver = new MaximumCountReceiver($decoratedReceiver, 1, $logger);
99+
$maximumCountReceiver = new StopWhenMessageCountIsExceededReceiver($decoratedReceiver, 1, $logger);
100100
$maximumCountReceiver->receive(function () {});
101101
}
102102
}

src/Symfony/Component/Messenger/Transport/Enhancers/MemoryLimitReceiver.php renamed to src/Symfony/Component/Messenger/Transport/Enhancers/StopWhenMemoryUsageIsExceededReceiver.php

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,17 @@
1717
/**
1818
* @author Simon Delicata <simon.delicata@free.fr>
1919
*/
20-
class MemoryLimitReceiver implements ReceiverInterface
20+
class StopWhenMemoryUsageIsExceededReceiver implements ReceiverInterface
2121
{
2222
private $decoratedReceiver;
2323
private $memoryLimit;
2424
private $logger;
2525
private $memoryResolver;
2626

27-
public function __construct(ReceiverInterface $decoratedReceiver, string $memoryLimit, LoggerInterface $logger = null, callable $memoryResolver = null)
27+
public function __construct(ReceiverInterface $decoratedReceiver, int $memoryLimit, LoggerInterface $logger = null, callable $memoryResolver = null)
2828
{
2929
$this->decoratedReceiver = $decoratedReceiver;
30-
$this->memoryLimit = $this->convertToOctets($memoryLimit);
30+
$this->memoryLimit = $memoryLimit;
3131
$this->logger = $logger;
3232
$this->memoryResolver = $memoryResolver ?: function () {
3333
return \memory_get_usage();
@@ -40,7 +40,7 @@ public function receive(callable $handler): void
4040
$handler($message);
4141

4242
$memoryResolver = $this->memoryResolver;
43-
if ($memoryResolver() >= $this->memoryLimit) {
43+
if ($memoryResolver() > $this->memoryLimit) {
4444
$this->stop();
4545
if (null !== $this->logger) {
4646
$this->logger->info('Receiver stopped due to memory limit of {limit} exceeded', array('limit' => $this->memoryLimit));
@@ -53,21 +53,4 @@ public function stop(): void
5353
{
5454
$this->decoratedReceiver->stop();
5555
}
56-
57-
private function convertToOctets(string $size): int
58-
{
59-
if (!\preg_match('/^(\d+)([G|M|K]*)$/', $size, $matches)) {
60-
throw new \InvalidArgumentException('Invalid memory limit given.');
61-
}
62-
63-
if ('G' == $matches[2]) {
64-
$size = $matches[1] * 1024 * 1024 * 1024;
65-
} elseif ('M' == $matches[2]) {
66-
$size = $matches[1] * 1024 * 1024;
67-
} elseif ('K' == $matches[2]) {
68-
$size = $matches[1] * 1024;
69-
}
70-
71-
return $size;
72-
}
7356
}

src/Symfony/Component/Messenger/Transport/Enhancers/MaximumCountReceiver.php renamed to src/Symfony/Component/Messenger/Transport/Enhancers/StopWhenMessageCountIsExceededReceiver.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
/**
1818
* @author Samuel Roze <samuel.roze@gmail.com>
1919
*/
20-
class MaximumCountReceiver implements ReceiverInterface
20+
class StopWhenMessageCountIsExceededReceiver implements ReceiverInterface
2121
{
2222
private $decoratedReceiver;
2323
private $maximumNumberOfMessages;

0 commit comments

Comments
 (0)
0