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

FriendsOfOpenTelemetry / opentelemetry-bundle / 7753009285

02 Feb 2024 07:58AM UTC coverage: 35.071% (-29.5%) from 64.527%
7753009285

Pull #38

github

gaelreyrol
refactor: better services injection with factories
Pull Request #38: Refactor services injection

99 of 459 new or added lines in 44 files covered. (21.57%)

314 existing lines in 33 files now uncovered.

740 of 2110 relevant lines covered (35.07%)

2.37 hits per line

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

0.0
/src/DependencyInjection/Compiler/CachePoolTracingPass.php
1
<?php
2

3
namespace FriendsOfOpenTelemetry\OpenTelemetryBundle\DependencyInjection\Compiler;
4

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

12
class CachePoolTracingPass implements CompilerPassInterface
13
{
14
    public function process(ContainerBuilder $container): void
15
    {
UNCOV
16
        if (true === $container->getParameter('open_telemetry.instrumentation.cache.tracing.enabled')) {
×
UNCOV
17
            foreach ($container->findTaggedServiceIds('cache.pool') as $serviceId => $tags) {
×
18
                $cachePoolDefinition = $container->getDefinition($serviceId);
×
19

20
                if ($cachePoolDefinition->isAbstract()) {
×
21
                    continue;
×
22
                }
23

24
                $definitionClass = $this->resolveDefinitionClass($container, $cachePoolDefinition);
×
25

26
                if (null === $definitionClass) {
×
27
                    continue;
×
28
                }
29

30
                if (is_subclass_of($definitionClass, TagAwareAdapterInterface::class)) {
×
31
                    $traceableCachePoolDefinition = new ChildDefinition('open_telemetry.instrumentation.cache.trace.tag_aware_adapter');
×
32
                } else {
33
                    $traceableCachePoolDefinition = new ChildDefinition('open_telemetry.instrumentation.cache.trace.adapter');
×
34
                }
35

36
                $traceableCachePoolDefinition
×
37
                    ->setDecoratedService($serviceId)
×
38
                    ->setArgument('$adapter', new Reference('.inner'));
×
39

40
                $container->setDefinition($serviceId.'.tracer', $traceableCachePoolDefinition);
×
41
            }
42
        } else {
UNCOV
43
            $container->removeDefinition('open_telemetry.instrumentation.cache.trace.tag_aware_adapter');
×
UNCOV
44
            $container->removeDefinition('open_telemetry.instrumentation.cache.trace.adapter');
×
45
        }
46
    }
47

48
    private function resolveDefinitionClass(ContainerBuilder $container, Definition $definition): ?string
49
    {
50
        $class = $definition->getClass();
×
51

52
        while (null === $class && $definition instanceof ChildDefinition) {
×
53
            $definition = $container->findDefinition($definition->getParent());
×
54
            $class = $definition->getClass();
×
55
        }
56

57
        return $class;
×
58
    }
59
}
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