Skip to content

Commit 739eb07

Browse files
committed
use trace json object
1 parent 250ec10 commit 739eb07

File tree

5 files changed

+32
-20
lines changed

5 files changed

+32
-20
lines changed

packages/core/src/envelope.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,12 @@ import {
1212
SessionItem,
1313
} from '@sentry/types';
1414
import {
15-
BaggageObj,
1615
createBaggage,
1716
createEnvelope,
1817
dropUndefinedKeys,
1918
dsnToString,
19+
getSentryBaggageItems,
2020
isBaggageEmpty,
21-
serializeBaggage,
2221
} from '@sentry/utils';
2322

2423
/** Extract sdk info from from the API metadata */
@@ -138,14 +137,14 @@ function createEventEnvelopeHeaders(
138137
userid: event.user && event.user.id,
139138
// user.segment currently doesn't exist explicitly in interface User (just as a record key)
140139
usersegment: event.user && event.user.segment,
141-
} as BaggageObj),
140+
}),
142141
);
143142

144143
return {
145144
event_id: event.event_id as string,
146145
sent_at: new Date().toISOString(),
147146
...(sdkInfo && { sdk: sdkInfo }),
148147
...(!!tunnel && { dsn: dsnToString(dsn) }),
149-
...(baggage && !isBaggageEmpty(baggage) && { trace: serializeBaggage(baggage) }),
148+
...(baggage && !isBaggageEmpty(baggage) && { trace: getSentryBaggageItems(baggage) }),
150149
};
151150
}

packages/core/test/lib/envelope.test.ts

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,31 +5,31 @@ import { createEventEnvelope } from '../../src/envelope';
55
const testDsn: DsnComponents = { protocol: 'https', projectId: 'abc', host: 'testry.io' };
66

77
describe('createEventEnvelope', () => {
8-
describe('baggage header', () => {
9-
it("doesn't add baggage header if event is not a transaction", () => {
8+
describe('trace header', () => {
9+
it("doesn't add trace header if event is not a transaction", () => {
1010
const event: Event = {};
1111
const envelopeHeaders = createEventEnvelope(event, testDsn)[0];
1212

1313
expect(envelopeHeaders).toBeDefined();
14-
expect(envelopeHeaders.baggage).toBeUndefined();
14+
expect(envelopeHeaders.trace).toBeUndefined();
1515
});
1616

17-
it("doesn't add baggage header if no baggage data is available", () => {
17+
it("doesn't add trace header if no baggage data is available", () => {
1818
const event: Event = {
1919
type: 'transaction',
2020
};
2121
const envelopeHeaders = createEventEnvelope(event, testDsn)[0];
2222

2323
expect(envelopeHeaders).toBeDefined();
24-
expect(envelopeHeaders.baggage).toBeUndefined();
24+
expect(envelopeHeaders.trace).toBeUndefined();
2525
});
2626

27-
const testTable: Array<[string, Event, string]> = [
28-
['adds only baggage item', { type: 'transaction', release: '1.0.0' }, 'sentry-release=1.0.0'],
27+
const testTable: Array<[string, Event, Event]> = [
28+
['adds only baggage item', { type: 'transaction', release: '1.0.0' }, { release: '1.0.0' }],
2929
[
3030
'adds two baggage items',
3131
{ type: 'transaction', release: '1.0.0', environment: 'prod' },
32-
'sentry-environment=prod,sentry-release=1.0.0',
32+
{ release: '1.0.0', environment: 'prod' },
3333
],
3434
[
3535
'adds all baggageitems',
@@ -40,15 +40,20 @@ describe('createEventEnvelope', () => {
4040
user: { id: 'bob', segment: 'segmentA' },
4141
transaction: 'TX',
4242
},
43-
'sentry-environment=prod,sentry-release=1.0.0,sentry-transaction=TX,sentry-userid=bob,sentry-usersegment=segmentA',
43+
{
44+
release: '1.0.0',
45+
environment: 'prod',
46+
user: { id: 'bob', segment: 'segmentA' },
47+
transaction: 'TX',
48+
},
4449
],
4550
];
46-
it.each(testTable)('%s', (_: string, event, serializedBaggage) => {
51+
it.each(testTable)('%s', (_: string, event, trace) => {
4752
const envelopeHeaders = createEventEnvelope(event, testDsn)[0];
4853

4954
expect(envelopeHeaders).toBeDefined();
50-
expect(envelopeHeaders.baggage).toBeDefined();
51-
expect(envelopeHeaders.baggage).toEqual(serializedBaggage);
55+
expect(envelopeHeaders.trace).toBeDefined();
56+
expect(envelopeHeaders.trace).toEqual(trace);
5257
});
5358
});
5459
});

packages/integration-tests/suites/tracing/baggage/test.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@ sentryTest('should send baggage data in transaction envelope header', async ({ g
1010
const envHeader = await getFirstSentryEnvelopeRequest<EventEnvelopeHeaders>(page, url, envelopeHeaderRequestParser);
1111

1212
expect(envHeader.trace).toBeDefined();
13-
expect(envHeader.trace).toEqual(
14-
'sentry-environment=production,sentry-transaction=testTransactionBaggage,sentry-userid=user123,sentry-usersegment=segmentB',
15-
);
13+
expect(envHeader.trace).toEqual({
14+
environment: 'production',
15+
transaction: 'testTransactionBaggage',
16+
userid: 'user123',
17+
usersegment: 'segmentB',
18+
});
1619
});

packages/types/src/envelope.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ export type SessionItem =
5656
| BaseEnvelopeItem<SessionAggregatesItemHeaders, SessionAggregates>;
5757
export type ClientReportItem = BaseEnvelopeItem<ClientReportItemHeaders, ClientReport>;
5858

59-
export type EventEnvelopeHeaders = { event_id: string; sent_at: string; trace?: string };
59+
export type EventEnvelopeHeaders = { event_id: string; sent_at: string; trace?: Record<string, unknown> };
6060
type SessionEnvelopeHeaders = { sent_at: string };
6161
type ClientReportEnvelopeHeaders = BaseEnvelopeHeaders;
6262

packages/utils/src/baggage.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,11 @@ export function isBaggageEmpty(baggage: Baggage): boolean {
5252
return Object.keys(baggage[0]).length === 0;
5353
}
5454

55+
/** Returns Sentry specific baggage values */
56+
export function getSentryBaggageItems(baggage: Baggage): BaggageObj {
57+
return baggage[0];
58+
}
59+
5560
/** Serialize a baggage object */
5661
export function serializeBaggage(baggage: Baggage): string {
5762
return Object.keys(baggage[0]).reduce((prev, key: keyof BaggageObj) => {

0 commit comments

Comments
 (0)