From 60b394ac6856b5f2cfa32c19307b496b85305e63 Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Tue, 13 Sep 2022 10:47:31 +0200 Subject: [PATCH] ref(tracing): Add propagations to tracing SDK (#5719) This PR updates the propagations metadata field in the tracing SDK for `BrowserTracing`. It does this by adding a propagations incrementor to the fetch and XHR instrumentation. --- packages/tracing/src/browser/request.ts | 2 ++ packages/tracing/test/browser/request.test.ts | 26 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/packages/tracing/src/browser/request.ts b/packages/tracing/src/browser/request.ts index ae67d5b6ae19..31322c9c1daf 100644 --- a/packages/tracing/src/browser/request.ts +++ b/packages/tracing/src/browser/request.ts @@ -199,6 +199,7 @@ export function fetchCallback( // eslint-disable-next-line @typescript-eslint/no-explicit-any const options = (handlerData.args[1] = (handlerData.args[1] as { [key: string]: any }) || {}); options.headers = addTracingHeaders(request, activeTransaction.getBaggage(), span, options); + activeTransaction.metadata.propagations += 1; } } @@ -304,6 +305,7 @@ export function xhrCallback( BAGGAGE_HEADER_NAME, mergeAndSerializeBaggage(activeTransaction.getBaggage(), headerBaggageString), ); + activeTransaction.metadata.propagations += 1; } catch (_) { // Error: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED. } diff --git a/packages/tracing/test/browser/request.test.ts b/packages/tracing/test/browser/request.test.ts index e77a0ae15c36..023c1414b0f0 100644 --- a/packages/tracing/test/browser/request.test.ts +++ b/packages/tracing/test/browser/request.test.ts @@ -193,6 +193,19 @@ describe('callbacks', () => { expect(newSpan).toBeUndefined(); }); + it('records outgoing propogations', () => { + const firstReqData = { ...fetchHandlerData }; + const secondReqData = { ...fetchHandlerData }; + + expect(transaction.metadata.propagations).toBe(0); + + fetchCallback(firstReqData, alwaysCreateSpan, {}); + expect(transaction.metadata.propagations).toBe(1); + + fetchCallback(secondReqData, alwaysCreateSpan, {}); + expect(transaction.metadata.propagations).toBe(2); + }); + it('adds sentry-trace header to fetch requests', () => { // TODO }); @@ -304,5 +317,18 @@ describe('callbacks', () => { expect(newSpan).toBeUndefined(); }); + + it('records outgoing propogations', () => { + const firstReqData = { ...xhrHandlerData }; + const secondReqData = { ...xhrHandlerData }; + + expect(transaction.metadata.propagations).toBe(0); + + xhrCallback(firstReqData, alwaysCreateSpan, {}); + expect(transaction.metadata.propagations).toBe(1); + + xhrCallback(secondReqData, alwaysCreateSpan, {}); + expect(transaction.metadata.propagations).toBe(2); + }); }); });