File Coverage

blib/lib/OpenTelemetry/Trace/SpanContext.pm
Criterion Covered Total %
statement 40 40 100.0
branch 2 2 100.0
condition 4 6 66.6
subroutine 14 14 100.0
pod 8 8 100.0
total 68 70 97.1


line stmt bran cond sub pod time code
1 15     15   4005 use Object::Pad ':experimental(init_expr)';
  15         34  
  15         109  
2             # ABSTRACT: The part of an OpenTelemetry span that propagates
3              
4             package OpenTelemetry::Trace::SpanContext;
5              
6             our $VERSION = '0.033';
7              
8 15     15   4535 use OpenTelemetry::Common;
  15         39  
  15         1054  
9 15     15   7590 use OpenTelemetry::Propagator::TraceContext::TraceFlags;
  15         61  
  15         809  
10 15     15   8092 use OpenTelemetry::Propagator::TraceContext::TraceState;
  15         51  
  15         2646  
11              
12             class OpenTelemetry::Trace::SpanContext {
13 15         160 use OpenTelemetry::Constants qw(
14             INVALID_TRACE_ID
15             INVALID_SPAN_ID
16 15     15   1541 );
  15         30  
17              
18             field $trace_flags :param :reader = undef;
19 4     4 1 9 field $trace_state :param :reader = undef;
  4         17  
20 4     4 1 144 field $trace_id :param :reader = undef;
  4         16  
21 5     5 1 148 field $span_id :param :reader = undef;
  5         42  
22 2     2 1 126 field $remote :param :reader = 0;
  5     5 1 223  
  5         21  
23              
24 2         8 BUILD {
25             $trace_flags //= OpenTelemetry::Propagator::TraceContext::TraceFlags->new;
26             $trace_state //= OpenTelemetry::Propagator::TraceContext::TraceState->new;
27             $trace_id //= OpenTelemetry::Common->generate_trace_id;
28             $span_id //= OpenTelemetry::Common->generate_span_id;
29             }
30              
31 7     7 1 548 method valid () {
  7         18  
  7         11  
32 7 100 66     89 $trace_id && $trace_id ne INVALID_TRACE_ID
      66        
33             && $span_id && $span_id ne INVALID_SPAN_ID;
34             }
35              
36 2     2 1 784 method hex_trace_id () { unpack 'H*', $trace_id }
  2         8  
  2         3  
  2         24  
37 2     2 1 157 method hex_span_id () { unpack 'H*', $span_id }
  2         5  
  2         66  
  2         10  
38             }
39              
40 15         189 use constant INVALID => OpenTelemetry::Trace::SpanContext->new(
41             trace_id => INVALID_TRACE_ID,
42             span_id => INVALID_SPAN_ID,
43 15     15   31097 );
  15         32