diff --git a/dev-packages/node-integration-tests/suites/sample-rand-propagation/server.js b/dev-packages/node-integration-tests/suites/sample-rand-propagation/server.js index 89ad5ef12f21..d7b54cb25c4f 100644 --- a/dev-packages/node-integration-tests/suites/sample-rand-propagation/server.js +++ b/dev-packages/node-integration-tests/suites/sample-rand-propagation/server.js @@ -4,7 +4,7 @@ const Sentry = require('@sentry/node'); Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', transport: loggingTransport, - tracesSampleRate: 1, + tracesSampleRate: 0.00000001, // It's important that this is not 1, so that we also check logic for NonRecordingSpans, which is usually the edge-case }); // express must be required after Sentry is initialized diff --git a/dev-packages/node-integration-tests/suites/tracing/envelope-header/error-active-span-unsampled/test.ts b/dev-packages/node-integration-tests/suites/tracing/envelope-header/error-active-span-unsampled/test.ts index 8ac2dd53a089..6ba4aaa74b32 100644 --- a/dev-packages/node-integration-tests/suites/tracing/envelope-header/error-active-span-unsampled/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/envelope-header/error-active-span-unsampled/test.ts @@ -11,6 +11,7 @@ test('envelope header for error event during active unsampled span is correct', environment: 'production', release: '1.0', sampled: 'false', + sample_rand: expect.any(String), }, }, }) diff --git a/packages/core/src/tracing/dynamicSamplingContext.ts b/packages/core/src/tracing/dynamicSamplingContext.ts index ba362c49795a..5da5883f95ce 100644 --- a/packages/core/src/tracing/dynamicSamplingContext.ts +++ b/packages/core/src/tracing/dynamicSamplingContext.ts @@ -117,7 +117,14 @@ export function getDynamicSamplingContextFromSpan(span: Span): Readonly { const links = undefined; const actual = sampler.shouldSample(ctx, traceId, spanName, spanKind, spanAttributes, links); - expect(actual).toEqual({ - decision: SamplingDecision.NOT_RECORD, - attributes: { 'sentry.sample_rate': 0 }, - traceState: new TraceState().set('sentry.sampled_not_recording', '1'), - }); + expect(actual).toEqual( + expect.objectContaining({ + decision: SamplingDecision.NOT_RECORD, + attributes: { 'sentry.sample_rate': 0 }, + }), + ); + expect(actual.traceState?.get('sentry.sampled_not_recording')).toBe('1'); + expect(actual.traceState?.get('sentry.sample_rand')).toEqual(expect.any(String)); expect(spyOnDroppedEvent).toHaveBeenCalledTimes(1); expect(spyOnDroppedEvent).toHaveBeenCalledWith('sample_rate', 'transaction'); @@ -81,7 +84,7 @@ describe('SentrySampler', () => { expect(actual).toEqual({ decision: SamplingDecision.RECORD_AND_SAMPLED, attributes: { 'sentry.sample_rate': 1 }, - traceState: new TraceState(), + traceState: expect.any(TraceState), }); expect(spyOnDroppedEvent).toHaveBeenCalledTimes(0);