• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

FriendsOfOpenTelemetry / opentelemetry-bundle / 25035624412

28 Apr 2026 05:27AM UTC coverage: 92.409% (+0.7%) from 91.751%
25035624412

push

github

web-flow
feat(Instrumentation/Messenger): implement worker and middleware instrumentation (#173)

* chore(messenger): add trace parent in dispatched messages (AMQP)

* chore(messenger): use Messenger events to start/end span for instrumentation

* remove strict type, merge start/end span into 1 subscriber, close span on error and on message handled

* propagation not related to AMQP + read incoming trace (async context)

* rename event subscriber

* chore(messenger): use Messenger events to start/end span for instrumentation

* chore(messenger): add trace parent in dispatched messages (AMQP)

* remove strict type, merge start/end span into 1 subscriber, close span on error and on message handled

* propagation not related to AMQP + read incoming trace (async context)

* rename event subscriber

* fix(messenger): clean up worker subscriber and add functional tests

Fix several issues in the WorkerMessageEventSubscriber introduced by PR #173:
- Replace SDK Span import with API Span to respect API/SDK separation
- Implement InstrumentationTypeInterface for consistency with other subscribers
- Add event priorities (10000/-10000) to wrap all other processing
- Add messaging semantic convention attributes (operation.type, destination.name)
- Include message class name in span name for better trace readability
- Remove stale imports and duplicate propagation middleware service definition
- Clean up propagation middleware when messenger tracing is disabled
- Add PHPStan baseline entries for untyped $carrier interface params
- Add functional tests for worker message handled, failed, and attribute mode
- Reorganize messenger tests into Messenger/ subdirectory
- Disable retry on test transport to isolate worker span assertions

* test(messenger): add tests for transport tracing and propagation middleware

Cover TraceableMessengerTransport (get/ack/reject spans + TransportException
error recording) and AddStampForPropagationMiddleware (stamp skip, no-scope
passthrough, ac... (continued)

187 of 191 new or added lines in 14 files covered. (97.91%)

12 existing lines in 10 files now uncovered.

2459 of 2661 relevant lines covered (92.41%)

15.79 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

85.71
/src/OpenTelemetry/Trace/SamplerFactory.php
1
<?php
2

3
namespace FriendsOfOpenTelemetry\OpenTelemetryBundle\OpenTelemetry\Trace;
4

5
use FriendsOfOpenTelemetry\OpenTelemetryBundle\OpenTelemetry\Trace\Sampler\AttributeBasedSampler;
6
use OpenTelemetry\SDK\Trace\Sampler\AlwaysOffSampler;
7
use OpenTelemetry\SDK\Trace\Sampler\AlwaysOnSampler;
8
use OpenTelemetry\SDK\Trace\Sampler\ParentBased;
9
use OpenTelemetry\SDK\Trace\Sampler\TraceIdRatioBasedSampler;
10
use OpenTelemetry\SDK\Trace\SamplerInterface;
11

12
final class SamplerFactory
13
{
14
    /**
15
     * @param array<int|string, mixed> $params
16
     */
17
    public static function create(string $name, array $params = []): SamplerInterface
18
    {
19
        $sampler = TraceSamplerEnum::tryFrom($name);
101✔
20

21
        if (isset($params['service_id']) && false === $params['service_id'] instanceof SamplerInterface) {
101✔
22
            throw new \InvalidArgumentException('Parameter service_id must be an instance of SamplerInterface');
1✔
23
        }
24

UNCOV
25
        return match ($sampler) {
×
26
            TraceSamplerEnum::AlwaysOn => new AlwaysOnSampler(),
100✔
27
            TraceSamplerEnum::AlwaysOff => new AlwaysOffSampler(),
9✔
28
            TraceSamplerEnum::ParentBasedAlwaysOn => new ParentBased(new AlwaysOnSampler()),
8✔
29
            TraceSamplerEnum::ParentBasedAlwaysOff => new ParentBased(new AlwaysOffSampler()),
7✔
30
            TraceSamplerEnum::ParentBasedTraceIdRatio => new ParentBased(new TraceIdRatioBasedSampler(...$params)),
6✔
31
            TraceSamplerEnum::TraceIdRatio => new TraceIdRatioBasedSampler(...$params),
5✔
32
            TraceSamplerEnum::AttributeBased => new AttributeBasedSampler(...$params),
4✔
33
            TraceSamplerEnum::Service => $params['service_id'],
3✔
34
            default => throw new \InvalidArgumentException(sprintf('Unknown sampler: %s', $name)),
100✔
UNCOV
35
        };
×
36
    }
37
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc