File Coverage

blib/lib/OpenTelemetry/Constants.pm
Criterion Covered Total %
statement 12 12 100.0
branch n/a
condition n/a
subroutine 4 4 100.0
pod n/a
total 16 16 100.0


line stmt bran cond sub pod time code
1             package OpenTelemetry::Constants;
2              
3             our $VERSION = '0.033';
4              
5 22     22   350173 use Scalar::Util ();
  22         42  
  22         7723  
6              
7             use constant {
8 22         10890 SPAN_STATUS_UNSET => 0,
9             SPAN_STATUS_OK => 1,
10             SPAN_STATUS_ERROR => 2,
11              
12             SPAN_KIND_INTERNAL => 1,
13             SPAN_KIND_SERVER => 2,
14             SPAN_KIND_CLIENT => 3,
15             SPAN_KIND_PRODUCER => 4,
16             SPAN_KIND_CONSUMER => 5,
17              
18             # TODO: the dualvar is nice in theory, but it might be a little
19             # too clever. It does mean we need to jump through some hoops
20             # when exporting. But if we don't keep this mapping here, then
21             # where? More constants? A utility function, like in
22             # Log::Any::Util? And if so, where? OpenTelemetry::Common?
23             # OpenTelemetry::Logs::Logger?
24             LOG_LEVEL_TRACE => Scalar::Util::dualvar( 1, 'TRACE' ),
25             LOG_LEVEL_TRACE2 => Scalar::Util::dualvar( 2, 'TRACE2' ),
26             LOG_LEVEL_TRACE3 => Scalar::Util::dualvar( 3, 'TRACE3' ),
27             LOG_LEVEL_TRACE4 => Scalar::Util::dualvar( 4, 'TRACE4' ),
28             LOG_LEVEL_DEBUG => Scalar::Util::dualvar( 5, 'DEBUG' ),
29             LOG_LEVEL_DEBUG2 => Scalar::Util::dualvar( 6, 'DEBUG2' ),
30             LOG_LEVEL_DEBUG3 => Scalar::Util::dualvar( 7, 'DEBUG3' ),
31             LOG_LEVEL_DEBUG4 => Scalar::Util::dualvar( 8, 'DEBUG4' ),
32             LOG_LEVEL_INFO => Scalar::Util::dualvar( 9, 'INFO' ),
33             LOG_LEVEL_INFO2 => Scalar::Util::dualvar( 10, 'INFO2' ),
34             LOG_LEVEL_INFO3 => Scalar::Util::dualvar( 11, 'INFO3' ),
35             LOG_LEVEL_INFO4 => Scalar::Util::dualvar( 12, 'INFO4' ),
36             LOG_LEVEL_WARN => Scalar::Util::dualvar( 13, 'WARN' ),
37             LOG_LEVEL_WARN2 => Scalar::Util::dualvar( 14, 'WARN2' ),
38             LOG_LEVEL_WARN3 => Scalar::Util::dualvar( 15, 'WARN3' ),
39             LOG_LEVEL_WARN4 => Scalar::Util::dualvar( 16, 'WARN4' ),
40             LOG_LEVEL_ERROR => Scalar::Util::dualvar( 17, 'ERROR' ),
41             LOG_LEVEL_ERROR2 => Scalar::Util::dualvar( 18, 'ERROR2' ),
42             LOG_LEVEL_ERROR3 => Scalar::Util::dualvar( 19, 'ERROR3' ),
43             LOG_LEVEL_ERROR4 => Scalar::Util::dualvar( 20, 'ERROR4' ),
44             LOG_LEVEL_FATAL => Scalar::Util::dualvar( 21, 'FATAL' ),
45             LOG_LEVEL_FATAL2 => Scalar::Util::dualvar( 22, 'FATAL2' ),
46             LOG_LEVEL_FATAL3 => Scalar::Util::dualvar( 23, 'FATAL3' ),
47             LOG_LEVEL_FATAL4 => Scalar::Util::dualvar( 24, 'FATAL4' ),
48              
49             # TODO: Since these are now used for exporting both logs and
50             # traces, we cannot really give them the TRACE_ prefix. This
51             # name is arguably better, but it might be unfamiliar to
52             # non-Perl OpenTelemetry users.
53             EXPORT_RESULT_SUCCESS => 0,
54             EXPORT_RESULT_FAILURE => 1,
55             EXPORT_RESULT_TIMEOUT => 2,
56              
57             INVALID_TRACE_ID => "\0" x 16,
58             INVALID_SPAN_ID => "\0" x 8,
59 22     22   169 };
  22         66  
