• 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

80.0
/src/OpenTelemetry/Metric/ExemplarFilterFactory.php
1
<?php
2

3
namespace FriendsOfOpenTelemetry\OpenTelemetryBundle\OpenTelemetry\Metric;
4

5
use OpenTelemetry\SDK\Metrics\Exemplar\ExemplarFilter\AllExemplarFilter;
6
use OpenTelemetry\SDK\Metrics\Exemplar\ExemplarFilter\NoneExemplarFilter;
7
use OpenTelemetry\SDK\Metrics\Exemplar\ExemplarFilter\WithSampledTraceExemplarFilter;
8
use OpenTelemetry\SDK\Metrics\Exemplar\ExemplarFilterInterface;
9

10
final class ExemplarFilterFactory
11
{
12
    /**
13
     * @param array{service_id?: mixed} $params
14
     */
15
    public static function create(string $name, array $params = []): ExemplarFilterInterface
16
    {
17
        $filter = ExemplarFilterEnum::tryFrom($name);
42✔
18

19
        if (isset($params['service_id']) && false === $params['service_id'] instanceof ExemplarFilterInterface) {
42✔
20
            throw new \InvalidArgumentException('Parameter service_id must be an instance of ExemplarFilterInterface');
1✔
21
        }
22

UNCOV
23
        return match ($filter) {
×
24
            ExemplarFilterEnum::All => new AllExemplarFilter(),
41✔
25
            ExemplarFilterEnum::None => new NoneExemplarFilter(),
37✔
26
            ExemplarFilterEnum::WithSampledTrace => new WithSampledTraceExemplarFilter(),
4✔
27
            ExemplarFilterEnum::Service => $params['service_id'],
3✔
28
            default => throw new \InvalidArgumentException(sprintf('Unknown exemplar filter: %s', $name)),
41✔
UNCOV
29
        };
×
30
    }
31
}
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