File Coverage

blib/lib/OpenTelemetry/SDK/Trace/Tracer.pm
Criterion Covered Total %
statement 31 33 93.9
branch 4 6 66.6
condition 3 8 37.5
subroutine 8 8 100.0
pod 1 1 100.0
total 47 56 83.9


line stmt bran cond sub pod time code
1 4     4   249616 use Object::Pad;
  4         14292  
  4         32  
2             # ABSTRACT: A Tracer for the OpenTelemetry SDK
3              
4             package OpenTelemetry::SDK::Trace::Tracer;
5              
6             our $VERSION = '0.028';
7              
8 1     1   841 class OpenTelemetry::SDK::Trace::Tracer :isa(OpenTelemetry::Trace::Tracer) {
  1         117117  
  1         130  
9 4     4   1541 use OpenTelemetry::Constants 'SPAN_KIND_INTERNAL';
  4         52  
  4         40  
10 4     4   2174 use OpenTelemetry::Context;
  4         11  
  4         123  
11 4     4   20 use OpenTelemetry::Trace;
  4         8  
  4         117  
12 4     4   21 use OpenTelemetry::Common ();
  4         9  
  4         163  
13 4     4   23 use Ref::Util 'is_hashref';
  4         7  
  4         2390  
14              
15             field $span_creator :param;
16              
17 3     3 1 3558 method create_span ( %args ) {
  3         12  
  3         12  
  3         5  
18 3   50     24 $args{name} //= 'empty';
19 3   50     17 $args{kind} //= SPAN_KIND_INTERNAL;
20              
21 3 50 50     22 unless (is_hashref( $args{attributes} // {} )) {
22             OpenTelemetry::Common::internal_logger
23 0   0     0 ->warn('The \'attributes\' parameter to create_span must be a hash reference, it was instead a ' . ( ref($args{attribute}) || 'plain scalar' ) );
24 0         0 delete $args{attributes};
25             }
26              
27             $args{context} = OpenTelemetry::Context->current
28 3 50       58 unless exists $args{context};
29              
30             return $self->SUPER::create_span(%args)
31 3 100       82 if OpenTelemetry::Trace->is_untraced_context($args{context});
32              
33 2         89 $span_creator->(%args);
34             }
35             }