60              
61             use constant {
62             # TODO: Redefining these here for now so we don't break the
63             # code that still uses them. I think we can still break things
64             # but we should decide on a stability policy and come up with
65             # some deprecation strategy for the future.
66 22         6393 TRACE_EXPORT_SUCCESS => EXPORT_RESULT_SUCCESS,
67             TRACE_EXPORT_FAILURE => EXPORT_RESULT_FAILURE,
68             TRACE_EXPORT_TIMEOUT => EXPORT_RESULT_TIMEOUT,
69              
70             HEX_INVALID_TRACE_ID => unpack('H*', INVALID_TRACE_ID),
71             HEX_INVALID_SPAN_ID => unpack('H*', INVALID_SPAN_ID),
72 22     22   184 };
  22         54  
73              
74             our %EXPORT_TAGS = (
75             log => [qw(
76             LOG_LEVEL_TRACE
77             LOG_LEVEL_TRACE2
78             LOG_LEVEL_TRACE3
79             LOG_LEVEL_TRACE4
80             LOG_LEVEL_DEBUG
81             LOG_LEVEL_DEBUG2
82             LOG_LEVEL_DEBUG3
83             LOG_LEVEL_DEBUG4
84             LOG_LEVEL_INFO
85             LOG_LEVEL_INFO2
86             LOG_LEVEL_INFO3
87             LOG_LEVEL_INFO4
88             LOG_LEVEL_WARN
89             LOG_LEVEL_WARN2
90             LOG_LEVEL_WARN3
91             LOG_LEVEL_WARN4
92             LOG_LEVEL_ERROR
93             LOG_LEVEL_ERROR2
94             LOG_LEVEL_ERROR3
95             LOG_LEVEL_ERROR4
96             LOG_LEVEL_FATAL
97             LOG_LEVEL_FATAL2
98             LOG_LEVEL_FATAL3
99             LOG_LEVEL_FATAL4
100             )],
101             span_kind => [qw(
102             SPAN_KIND_INTERNAL
103             SPAN_KIND_SERVER
104             SPAN_KIND_CLIENT
105             SPAN_KIND_PRODUCER
106             SPAN_KIND_CONSUMER
107             )],
108             span_status => [qw(
109             SPAN_STATUS_UNSET
110             SPAN_STATUS_OK
111             SPAN_STATUS_ERROR
112             )],
113             trace_export => [qw(
114             TRACE_EXPORT_SUCCESS
115             TRACE_EXPORT_FAILURE
116             TRACE_EXPORT_TIMEOUT
117             )],
118             export => [qw(
119             EXPORT_RESULT_SUCCESS
120             EXPORT_RESULT_FAILURE
121             EXPORT_RESULT_TIMEOUT
122             )],
123             );
124              
125             $EXPORT_TAGS{span} = [
126             qw(
127             INVALID_SPAN_ID
128             HEX_INVALID_SPAN_ID
129             ),
130             map @$_, @EXPORT_TAGS{qw( span_status span_kind )},
131             ];
132              
133             $EXPORT_TAGS{trace} = [
134             qw(
135             INVALID_TRACE_ID
136             HEX_INVALID_TRACE_ID
137             ),
138             @{ $EXPORT_TAGS{trace_export} },
139             ];
140              
141 22     22   10396 use Exporter::Shiny;
  22         197894  
  22         267  
142              
143             our @EXPORT_OK = map @$_, @EXPORT_TAGS{qw( export trace span log )};
144              
145             1;