File Coverage

blib/lib/OpenTelemetry/Propagator/TraceContext/TraceFlags.pm
Criterion Covered Total %
statement 28 28 100.0
branch 4 4 100.0
condition 4 5 80.0
subroutine 6 6 100.0
pod 3 4 75.0
total 45 47 95.7


line stmt bran cond sub pod time code
1 16     16   193051 use Object::Pad ':experimental(init_expr)';
  16         17667  
  16         121  
2             # ABSTRACT: Represents TraceFlags in a W3C TraceContext
3              
4             package OpenTelemetry::Propagator::TraceContext::TraceFlags;
5              
6             our $VERSION = '0.033';
7              
8             class OpenTelemetry::Propagator::TraceContext::TraceFlags {
9 16     16   9367 use OpenTelemetry::Common ();
  16         69  
  16         14294  
10             my $logger = OpenTelemetry::Common::internal_logger;
11              
12 8     8 1 8061 field $flags :param :reader = 0;
13              
14 8     31 0 38 sub BUILDARGS ( $class, $flags = undef ) {
  31         614945  
  31         114  
  31         75  
  31         54  
15 31   100     180 $flags //= 0;
16              
17 31 100       231 if ( $flags !~ /^\d+$/a ) {
18 2         20 $logger->warn(
19             'Non-numeric value when creating TraceFlags',
20             { value => $flags },
21             );
22 2         18004 $flags = 0;
23             }
24              
25 31 100 66     216 if ( 0 > $flags || $flags > 255 ) {
26 1         8 $logger->warn(
27             'Out-of-range value when creating TraceFlags',
28             { value => $flags },
29             );
30 1         289 $flags = 0;
31             }
32              
33 31         302 ( flags => $flags );
34             }
35              
36 5     5 1 22 method to_string () { sprintf '%02x', $flags }
  5         15  
  5         10  
  5         66  
37              
38 8     8 1 1736 method sampled () { !!( $flags & 1 ) }
  8         35  
  8         14  
  8         33  
39             }