@@ -89,8 +89,10 @@ TELEMETRY_IMPLEMENTATION_TEST("Tracer telemetry lifecycle") {
8989 auto client = std::make_shared<MockHTTPClient>();
9090 auto scheduler = std::make_shared<FakeEventScheduler>();
9191
92+ auto runtime_id = RuntimeID::generate ();
9293 const TracerSignature tracer_signature{
93- /* runtime_id = */ RuntimeID::generate (),
94+ /* runtime_id = */ runtime_id,
95+ /* root_session_id = */ runtime_id.string (),
9496 /* service = */ " testsvc" ,
9597 /* environment = */ " test" };
9698
@@ -353,6 +355,65 @@ TELEMETRY_IMPLEMENTATION_TEST("Tracer telemetry lifecycle") {
353355 }
354356}
355357
358+ TELEMETRY_IMPLEMENTATION_TEST (" session ID headers" ) {
359+ auto logger = std::make_shared<MockLogger>();
360+ auto client = std::make_shared<MockHTTPClient>();
361+ auto scheduler = std::make_shared<FakeEventScheduler>();
362+ auto url = HTTPClient::URL::parse (" http://localhost:8000" );
363+
364+ SECTION (" root process: DD-Session-ID present, DD-Root-Session-ID absent" ) {
365+ auto rid = RuntimeID::generate ();
366+ const TracerSignature sig{rid, rid.string (), " testsvc" , " test" };
367+
368+ Telemetry telemetry{*finalize_config (), sig, logger, client, scheduler,
369+ *url};
370+
371+ auto it = client->request_headers .items .find (" DD-Session-ID" );
372+ REQUIRE (it != client->request_headers .items .end ());
373+ CHECK (it->second == rid.string ());
374+
375+ CHECK (client->request_headers .items .find (" DD-Root-Session-ID" ) ==
376+ client->request_headers .items .end ());
377+ }
378+
379+ SECTION (" child process: DD-Root-Session-ID present when different" ) {
380+ auto rid = RuntimeID::generate ();
381+ auto root_rid = RuntimeID::generate ();
382+ const TracerSignature sig{rid, root_rid.string (), " testsvc" , " test" };
383+
384+ Telemetry telemetry{*finalize_config (), sig, logger, client, scheduler,
385+ *url};
386+
387+ auto session_it = client->request_headers .items .find (" DD-Session-ID" );
388+ REQUIRE (session_it != client->request_headers .items .end ());
389+ CHECK (session_it->second == rid.string ());
390+
391+ auto root_it = client->request_headers .items .find (" DD-Root-Session-ID" );
392+ REQUIRE (root_it != client->request_headers .items .end ());
393+ CHECK (root_it->second == root_rid.string ());
394+ }
395+
396+ SECTION (" heartbeat includes session headers" ) {
397+ auto rid = RuntimeID::generate ();
398+ auto root_rid = RuntimeID::generate ();
399+ const TracerSignature sig{rid, root_rid.string (), " testsvc" , " test" };
400+
401+ Telemetry telemetry{*finalize_config (), sig, logger, client, scheduler,
402+ *url};
403+
404+ client->request_headers .items .clear ();
405+ scheduler->trigger_heartbeat ();
406+
407+ auto session_it = client->request_headers .items .find (" DD-Session-ID" );
408+ REQUIRE (session_it != client->request_headers .items .end ());
409+ CHECK (session_it->second == rid.string ());
410+
411+ auto root_it = client->request_headers .items .find (" DD-Root-Session-ID" );
412+ REQUIRE (root_it != client->request_headers .items .end ());
413+ CHECK (root_it->second == root_rid.string ());
414+ }
415+ }
416+
356417TELEMETRY_IMPLEMENTATION_TEST (" Tracer telemetry API" ) {
357418 const Clock clock = [] {
358419 TimePoint result;
@@ -364,8 +425,10 @@ TELEMETRY_IMPLEMENTATION_TEST("Tracer telemetry API") {
364425 auto client = std::make_shared<MockHTTPClient>();
365426 auto scheduler = std::make_shared<FakeEventScheduler>();
366427
428+ auto runtime_id = RuntimeID::generate ();
367429 const TracerSignature tracer_signature{
368- /* runtime_id = */ RuntimeID::generate (),
430+ /* runtime_id = */ runtime_id,
431+ /* root_session_id = */ runtime_id.string (),
369432 /* service = */ " testsvc" ,
370433 /* environment = */ " test" };
371434
@@ -869,8 +932,10 @@ TELEMETRY_IMPLEMENTATION_TEST("Tracer telemetry configuration") {
869932 auto client = std::make_shared<MockHTTPClient>();
870933 auto scheduler = std::make_shared<FakeEventScheduler>();
871934
935+ auto runtime_id = RuntimeID::generate ();
872936 const TracerSignature tracer_signature{
873- /* runtime_id = */ RuntimeID::generate (),
937+ /* runtime_id = */ runtime_id,
938+ /* root_session_id = */ runtime_id.string (),
874939 /* service = */ " testsvc" ,
875940 /* environment = */ " test" };
876941
0 commit comments