[Messenger][Profiler] Attempt to give more useful source info when using HandleTrait
This commit is contained in:
parent
a7852c0da8
commit
9ac7e4223c
@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Symfony package.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Symfony\Component\Messenger\Tests\Fixtures;
|
||||
|
||||
use Symfony\Component\Messenger\HandleTrait;
|
||||
use Symfony\Component\Messenger\MessageBusInterface;
|
||||
|
||||
/**
|
||||
* @see \Symfony\Component\Messenger\Tests\TraceableMessageBusTest::testItTracesDispatchWhenHandleTraitIsUsed
|
||||
*/
|
||||
class TestTracesWithHandleTraitAction
|
||||
{
|
||||
use HandleTrait;
|
||||
|
||||
public function __construct(MessageBusInterface $messageBus)
|
||||
{
|
||||
$this->messageBus = $messageBus;
|
||||
}
|
||||
|
||||
public function __invoke($message)
|
||||
{
|
||||
$this->handle($message);
|
||||
}
|
||||
}
|
@ -15,8 +15,10 @@ use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Component\Messenger\Envelope;
|
||||
use Symfony\Component\Messenger\MessageBusInterface;
|
||||
use Symfony\Component\Messenger\Stamp\DelayStamp;
|
||||
use Symfony\Component\Messenger\Stamp\HandledStamp;
|
||||
use Symfony\Component\Messenger\Tests\Fixtures\AnEnvelopeStamp;
|
||||
use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage;
|
||||
use Symfony\Component\Messenger\Tests\Fixtures\TestTracesWithHandleTraitAction;
|
||||
use Symfony\Component\Messenger\TraceableMessageBus;
|
||||
|
||||
class TraceableMessageBusTest extends TestCase
|
||||
@ -46,6 +48,29 @@ class TraceableMessageBusTest extends TestCase
|
||||
], $actualTracedMessage);
|
||||
}
|
||||
|
||||
public function testItTracesDispatchWhenHandleTraitIsUsed()
|
||||
{
|
||||
$message = new DummyMessage('Hello');
|
||||
|
||||
$bus = $this->getMockBuilder(MessageBusInterface::class)->getMock();
|
||||
$bus->expects($this->once())->method('dispatch')->with($message)->willReturn((new Envelope($message))->with(new HandledStamp('result', 'handlerName')));
|
||||
|
||||
$traceableBus = new TraceableMessageBus($bus);
|
||||
(new TestTracesWithHandleTraitAction($traceableBus))($message);
|
||||
$this->assertCount(1, $tracedMessages = $traceableBus->getDispatchedMessages());
|
||||
$actualTracedMessage = $tracedMessages[0];
|
||||
unset($actualTracedMessage['callTime']); // don't check, too variable
|
||||
$this->assertEquals([
|
||||
'message' => $message,
|
||||
'stamps' => [],
|
||||
'caller' => [
|
||||
'name' => 'TestTracesWithHandleTraitAction.php',
|
||||
'file' => (new \ReflectionClass(TestTracesWithHandleTraitAction::class))->getFileName(),
|
||||
'line' => (new \ReflectionMethod(TestTracesWithHandleTraitAction::class, '__invoke'))->getStartLine() + 2,
|
||||
],
|
||||
], $actualTracedMessage);
|
||||
}
|
||||
|
||||
public function testItTracesDispatchWithEnvelope()
|
||||
{
|
||||
$message = new DummyMessage('Hello');
|
||||
|
@ -65,7 +65,19 @@ class TraceableMessageBus implements MessageBusInterface
|
||||
$file = $trace[1]['file'];
|
||||
$line = $trace[1]['line'];
|
||||
|
||||
for ($i = 2; $i < 8; ++$i) {
|
||||
$handleTraitFile = (new \ReflectionClass(HandleTrait::class))->getFileName();
|
||||
$found = false;
|
||||
for ($i = 1; $i < 8; ++$i) {
|
||||
if (isset($trace[$i]['file'], $trace[$i + 1]['file'], $trace[$i + 1]['line']) && $trace[$i]['file'] === $handleTraitFile) {
|
||||
$file = $trace[$i + 1]['file'];
|
||||
$line = $trace[$i + 1]['line'];
|
||||
$found = true;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for ($i = 2; $i < 8 && !$found; ++$i) {
|
||||
if (isset($trace[$i]['class'], $trace[$i]['function'])
|
||||
&& 'dispatch' === $trace[$i]['function']
|
||||
&& is_a($trace[$i]['class'], MessageBusInterface::class, true)
|
||||
|
Reference in New Issue
Block a user