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

FriendsOfOpenTelemetry / opentelemetry-bundle / 12748661767

13 Jan 2025 01:51PM UTC coverage: 88.771% (-0.02%) from 88.791%
12748661767

Pull #107

github

web-flow
Merge f41fb4a33 into 0b41a5c51
Pull Request #107: refactor(DependencyInjection): move configurate in compiler passes

62 of 77 new or added lines in 10 files covered. (80.52%)

2016 of 2271 relevant lines covered (88.77%)

6.92 hits per line

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

55.88
/src/DependencyInjection/Compiler/CacheInstrumentationPass.php
1
<?php
2

3
namespace FriendsOfOpenTelemetry\OpenTelemetryBundle\DependencyInjection\Compiler;
4

5
use Symfony\Component\DependencyInjection\ChildDefinition;
6
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
7
use Symfony\Component\DependencyInjection\ContainerBuilder;
8
use Symfony\Component\DependencyInjection\Definition;
9
use Symfony\Component\DependencyInjection\Reference;
10

11
class CacheInstrumentationPass implements CompilerPassInterface
12
{
13
    public function process(ContainerBuilder $container): void
14
    {
15
        if (false === $container->hasParameter('open_telemetry.instrumentation.cache.tracing.enabled')
7✔
16
            || false === $container->getParameter('open_telemetry.instrumentation.cache.tracing.enabled')) {
7✔
17
            $container->removeDefinition('open_telemetry.instrumentation.cache.trace.tag_aware_adapter');
6✔
18
            $container->removeDefinition('open_telemetry.instrumentation.cache.trace.adapter');
6✔
19

20
            return;
6✔
21
        }
22

23
        foreach ($container->findTaggedServiceIds('cache.pool') as $serviceId => $tags) {
1✔
24
            $cachePoolDefinition = $container->getDefinition($serviceId);
1✔
25
            if ($cachePoolDefinition->isAbstract()) {
1✔
NEW
26
                continue;
×
27
            }
28

29
            $definitionClass = $this->resolveDefinitionClass($container, $cachePoolDefinition);
1✔
30
            if (null === $definitionClass) {
1✔
NEW
31
                continue;
×
32
            }
33

34
            $traceableCachePoolDefinition = new ChildDefinition('open_telemetry.instrumentation.cache.trace.adapter');
1✔
35
            $traceableCachePoolDefinition
1✔
36
                ->setDecoratedService($serviceId)
1✔
37
                ->setArgument('$adapter', new Reference('.inner'));
1✔
38

39
            $container->setDefinition($serviceId.'.tracer', $traceableCachePoolDefinition);
1✔
40
        }
41

42
        foreach ($container->findTaggedServiceIds('cache.taggable') as $serviceId => $tags) {
1✔
NEW
43
            $cachePoolDefinition = $container->getDefinition($serviceId);
×
NEW
44
            if ($cachePoolDefinition->isAbstract()) {
×
NEW
45
                continue;
×
46
            }
47

NEW
48
            $definitionClass = $this->resolveDefinitionClass($container, $cachePoolDefinition);
×
NEW
49
            if (null === $definitionClass) {
×
NEW
50
                continue;
×
51
            }
52

NEW
53
            $traceableCachePoolDefinition = new ChildDefinition('open_telemetry.instrumentation.cache.trace.tag_aware_adapter');
×
NEW
54
            $traceableCachePoolDefinition
×
NEW
55
                ->setDecoratedService($serviceId)
×
NEW
56
                ->setArgument('$adapter', new Reference('.inner'));
×
57

NEW
58
            $container->setDefinition($serviceId.'.tracer', $traceableCachePoolDefinition);
×
59
        }
60
    }
61

62
    private function resolveDefinitionClass(ContainerBuilder $container, Definition $definition): ?string
63
    {
64
        $class = $definition->getClass();
1✔
65

66
        while (null === $class && $definition instanceof ChildDefinition) {
1✔
NEW
67
            $definition = $container->findDefinition($definition->getParent());
×
NEW
68
            $class = $definition->getClass();
×
69
        }
70

71
        return $class;
1✔
72
    }
73
}
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