@@ -10,6 +10,9 @@ const ANALYTICS = tags.ANALYTICS
1010const MEASURED = tags . MEASURED
1111const ORIGIN_KEY = constants . ORIGIN_KEY
1212const HOSTNAME_KEY = constants . HOSTNAME_KEY
13+ const SAMPLING_AGENT_DECISION = constants . SAMPLING_AGENT_DECISION
14+ const SAMPLING_LIMIT_DECISION = constants . SAMPLING_LIMIT_DECISION
15+ const SAMPLING_RULE_DECISION = constants . SAMPLING_RULE_DECISION
1316
1417const spanId = id ( '0234567812345678' )
1518
@@ -27,7 +30,9 @@ describe('format', () => {
2730 _tags : { } ,
2831 _metrics : { } ,
2932 _sampling : { } ,
30- _trace : { } ,
33+ _trace : {
34+ started : [ ]
35+ } ,
3136 _name : 'operation'
3237 }
3338
@@ -40,6 +45,8 @@ describe('format', () => {
4045 _duration : 100
4146 }
4247
48+ spanContext . _trace . started . push ( span )
49+
4350 format = require ( '../src/format' )
4451 } )
4552
@@ -84,6 +91,35 @@ describe('format', () => {
8491 expect ( trace . resource ) . to . equal ( 'resource' )
8592 } )
8693
94+ it ( 'should extract Datadog specific root tags' , ( ) => {
95+ spanContext . _parentId = null
96+ spanContext . _trace [ SAMPLING_AGENT_DECISION ] = 0.8
97+ spanContext . _trace [ SAMPLING_LIMIT_DECISION ] = 0.2
98+ spanContext . _trace [ SAMPLING_RULE_DECISION ] = 0.5
99+
100+ trace = format ( span )
101+
102+ expect ( trace . metrics ) . to . include ( {
103+ [ SAMPLING_AGENT_DECISION ] : 0.8 ,
104+ [ SAMPLING_LIMIT_DECISION ] : 0.2 ,
105+ [ SAMPLING_RULE_DECISION ] : 0.5
106+ } )
107+ } )
108+
109+ it ( 'should not extract Datadog specific root tags from non-root spans' , ( ) => {
110+ spanContext . _trace [ SAMPLING_AGENT_DECISION ] = 0.8
111+ spanContext . _trace [ SAMPLING_LIMIT_DECISION ] = 0.2
112+ spanContext . _trace [ SAMPLING_RULE_DECISION ] = 0.5
113+
114+ trace = format ( span )
115+
116+ expect ( trace . metrics ) . to . not . have . keys (
117+ SAMPLING_AGENT_DECISION ,
118+ SAMPLING_LIMIT_DECISION ,
119+ SAMPLING_RULE_DECISION
120+ )
121+ } )
122+
87123 it ( 'should discard user-defined tags with name HOSTNAME_KEY by default' , ( ) => {
88124 spanContext . _tags [ HOSTNAME_KEY ] = 'some_hostname'
89125
0 commit comments