From f1aa28bd3208f5efcbfcae03233f0ac347dd538f Mon Sep 17 00:00:00 2001 From: Dominik Buszowiecki Date: Fri, 21 Apr 2023 13:50:58 -0400 Subject: [PATCH 1/9] add body size for fetch requests --- packages/tracing-internal/src/browser/request.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/tracing-internal/src/browser/request.ts b/packages/tracing-internal/src/browser/request.ts index 22477e258ccd..cc278fcfe780 100644 --- a/packages/tracing-internal/src/browser/request.ts +++ b/packages/tracing-internal/src/browser/request.ts @@ -186,6 +186,8 @@ export function fetchCallback( return; } + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + const contentLength = (handlerData.response?.headers).get('content-length'); const currentScope = getCurrentHub().getScope(); const currentSpan = currentScope && currentScope.getSpan(); const activeTransaction = currentSpan && currentSpan.transaction; @@ -195,6 +197,7 @@ export function fetchCallback( data: { ...handlerData.fetchData, type: 'fetch', + ...(contentLength ? { 'Encoded Body Size': contentLength } : {}), }, description: `${handlerData.fetchData.method} ${handlerData.fetchData.url}`, op: 'http.client', From 972f425de54d40b87158fea70657f5a9266f3314 Mon Sep 17 00:00:00 2001 From: Nar Saynorath Date: Mon, 24 Apr 2023 10:07:49 -0400 Subject: [PATCH 2/9] Change key name and use && --- packages/tracing-internal/src/browser/request.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/tracing-internal/src/browser/request.ts b/packages/tracing-internal/src/browser/request.ts index cc278fcfe780..f9ffb34d85c8 100644 --- a/packages/tracing-internal/src/browser/request.ts +++ b/packages/tracing-internal/src/browser/request.ts @@ -186,8 +186,7 @@ export function fetchCallback( return; } - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - const contentLength = (handlerData.response?.headers).get('content-length'); + const contentLength = handlerData.response && handlerData.response.headers && handlerData.response.headers.get('content-length'); const currentScope = getCurrentHub().getScope(); const currentSpan = currentScope && currentScope.getSpan(); const activeTransaction = currentSpan && currentSpan.transaction; @@ -197,7 +196,7 @@ export function fetchCallback( data: { ...handlerData.fetchData, type: 'fetch', - ...(contentLength ? { 'Encoded Body Size': contentLength } : {}), + ...(contentLength ? { encoded_body_size: contentLength } : {}), }, description: `${handlerData.fetchData.method} ${handlerData.fetchData.url}`, op: 'http.client', From 23cc18b1a2ce5aab72704c367a4fdf5a9f51ec09 Mon Sep 17 00:00:00 2001 From: Nar Saynorath Date: Mon, 24 Apr 2023 10:25:12 -0400 Subject: [PATCH 3/9] Revert key --- packages/tracing-internal/src/browser/request.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tracing-internal/src/browser/request.ts b/packages/tracing-internal/src/browser/request.ts index f9ffb34d85c8..1f5f07069964 100644 --- a/packages/tracing-internal/src/browser/request.ts +++ b/packages/tracing-internal/src/browser/request.ts @@ -196,7 +196,7 @@ export function fetchCallback( data: { ...handlerData.fetchData, type: 'fetch', - ...(contentLength ? { encoded_body_size: contentLength } : {}), + ...(contentLength ? { 'Encoded Body Size': contentLength } : {}), }, description: `${handlerData.fetchData.method} ${handlerData.fetchData.url}`, op: 'http.client', From 28e638e5eacbf1224bb27f352e566d3388ad6eba Mon Sep 17 00:00:00 2001 From: Nar Saynorath Date: Mon, 24 Apr 2023 10:57:20 -0400 Subject: [PATCH 4/9] Prettier --- packages/tracing-internal/src/browser/request.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/tracing-internal/src/browser/request.ts b/packages/tracing-internal/src/browser/request.ts index 1f5f07069964..86e8b6d0c0d8 100644 --- a/packages/tracing-internal/src/browser/request.ts +++ b/packages/tracing-internal/src/browser/request.ts @@ -186,7 +186,8 @@ export function fetchCallback( return; } - const contentLength = handlerData.response && handlerData.response.headers && handlerData.response.headers.get('content-length'); + const contentLength = + handlerData.response && handlerData.response.headers && handlerData.response.headers.get('content-length'); const currentScope = getCurrentHub().getScope(); const currentSpan = currentScope && currentScope.getSpan(); const activeTransaction = currentSpan && currentSpan.transaction; From 2263e21eba54ede41c67de58300912dd1e6b31f6 Mon Sep 17 00:00:00 2001 From: Nar Saynorath Date: Mon, 24 Apr 2023 15:20:20 -0400 Subject: [PATCH 5/9] Change key --- packages/tracing-internal/src/browser/request.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/tracing-internal/src/browser/request.ts b/packages/tracing-internal/src/browser/request.ts index 86e8b6d0c0d8..71a5a12fcbff 100644 --- a/packages/tracing-internal/src/browser/request.ts +++ b/packages/tracing-internal/src/browser/request.ts @@ -187,6 +187,7 @@ export function fetchCallback( } const contentLength = + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access handlerData.response && handlerData.response.headers && handlerData.response.headers.get('content-length'); const currentScope = getCurrentHub().getScope(); const currentSpan = currentScope && currentScope.getSpan(); @@ -197,7 +198,7 @@ export function fetchCallback( data: { ...handlerData.fetchData, type: 'fetch', - ...(contentLength ? { 'Encoded Body Size': contentLength } : {}), + ...(contentLength ? { encoded_body_size: contentLength } : {}), }, description: `${handlerData.fetchData.method} ${handlerData.fetchData.url}`, op: 'http.client', From e417d8a65fc060ad869059be08d8cc1f4875e764 Mon Sep 17 00:00:00 2001 From: Nar Saynorath Date: Wed, 26 Apr 2023 13:26:57 -0400 Subject: [PATCH 6/9] Change key to align with docs --- packages/tracing-internal/src/browser/request.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tracing-internal/src/browser/request.ts b/packages/tracing-internal/src/browser/request.ts index 71a5a12fcbff..8cce96bc67cc 100644 --- a/packages/tracing-internal/src/browser/request.ts +++ b/packages/tracing-internal/src/browser/request.ts @@ -198,7 +198,7 @@ export function fetchCallback( data: { ...handlerData.fetchData, type: 'fetch', - ...(contentLength ? { encoded_body_size: contentLength } : {}), + ...(contentLength ? { 'http.response_content_length': contentLength } : {}), }, description: `${handlerData.fetchData.method} ${handlerData.fetchData.url}`, op: 'http.client', From 0c96617b567dc1dd3de96880dbd54e30459c5e63 Mon Sep 17 00:00:00 2001 From: Nar Saynorath Date: Thu, 27 Apr 2023 15:47:11 -0400 Subject: [PATCH 7/9] Add test --- .../test/browser/request.test.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/packages/tracing-internal/test/browser/request.test.ts b/packages/tracing-internal/test/browser/request.test.ts index 7fbe23a41295..0c6718e4974f 100644 --- a/packages/tracing-internal/test/browser/request.test.ts +++ b/packages/tracing-internal/test/browser/request.test.ts @@ -213,6 +213,25 @@ describe('callbacks', () => { expect(newSpan).toBeUndefined(); }); + + it('adds content-length to span data', () => { + const spans = {}; + fetchHandlerData['response'] = { 'headers': { 'content-length': 123 } }; + + // triggered by request being sent + fetchCallback(fetchHandlerData, alwaysCreateSpan, alwaysAttachHeaders, spans); + + const newSpan = transaction.spanRecorder?.spans[1] as Span; + + expect(newSpan).toBeDefined(); + expect(newSpan).toBeInstanceOf(Span); + expect(newSpan.data).toEqual({ + 'http.response_content_length': 123, + method: 'GET', + type: 'fetch', + url: 'http://dogs.are.great/', + }); + }); }); describe('xhrCallback()', () => { From 94dbd473c8f4c3377ac593931d2bb0db60803fd9 Mon Sep 17 00:00:00 2001 From: Nar Saynorath Date: Thu, 27 Apr 2023 16:07:10 -0400 Subject: [PATCH 8/9] Prettier --- packages/tracing-internal/test/browser/request.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tracing-internal/test/browser/request.test.ts b/packages/tracing-internal/test/browser/request.test.ts index 0c6718e4974f..e93a3d32131a 100644 --- a/packages/tracing-internal/test/browser/request.test.ts +++ b/packages/tracing-internal/test/browser/request.test.ts @@ -216,7 +216,7 @@ describe('callbacks', () => { it('adds content-length to span data', () => { const spans = {}; - fetchHandlerData['response'] = { 'headers': { 'content-length': 123 } }; + fetchHandlerData['response'] = { headers: { 'content-length': 123 } }; // triggered by request being sent fetchCallback(fetchHandlerData, alwaysCreateSpan, alwaysAttachHeaders, spans); From 26b3bd16d0ece8e7c060301ccba833f7bca9a428 Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Wed, 3 May 2023 12:58:41 +0200 Subject: [PATCH 9/9] http method in test --- packages/tracing-internal/test/browser/request.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tracing-internal/test/browser/request.test.ts b/packages/tracing-internal/test/browser/request.test.ts index 0d8e0d59ef68..9c5567e3fdcd 100644 --- a/packages/tracing-internal/test/browser/request.test.ts +++ b/packages/tracing-internal/test/browser/request.test.ts @@ -227,7 +227,7 @@ describe('callbacks', () => { expect(newSpan).toBeInstanceOf(Span); expect(newSpan.data).toEqual({ 'http.response_content_length': 123, - method: 'GET', + 'http.method': 'GET', type: 'fetch', url: 'http://dogs.are.great/', });