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

jjatria / perl-opentelemetry / 6553776671

17 Oct 2023 10:57PM UTC coverage: 73.52% (-18.9%) from 92.443%
6553776671

push

github

jjatria
Add experimental support for testing metrics

2 of 2 new or added lines in 1 file covered. (100.0%)

472 of 642 relevant lines covered (73.52%)

4.18 hits per line

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

30.56
/lib/OpenTelemetry/Propagator/TraceContext.pm
1
use Object::Pad;
1✔
2
# ABSTRACT: Propagate context using the W3C TraceContext format
3

4
package OpenTelemetry::Propagator::TraceContext;
5

6
our $VERSION = '0.001';
7

8
use Log::Any;
1✔
9
my $logger = Log::Any->get_logger( category =>'OpenTelemetry' );
10

11
class OpenTelemetry::Propagator::TraceContext :does(OpenTelemetry::Propagator) {
1✔
12
    use experimental 'isa';
1✔
13

14
    use Feature::Compat::Try;
1✔
15
    use URL::Encode qw( url_decode_utf8 url_encode_utf8 );
1✔
16

17
    use OpenTelemetry::Propagator::TextMap;
1✔
18
    use OpenTelemetry::Propagator::TraceContext::TraceParent;
1✔
19
    use OpenTelemetry::Propagator::TraceContext::TraceState;
1✔
20
    use OpenTelemetry::Trace::SpanContext;
1✔
21
    use OpenTelemetry::Trace;
1✔
22

23
    my $TRACE_PARENT_KEY = 'traceparent';
24
    my $TRACE_STATE_KEY  = 'tracestate';
25

26
    method inject (
27
        $carrier,
×
28
        $context = OpenTelemetry::Context->current,
×
29
        $setter  = OpenTelemetry::Propagator::TextMap::SETTER
×
30
    ) {
×
31
        my $span_context = OpenTelemetry::Trace->span_from_context($context)->context;
×
32
        return $self unless $span_context->valid;
×
33

34
        my $trace_parent = OpenTelemetry::Propagator::TraceContext::TraceParent
×
35
            ->from_span_context($span_context);
36

37
        $setter->( $carrier, $TRACE_PARENT_KEY, $trace_parent->to_string );
×
38
        $setter->( $carrier, $TRACE_STATE_KEY,  $span_context->trace_state->to_string );
×
39

40
        return $self;
×
41
    }
42

43
    method extract (
44
        $carrier,
×
45
        $context = OpenTelemetry::Context->current,
×
46
        $getter  = OpenTelemetry::Propagator::TextMap::GETTER
×
47
    ) {
×
48
        try {
×
49
            my $string = $getter->( $carrier, $TRACE_PARENT_KEY )
×
50
                or return $context;
51

52
            my $trace_parent = OpenTelemetry::Propagator::TraceContext::TraceParent->from_string($string);
×
53
            my $trace_state  = OpenTelemetry::Propagator::TraceContext::TraceState->from_string(
×
54
                $getter->( $carrier, $TRACE_STATE_KEY ) // '',
55
            );
56

57
            my $span_context = OpenTelemetry::Trace::SpanContext->new(
×
58
                trace_id    => $trace_parent->trace_id,
59
                span_id     => $trace_parent->span_id,
60
                trace_flags => $trace_parent->trace_flags,
61
                trace_state => $trace_state,
62
                remote      => 1,
63
            );
64

65
            my $span = OpenTelemetry::Trace->non_recording_span( $span_context );
×
66

67
            return OpenTelemetry::Trace->context_with_span( $span, $context );
×
68
        }
69
        catch ($e) {
70
            die $e unless $e isa OpenTelemetry::X;
×
71
            $logger->warn($e);
×
72
            return $context;
×
73
        }
74
    }
75

76
    method keys () { ( $TRACE_PARENT_KEY, $TRACE_STATE_KEY ) }
×
77
}
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