14
14
* limitations under the License.
15
15
*/
16
16
17
+ #include " jaegertracing/Tracer.h"
17
18
#include " jaegertracing/Config.h"
18
19
#include " jaegertracing/Constants.h"
19
20
#include " jaegertracing/Span.h"
20
21
#include " jaegertracing/SpanContext.h"
21
22
#include " jaegertracing/Tag.h"
22
23
#include " jaegertracing/TraceID.h"
23
- #include " jaegertracing/Tracer.h"
24
24
#include " jaegertracing/baggage/RestrictionsConfig.h"
25
25
#include " jaegertracing/net/IPAddress.h"
26
26
#include " jaegertracing/propagation/HeadersConfig.h"
@@ -175,13 +175,13 @@ TEST(Tracer, testTracer)
175
175
176
176
span->SetOperationName (" test-set-operation" );
177
177
span->SetTag (" tag-key" , " tag-value" );
178
- span->SetBaggageItem (" test-baggage-item-key" , " test- baggage- item- value" );
179
- ASSERT_EQ (" test- baggage- item- value" ,
178
+ span->SetBaggageItem (" test-baggage-item-key" , " test baggage item value" );
179
+ ASSERT_EQ (" test baggage item value" ,
180
180
span->BaggageItem (" test-baggage-item-key" ));
181
181
span->Log ({ { " log-bool" , true } });
182
182
opentracing::FinishSpanOptions foptions;
183
183
opentracing::LogRecord lr{};
184
- lr.fields = { {" options-log" , " yep" } };
184
+ lr.fields = { { " options-log" , " yep" } };
185
185
foptions.log_records .push_back (std::move (lr));
186
186
lr.timestamp = opentracing::SystemClock::now ();
187
187
span->FinishWithOptions (foptions);
@@ -277,7 +277,7 @@ TEST(Tracer, testPropagation)
277
277
std::static_pointer_cast<Tracer>(opentracing::Tracer::Global ());
278
278
const std::unique_ptr<Span> span (static_cast <Span*>(
279
279
tracer->StartSpanWithOptions (" test-inject" , {}).release ()));
280
- span->SetBaggageItem (" test-baggage-item-key" , " test- baggage- item- value" );
280
+ span->SetBaggageItem (" test-baggage-item-key" , " test baggage item value" );
281
281
282
282
// Binary
283
283
{
@@ -305,7 +305,7 @@ TEST(Tracer, testPropagation)
305
305
std::ostringstream oss;
306
306
oss << span->context ();
307
307
ASSERT_EQ (oss.str (), textMap.at (kTraceContextHeaderName ));
308
- ASSERT_EQ (" test- baggage- item- value" ,
308
+ ASSERT_EQ (" test baggage item value" ,
309
309
textMap.at (std::string (kTraceBaggageHeaderPrefix ) +
310
310
" test-baggage-item-key" ));
311
311
ReaderMock<opentracing::TextMapReader> textReader (textMap);
@@ -327,7 +327,7 @@ TEST(Tracer, testPropagation)
327
327
std::ostringstream oss;
328
328
oss << span->context ();
329
329
ASSERT_EQ (oss.str (), headerMap.at (kTraceContextHeaderName ));
330
- ASSERT_EQ (" test- baggage- item- value" ,
330
+ ASSERT_EQ (" test baggage item value" ,
331
331
headerMap.at (std::string (kTraceBaggageHeaderPrefix ) +
332
332
" test-baggage-item-key" ));
333
333
ReaderMock<opentracing::HTTPHeadersReader> headerReader (headerMap);
@@ -337,6 +337,65 @@ TEST(Tracer, testPropagation)
337
337
static_cast <SpanContext*>(result->release ()));
338
338
ASSERT_TRUE (static_cast <bool >(extractedCtx));
339
339
ASSERT_EQ (span->context (), *extractedCtx);
340
+
341
+ // Test debug header.
342
+ headerMap.clear ();
343
+ headerMap[kJaegerDebugHeader ] = " yes" ;
344
+ tracer->Inject (span->context (), headerWriter);
345
+ result = tracer->Extract (headerReader);
346
+ ASSERT_TRUE (static_cast <bool >(result));
347
+ extractedCtx.reset (static_cast <SpanContext*>(result->release ()));
348
+ ASSERT_TRUE (static_cast <bool >(extractedCtx));
349
+ ASSERT_NE (span->context (), *extractedCtx);
350
+ SpanContext ctx (
351
+ span->context ().traceID (),
352
+ span->context ().spanID (),
353
+ span->context ().parentID (),
354
+ span->context ().flags () |
355
+ static_cast <unsigned char >(SpanContext::Flag::kDebug ),
356
+ span->context ().baggage (),
357
+ " yes" );
358
+ ASSERT_EQ (ctx, *extractedCtx);
359
+
360
+ // Test bad trace context.
361
+ headerMap.clear ();
362
+ headerMap[kTraceContextHeaderName ] = " 12345678" ;
363
+ result = tracer->Extract (headerReader);
364
+ ASSERT_TRUE (static_cast <bool >(result));
365
+ extractedCtx.reset (static_cast <SpanContext*>(result->release ()));
366
+ ASSERT_EQ (nullptr , extractedCtx.get ());
367
+
368
+ // Test empty map.
369
+ headerMap.clear ();
370
+ result = tracer->Extract (headerReader);
371
+ ASSERT_TRUE (static_cast <bool >(result));
372
+ extractedCtx.reset (static_cast <SpanContext*>(result->release ()));
373
+ ASSERT_EQ (nullptr , extractedCtx.get ());
374
+
375
+ // Test alternative baggage format.
376
+ headerMap.clear ();
377
+ ctx = SpanContext (span->context ().traceID (),
378
+ span->context ().spanID (),
379
+ span->context ().parentID (),
380
+ span->context ().flags (),
381
+ { { " a" , " x" }, { " b" , " y" }, { " c" , " z" } });
382
+ tracer->Inject (ctx, headerWriter);
383
+ for (auto itr = std::begin (headerMap); itr != std::end (headerMap);) {
384
+ if (itr->first .substr (0 , std::strlen (kTraceBaggageHeaderPrefix )) ==
385
+ kTraceBaggageHeaderPrefix ) {
386
+ itr = headerMap.erase (itr);
387
+ }
388
+ else {
389
+ ++itr;
390
+ }
391
+ }
392
+ headerMap[kJaegerBaggageHeader ] = " a=x,b=y,c=z" ;
393
+ result = tracer->Extract (headerReader);
394
+ ASSERT_TRUE (static_cast <bool >(result));
395
+ extractedCtx.reset (static_cast <SpanContext*>(result->release ()));
396
+ ASSERT_TRUE (static_cast <bool >(extractedCtx));
397
+ ASSERT_EQ (3 , extractedCtx->baggage ().size ());
398
+ ASSERT_EQ (ctx, *extractedCtx);
340
399
}
341
400
}
342
401
0 commit comments