diff --git a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/serializer.html.twig b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/serializer.html.twig index 7e5ed850c1329..a7d0a8ed9001e 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/serializer.html.twig +++ b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/serializer.html.twig @@ -11,34 +11,36 @@ {% block panel %}

Serializer

- {% if not collector.handledCount %} -
-

Nothing was handled by the serializer for this request.

-
- {% else %} -
-
- {{ collector.handledCount }} - Handled +
+ {% if not collector.handledCount %} +
+

Nothing was handled by the serializer for this request.

+ {% else %} +
+
+ {{ collector.handledCount }} + Handled +
-
- {{ '%.2f'|format(collector.totalTime * 1000) }} ms - Total time +
+ {{ '%.2f'|format(collector.totalTime * 1000) }} ms + Total time +
-
-
- {{ helper.render_serialize_tab(collector.data, true) }} - {{ helper.render_serialize_tab(collector.data, false) }} +
+ {{ helper.render_serialize_tab(collector.data, true) }} + {{ helper.render_serialize_tab(collector.data, false) }} - {{ helper.render_normalize_tab(collector.data, true) }} - {{ helper.render_normalize_tab(collector.data, false) }} + {{ helper.render_normalize_tab(collector.data, true) }} + {{ helper.render_normalize_tab(collector.data, false) }} - {{ helper.render_encode_tab(collector.data, true) }} - {{ helper.render_encode_tab(collector.data, false) }} -
- {% endif %} + {{ helper.render_encode_tab(collector.data, true) }} + {{ helper.render_encode_tab(collector.data, false) }} +
+ {% endif %} +
{% endblock %} {% macro render_serialize_tab(collectorData, serialize) %} @@ -61,6 +63,7 @@ Normalizer Encoder Time + Caller @@ -71,6 +74,7 @@ {{ helper.render_normalizer_cell(item, loop.index, cellPrefix) }} {{ helper.render_encoder_cell(item, loop.index, cellPrefix) }} {{ helper.render_time_cell(item) }} + {{ helper.render_caller_cell(item, loop.index, cellPrefix) }} {% endfor %} @@ -80,6 +84,36 @@
{% endmacro %} +{% macro render_caller_cell(item, index, method) %} + {% if item.caller is defined %} + + {% set caller = item.caller %} + {% if caller.line %} + {% set link = caller.file|file_link(caller.line) %} + {% if link %} + {{ caller.name }} + {% else %} + {{ caller.name }} + {% endif %} + {% else %} + {{ caller.name }} + {% endif %} + line {{ caller.line }} + + + + {% endif %} +{% endmacro %} + {% macro render_normalize_tab(collectorData, normalize) %} {% set data = normalize ? collectorData.normalize : collectorData.denormalize %} {% set cellPrefix = normalize ? 'normalize' : 'denormalize' %} @@ -99,6 +133,7 @@ Context Normalizer Time + Caller @@ -108,6 +143,7 @@ {{ helper.render_context_cell(item, loop.index, cellPrefix) }} {{ helper.render_normalizer_cell(item, loop.index, cellPrefix) }} {{ helper.render_time_cell(item) }} + {{ helper.render_caller_cell(item, loop.index, cellPrefix) }} {% endfor %} @@ -136,6 +172,7 @@ Context Encoder Time + Caller @@ -145,6 +182,7 @@ {{ helper.render_context_cell(item, loop.index, cellPrefix) }} {{ helper.render_encoder_cell(item, loop.index, cellPrefix) }} {{ helper.render_time_cell(item) }} + {{ helper.render_caller_cell(item, loop.index, cellPrefix) }} {% endfor %} @@ -188,7 +226,9 @@ {% macro render_normalizer_cell(item, index, method) %} {% set nested_normalizers_id = 'nested-normalizers-' ~ method ~ '-' ~ index %} - {{ item.normalizer.class }} ({{ '%.2f'|format(item.normalizer.time * 1000) }} ms) + {% if item.normalizer is defined %} + {{ item.normalizer.class }} ({{ '%.2f'|format(item.normalizer.time * 1000) }} ms) + {% endif %} {% if item.normalization|length > 1 %}
@@ -207,7 +247,9 @@ {% macro render_encoder_cell(item, index, method) %} {% set nested_encoders_id = 'nested-encoders-' ~ method ~ '-' ~ index %} - {{ item.encoder.class }} ({{ '%.2f'|format(item.encoder.time * 1000) }} ms) + {% if item.encoder is defined %} + {{ item.encoder.class }} ({{ '%.2f'|format(item.encoder.time * 1000) }} ms) + {% endif %} {% if item.encoding|length > 1 %}
diff --git a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/profiler.css.twig b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/profiler.css.twig index 67e38ab808be1..afa99c213119e 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/profiler.css.twig +++ b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/profiler.css.twig @@ -51,6 +51,7 @@ --highlight-default: #222222; --highlight-keyword: #a71d5d; --highlight-string: #183691; + --highlight-selected-line: rgba(255, 255, 153, 0.5); --base-0: #fff; --base-1: #f5f5f5; --base-2: #e0e0e0; @@ -104,6 +105,7 @@ --highlight-default: var(--base-6); --highlight-keyword: #ff413c; --highlight-string: #70a6fd; + --highlight-selected-line: rgba(14, 14, 14, 0.5); --base-0: #2e3136; --base-1: #444; --base-2: #666; @@ -1296,15 +1298,40 @@ tr.log-status-silenced { padding: 0; } #collector-content .sf-validator .trace li.selected { - background: rgba(255, 255, 153, 0.5); + background: var(--highlight-selected-line); +} + +{# Serializer panel + ========================================================================= #} + +#collector-content .sf-serializer { + margin-bottom: 2em; +} + +#collector-content .sf-serializer .trace { + border: var(--border); + background: var(--base-0); + padding: 10px; + margin: 0.5em 0; + overflow: auto; +} +#collector-content .sf-serializer .trace { + font-size: 12px; +} +#collector-content .sf-serializer .trace li { + margin-bottom: 0; + padding: 0; +} +#collector-content .sf-serializer .trace li.selected { + background: var(--highlight-selected-line); } {# Messenger panel ========================================================================= #} #collector-content .message-bus .trace { - border: 1px solid #DDD; - background: #FFF; + border: var(--border); + background: var(--base-0); padding: 10px; margin: 0.5em 0; overflow: auto; @@ -1317,7 +1344,7 @@ tr.log-status-silenced { padding: 0; } #collector-content .message-bus .trace li.selected { - background: rgba(255, 255, 153, 0.5); + background: var(--highlight-selected-line); } {# Dump panel diff --git a/src/Symfony/Component/Serializer/DataCollector/SerializerDataCollector.php b/src/Symfony/Component/Serializer/DataCollector/SerializerDataCollector.php index 2cc4ba7a922e8..0d0ccc6d593b2 100644 --- a/src/Symfony/Component/Serializer/DataCollector/SerializerDataCollector.php +++ b/src/Symfony/Component/Serializer/DataCollector/SerializerDataCollector.php @@ -16,6 +16,7 @@ use Symfony\Component\HttpKernel\DataCollector\DataCollector; use Symfony\Component\HttpKernel\DataCollector\LateDataCollectorInterface; use Symfony\Component\Serializer\Debug\TraceableSerializer; +use Symfony\Component\Serializer\SerializerInterface; use Symfony\Component\VarDumper\Cloner\Data; /** @@ -70,68 +71,68 @@ public function getTotalTime(): float return $totalTime; } - public function collectSerialize(string $traceId, mixed $data, string $format, array $context, float $time): void + public function collectSerialize(string $traceId, mixed $data, string $format, array $context, float $time, array $caller): void { unset($context[TraceableSerializer::DEBUG_TRACE_ID]); $this->collected[$traceId] = array_merge( $this->collected[$traceId] ?? [], - compact('data', 'format', 'context', 'time'), + compact('data', 'format', 'context', 'time', 'caller'), ['method' => 'serialize'], ); } - public function collectDeserialize(string $traceId, mixed $data, string $type, string $format, array $context, float $time): void + public function collectDeserialize(string $traceId, mixed $data, string $type, string $format, array $context, float $time, array $caller): void { unset($context[TraceableSerializer::DEBUG_TRACE_ID]); $this->collected[$traceId] = array_merge( $this->collected[$traceId] ?? [], - compact('data', 'format', 'type', 'context', 'time'), + compact('data', 'format', 'type', 'context', 'time', 'caller'), ['method' => 'deserialize'], ); } - public function collectNormalize(string $traceId, mixed $data, ?string $format, array $context, float $time): void + public function collectNormalize(string $traceId, mixed $data, ?string $format, array $context, float $time, array $caller): void { unset($context[TraceableSerializer::DEBUG_TRACE_ID]); $this->collected[$traceId] = array_merge( $this->collected[$traceId] ?? [], - compact('data', 'format', 'context', 'time'), + compact('data', 'format', 'context', 'time', 'caller'), ['method' => 'normalize'], ); } - public function collectDenormalize(string $traceId, mixed $data, string $type, ?string $format, array $context, float $time): void + public function collectDenormalize(string $traceId, mixed $data, string $type, ?string $format, array $context, float $time, array $caller): void { unset($context[TraceableSerializer::DEBUG_TRACE_ID]); $this->collected[$traceId] = array_merge( $this->collected[$traceId] ?? [], - compact('data', 'format', 'type', 'context', 'time'), + compact('data', 'format', 'type', 'context', 'time', 'caller'), ['method' => 'denormalize'], ); } - public function collectEncode(string $traceId, mixed $data, ?string $format, array $context, float $time): void + public function collectEncode(string $traceId, mixed $data, ?string $format, array $context, float $time, array $caller): void { unset($context[TraceableSerializer::DEBUG_TRACE_ID]); $this->collected[$traceId] = array_merge( $this->collected[$traceId] ?? [], - compact('data', 'format', 'context', 'time'), + compact('data', 'format', 'context', 'time', 'caller'), ['method' => 'encode'], ); } - public function collectDecode(string $traceId, mixed $data, ?string $format, array $context, float $time): void + public function collectDecode(string $traceId, mixed $data, ?string $format, array $context, float $time, array $caller): void { unset($context[TraceableSerializer::DEBUG_TRACE_ID]); $this->collected[$traceId] = array_merge( $this->collected[$traceId] ?? [], - compact('data', 'format', 'context', 'time'), + compact('data', 'format', 'context', 'time', 'caller'), ['method' => 'decode'], ); } @@ -192,6 +193,7 @@ public function lateCollect(): void 'context' => $this->cloneVar($collected['context']), 'normalization' => [], 'encoding' => [], + 'caller' => $collected['caller'] ?? null, ]; if (isset($collected['normalization'])) { diff --git a/src/Symfony/Component/Serializer/Debug/TraceableSerializer.php b/src/Symfony/Component/Serializer/Debug/TraceableSerializer.php index bc16bd7f8d240..bcc1f71a6d305 100644 --- a/src/Symfony/Component/Serializer/Debug/TraceableSerializer.php +++ b/src/Symfony/Component/Serializer/Debug/TraceableSerializer.php @@ -49,7 +49,9 @@ public function serialize(mixed $data, string $format, array $context = []): str $result = $this->serializer->serialize($data, $format, $context); $time = microtime(true) - $startTime; - $this->dataCollector->collectSerialize($traceId, $data, $format, $context, $time); + $caller = $this->getCaller(__FUNCTION__, SerializerInterface::class); + + $this->dataCollector->collectSerialize($traceId, $data, $format, $context, $time, $caller); return $result; } @@ -65,7 +67,9 @@ public function deserialize(mixed $data, string $type, string $format, array $co $result = $this->serializer->deserialize($data, $type, $format, $context); $time = microtime(true) - $startTime; - $this->dataCollector->collectDeserialize($traceId, $data, $type, $format, $context, $time); + $caller = $this->getCaller(__FUNCTION__, SerializerInterface::class); + + $this->dataCollector->collectDeserialize($traceId, $data, $type, $format, $context, $time, $caller); return $result; } @@ -81,7 +85,9 @@ public function normalize(mixed $object, string $format = null, array $context = $result = $this->serializer->normalize($object, $format, $context); $time = microtime(true) - $startTime; - $this->dataCollector->collectNormalize($traceId, $object, $format, $context, $time); + $caller = $this->getCaller(__FUNCTION__, NormalizerInterface::class); + + $this->dataCollector->collectNormalize($traceId, $object, $format, $context, $time, $caller); return $result; } @@ -97,7 +103,9 @@ public function denormalize(mixed $data, string $type, string $format = null, ar $result = $this->serializer->denormalize($data, $type, $format, $context); $time = microtime(true) - $startTime; - $this->dataCollector->collectDenormalize($traceId, $data, $type, $format, $context, $time); + $caller = $this->getCaller(__FUNCTION__, DenormalizerInterface::class); + + $this->dataCollector->collectDenormalize($traceId, $data, $type, $format, $context, $time, $caller); return $result; } @@ -113,7 +121,9 @@ public function encode(mixed $data, string $format, array $context = []): string $result = $this->serializer->encode($data, $format, $context); $time = microtime(true) - $startTime; - $this->dataCollector->collectEncode($traceId, $data, $format, $context, $time); + $caller = $this->getCaller(__FUNCTION__, EncoderInterface::class); + + $this->dataCollector->collectEncode($traceId, $data, $format, $context, $time, $caller); return $result; } @@ -129,7 +139,9 @@ public function decode(string $data, string $format, array $context = []): mixed $result = $this->serializer->decode($data, $format, $context); $time = microtime(true) - $startTime; - $this->dataCollector->collectDecode($traceId, $data, $format, $context, $time); + $caller = $this->getCaller(__FUNCTION__, DecoderInterface::class); + + $this->dataCollector->collectDecode($traceId, $data, $format, $context, $time, $caller); return $result; } @@ -173,4 +185,29 @@ public function __call(string $method, array $arguments): mixed { return $this->serializer->{$method}(...$arguments); } + + private function getCaller(string $method, string $interface): array + { + $trace = debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS, 8); + + $file = $trace[0]['file']; + $line = $trace[0]['line']; + + for ($i = 1; $i < 8; ++$i) { + if (isset($trace[$i]['class'], $trace[$i]['function']) + && $method === $trace[$i]['function'] + && is_a($trace[$i]['class'], $interface, true) + ) { + $file = $trace[$i]['file']; + $line = $trace[$i]['line']; + + break; + } + } + + $name = str_replace('\\', '/', $file); + $name = substr($name, strrpos($name, '/') + 1); + + return compact('name', 'file', 'line'); + } } diff --git a/src/Symfony/Component/Serializer/Tests/DataCollector/SerializerDataCollectorTest.php b/src/Symfony/Component/Serializer/Tests/DataCollector/SerializerDataCollectorTest.php index b929e262753cc..aebde8efa1d82 100644 --- a/src/Symfony/Component/Serializer/Tests/DataCollector/SerializerDataCollectorTest.php +++ b/src/Symfony/Component/Serializer/Tests/DataCollector/SerializerDataCollectorTest.php @@ -24,8 +24,9 @@ public function testCollectSerialize() { $dataCollector = new SerializerDataCollector(); - $dataCollector->collectSerialize('traceIdOne', 'data', 'format', ['foo' => 'bar'], 1.0); - $dataCollector->collectDeserialize('traceIdTwo', 'data', 'type', 'format', ['foo' => 'bar'], 1.0); + $caller = ['name' => 'Foo.php', 'file' => 'src/Foo.php', 'line' => 123]; + $dataCollector->collectSerialize('traceIdOne', 'data', 'format', ['foo' => 'bar'], 1.0, $caller); + $dataCollector->collectDeserialize('traceIdTwo', 'data', 'type', 'format', ['foo' => 'bar'], 1.0, $caller); $dataCollector->lateCollect(); $collectedData = $this->castCollectedData($dataCollector->getData()); @@ -39,6 +40,7 @@ public function testCollectSerialize() 'context' => ['foo' => 'bar'], 'normalization' => [], 'encoding' => [], + 'caller' => $caller, ]], $collectedData['serialize']); $this->assertSame([[ @@ -50,6 +52,7 @@ public function testCollectSerialize() 'context' => ['foo' => 'bar'], 'normalization' => [], 'encoding' => [], + 'caller' => $caller, ]], $collectedData['deserialize']); } @@ -57,8 +60,9 @@ public function testCollectNormalize() { $dataCollector = new SerializerDataCollector(); - $dataCollector->collectNormalize('traceIdOne', 'data', 'format', ['foo' => 'bar'], 1.0); - $dataCollector->collectDenormalize('traceIdTwo', 'data', 'type', 'format', ['foo' => 'bar'], 1.0); + $caller = ['name' => 'Foo.php', 'file' => 'src/Foo.php', 'line' => 123]; + $dataCollector->collectNormalize('traceIdOne', 'data', 'format', ['foo' => 'bar'], 1.0, $caller); + $dataCollector->collectDenormalize('traceIdTwo', 'data', 'type', 'format', ['foo' => 'bar'], 1.0, $caller); $dataCollector->lateCollect(); $collectedData = $this->castCollectedData($dataCollector->getData()); @@ -72,6 +76,7 @@ public function testCollectNormalize() 'context' => ['foo' => 'bar'], 'normalization' => [], 'encoding' => [], + 'caller' => $caller, ]], $collectedData['normalize']); $this->assertSame([[ @@ -83,6 +88,7 @@ public function testCollectNormalize() 'context' => ['foo' => 'bar'], 'normalization' => [], 'encoding' => [], + 'caller' => $caller, ]], $collectedData['denormalize']); } @@ -90,8 +96,9 @@ public function testCollectEncode() { $dataCollector = new SerializerDataCollector(); - $dataCollector->collectEncode('traceIdOne', 'data', 'format', ['foo' => 'bar'], 1.0); - $dataCollector->collectDecode('traceIdTwo', 'data', 'format', ['foo' => 'bar'], 1.0); + $caller = ['name' => 'Foo.php', 'file' => 'src/Foo.php', 'line' => 123]; + $dataCollector->collectEncode('traceIdOne', 'data', 'format', ['foo' => 'bar'], 1.0, $caller); + $dataCollector->collectDecode('traceIdTwo', 'data', 'format', ['foo' => 'bar'], 1.0, $caller); $dataCollector->lateCollect(); $collectedData = $this->castCollectedData($dataCollector->getData()); @@ -105,6 +112,7 @@ public function testCollectEncode() 'context' => ['foo' => 'bar'], 'normalization' => [], 'encoding' => [], + 'caller' => $caller, ]], $collectedData['encode']); $this->assertSame([[ @@ -116,6 +124,7 @@ public function testCollectEncode() 'context' => ['foo' => 'bar'], 'normalization' => [], 'encoding' => [], + 'caller' => $caller, ]], $collectedData['decode']); } @@ -123,8 +132,9 @@ public function testCollectNormalization() { $dataCollector = new SerializerDataCollector(); - $dataCollector->collectNormalize('traceIdOne', 'data', 'format', ['foo' => 'bar'], 20.0); - $dataCollector->collectDenormalize('traceIdTwo', 'data', 'type', 'format', ['foo' => 'bar'], 20.0); + $caller = ['name' => 'Foo.php', 'file' => 'src/Foo.php', 'line' => 123]; + $dataCollector->collectNormalize('traceIdOne', 'data', 'format', ['foo' => 'bar'], 20.0, $caller); + $dataCollector->collectDenormalize('traceIdTwo', 'data', 'type', 'format', ['foo' => 'bar'], 20.0, $caller); $dataCollector->collectNormalization('traceIdOne', DateTimeNormalizer::class, 1.0); $dataCollector->collectNormalization('traceIdOne', DateTimeNormalizer::class, 2.0); @@ -178,8 +188,9 @@ public function testCollectEncoding() { $dataCollector = new SerializerDataCollector(); - $dataCollector->collectEncode('traceIdOne', 'data', 'format', ['foo' => 'bar'], 20.0); - $dataCollector->collectDecode('traceIdTwo', 'data', 'format', ['foo' => 'bar'], 20.0); + $caller = ['name' => 'Foo.php', 'file' => 'src/Foo.php', 'line' => 123]; + $dataCollector->collectEncode('traceIdOne', 'data', 'format', ['foo' => 'bar'], 20.0, $caller); + $dataCollector->collectDecode('traceIdTwo', 'data', 'format', ['foo' => 'bar'], 20.0, $caller); $dataCollector->collectEncoding('traceIdOne', JsonEncoder::class, 1.0); $dataCollector->collectEncoding('traceIdOne', JsonEncoder::class, 2.0); @@ -233,13 +244,14 @@ public function testCountHandled() { $dataCollector = new SerializerDataCollector(); - $dataCollector->collectSerialize('traceIdOne', 'data', 'format', ['foo' => 'bar'], 1.0); - $dataCollector->collectDeserialize('traceIdTwo', 'data', 'type', 'format', ['foo' => 'bar'], 1.0); - $dataCollector->collectNormalize('traceIdThree', 'data', 'format', ['foo' => 'bar'], 20.0); - $dataCollector->collectDenormalize('traceIdFour', 'data', 'type', 'format', ['foo' => 'bar'], 20.0); - $dataCollector->collectEncode('traceIdFive', 'data', 'format', ['foo' => 'bar'], 20.0); - $dataCollector->collectDecode('traceIdSix', 'data', 'format', ['foo' => 'bar'], 20.0); - $dataCollector->collectSerialize('traceIdSeven', 'data', 'format', ['foo' => 'bar'], 1.0); + $caller = ['name' => 'Foo.php', 'file' => 'src/Foo.php', 'line' => 123]; + $dataCollector->collectSerialize('traceIdOne', 'data', 'format', ['foo' => 'bar'], 1.0, $caller); + $dataCollector->collectDeserialize('traceIdTwo', 'data', 'type', 'format', ['foo' => 'bar'], 1.0, $caller); + $dataCollector->collectNormalize('traceIdThree', 'data', 'format', ['foo' => 'bar'], 20.0, $caller); + $dataCollector->collectDenormalize('traceIdFour', 'data', 'type', 'format', ['foo' => 'bar'], 20.0, $caller); + $dataCollector->collectEncode('traceIdFive', 'data', 'format', ['foo' => 'bar'], 20.0, $caller); + $dataCollector->collectDecode('traceIdSix', 'data', 'format', ['foo' => 'bar'], 20.0, $caller); + $dataCollector->collectSerialize('traceIdSeven', 'data', 'format', ['foo' => 'bar'], 1.0, $caller); $dataCollector->lateCollect(); @@ -250,13 +262,15 @@ public function testGetTotalTime() { $dataCollector = new SerializerDataCollector(); - $dataCollector->collectSerialize('traceIdOne', 'data', 'format', ['foo' => 'bar'], 1.0); - $dataCollector->collectDeserialize('traceIdTwo', 'data', 'type', 'format', ['foo' => 'bar'], 2.0); - $dataCollector->collectNormalize('traceIdThree', 'data', 'format', ['foo' => 'bar'], 3.0); - $dataCollector->collectDenormalize('traceIdFour', 'data', 'type', 'format', ['foo' => 'bar'], 4.0); - $dataCollector->collectEncode('traceIdFive', 'data', 'format', ['foo' => 'bar'], 5.0); - $dataCollector->collectDecode('traceIdSix', 'data', 'format', ['foo' => 'bar'], 6.0); - $dataCollector->collectSerialize('traceIdSeven', 'data', 'format', ['foo' => 'bar'], 7.0); + $caller = ['name' => 'Foo.php', 'file' => 'src/Foo.php', 'line' => 123]; + + $dataCollector->collectSerialize('traceIdOne', 'data', 'format', ['foo' => 'bar'], 1.0, $caller); + $dataCollector->collectDeserialize('traceIdTwo', 'data', 'type', 'format', ['foo' => 'bar'], 2.0, $caller); + $dataCollector->collectNormalize('traceIdThree', 'data', 'format', ['foo' => 'bar'], 3.0, $caller); + $dataCollector->collectDenormalize('traceIdFour', 'data', 'type', 'format', ['foo' => 'bar'], 4.0, $caller); + $dataCollector->collectEncode('traceIdFive', 'data', 'format', ['foo' => 'bar'], 5.0, $caller); + $dataCollector->collectDecode('traceIdSix', 'data', 'format', ['foo' => 'bar'], 6.0, $caller); + $dataCollector->collectSerialize('traceIdSeven', 'data', 'format', ['foo' => 'bar'], 7.0, $caller); $dataCollector->lateCollect(); @@ -267,7 +281,8 @@ public function testReset() { $dataCollector = new SerializerDataCollector(); - $dataCollector->collectSerialize('traceIdOne', 'data', 'format', ['foo' => 'bar'], 1.0); + $caller = ['name' => 'Foo.php', 'file' => 'src/Foo.php', 'line' => 123]; + $dataCollector->collectSerialize('traceIdOne', 'data', 'format', ['foo' => 'bar'], 1.0, $caller); $dataCollector->lateCollect(); $this->assertNotSame([], $dataCollector->getData());