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

FriendsOfOpenTelemetry / opentelemetry-bundle / 8185302027

07 Mar 2024 08:45AM UTC coverage: 89.422% (+19.0%) from 70.406%
8185302027

push

github

web-flow
tests: add instrumentation test suite (#47)

86 of 99 new or added lines in 14 files covered. (86.87%)

20 existing lines in 2 files now uncovered.

1902 of 2127 relevant lines covered (89.42%)

6.88 hits per line

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

54.55
/src/DependencyInjection/Compiler/CachePoolTracingPass.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 CachePoolTracingPass implements CompilerPassInterface
12
{
13
    public function process(ContainerBuilder $container): void
14
    {
15
        if (true === $container->hasParameter('open_telemetry.instrumentation.cache.tracing.enabled')
7✔
16
            && true === $container->getParameter('open_telemetry.instrumentation.cache.tracing.enabled')) {
7✔
17
            foreach ($container->findTaggedServiceIds('cache.pool') as $serviceId => $tags) {
1✔
18
                $cachePoolDefinition = $container->getDefinition($serviceId);
1✔
19
                if ($cachePoolDefinition->isAbstract()) {
1✔
UNCOV
20
                    continue;
×
21
                }
22

23
                $definitionClass = $this->resolveDefinitionClass($container, $cachePoolDefinition);
1✔
24
                if (null === $definitionClass) {
1✔
UNCOV
25
                    continue;
×
26
                }
27

28
                $traceableCachePoolDefinition = new ChildDefinition('open_telemetry.instrumentation.cache.trace.adapter');
1✔
29
                $traceableCachePoolDefinition
1✔
30
                    ->setDecoratedService($serviceId)
1✔
31
                    ->setArgument('$adapter', new Reference('.inner'));
1✔
32

33
                $container->setDefinition($serviceId.'.tracer', $traceableCachePoolDefinition);
1✔
34
            }
35

36
            foreach ($container->findTaggedServiceIds('cache.taggable') as $serviceId => $tags) {
1✔
NEW
37
                $cachePoolDefinition = $container->getDefinition($serviceId);
×
NEW
38
                if ($cachePoolDefinition->isAbstract()) {
×
NEW
39
                    continue;
×
40
                }
41

NEW
42
                $definitionClass = $this->resolveDefinitionClass($container, $cachePoolDefinition);
×
NEW
43
                if (null === $definitionClass) {
×
NEW
44
                    continue;
×
45
                }
46

NEW
47
                $traceableCachePoolDefinition = new ChildDefinition('open_telemetry.instrumentation.cache.trace.tag_aware_adapter');
×
UNCOV
48
                $traceableCachePoolDefinition
×
UNCOV
49
                    ->setDecoratedService($serviceId)
×
UNCOV
50
                    ->setArgument('$adapter', new Reference('.inner'));
×
51

UNCOV
52
                $container->setDefinition($serviceId.'.tracer', $traceableCachePoolDefinition);
×
53
            }
54
        } else {
55
            $container->removeDefinition('open_telemetry.instrumentation.cache.trace.tag_aware_adapter');
6✔
56
            $container->removeDefinition('open_telemetry.instrumentation.cache.trace.adapter');
6✔
57
        }
58
    }
59

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

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

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

© 2025 Coveralls, Inc