@@ -13,6 +13,13 @@ import { SENTRY_SPAN_PROCESSOR_MAP, SentrySpanProcessor } from '../src/spanproce
1313
1414const SENTRY_DSN = 'https://0@0.ingest.sentry.io/0' ;
1515
16+ const DEFAULT_NODE_CLIENT_OPTIONS = {
17+ dsn : SENTRY_DSN ,
18+ integrations : [ ] ,
19+ transport : ( ) => createTransport ( { recordDroppedEvent : ( ) => undefined } , _ => resolvedSyncPromise ( { } ) ) ,
20+ stackParser : ( ) => [ ] ,
21+ } ;
22+
1623// Integration Test of SentrySpanProcessor
1724
1825beforeAll ( ( ) => {
@@ -21,16 +28,12 @@ beforeAll(() => {
2128
2229describe ( 'SentrySpanProcessor' , ( ) => {
2330 let hub : Hub ;
31+ let client : NodeClient ;
2432 let provider : NodeTracerProvider ;
2533 let spanProcessor : SentrySpanProcessor ;
2634
2735 beforeEach ( ( ) => {
28- const client = new NodeClient ( {
29- dsn : SENTRY_DSN ,
30- integrations : [ ] ,
31- transport : ( ) => createTransport ( { recordDroppedEvent : ( ) => undefined } , _ => resolvedSyncPromise ( { } ) ) ,
32- stackParser : ( ) => [ ] ,
33- } ) ;
36+ client = new NodeClient ( DEFAULT_NODE_CLIENT_OPTIONS ) ;
3437 hub = new Hub ( client ) ;
3538 makeMain ( hub ) ;
3639
@@ -711,6 +714,42 @@ describe('SentrySpanProcessor', () => {
711714 } ) ;
712715 } ) ;
713716 } ) ;
717+
718+ it ( 'associates an error to a transaction' , ( ) => {
719+ let sentryEvent : any ;
720+ let otelSpan : any ;
721+
722+ client = new NodeClient ( {
723+ ...DEFAULT_NODE_CLIENT_OPTIONS ,
724+ beforeSend : event => {
725+ sentryEvent = event ;
726+ return null ;
727+ } ,
728+ } ) ;
729+ hub = new Hub ( client ) ;
730+ makeMain ( hub ) ;
731+
732+ const tracer = provider . getTracer ( 'default' ) ;
733+
734+ tracer . startActiveSpan ( 'GET /users' , parentOtelSpan => {
735+ tracer . startActiveSpan ( 'SELECT * FROM users;' , child => {
736+ hub . captureException ( new Error ( 'oh nooooo!' ) ) ;
737+ otelSpan = child as OtelSpan ;
738+ child . end ( ) ;
739+ } ) ;
740+
741+ parentOtelSpan . end ( ) ;
742+ } ) ;
743+
744+ expect ( sentryEvent ) . toBeDefined ( ) ;
745+ expect ( sentryEvent . exception ) . toBeDefined ( ) ;
746+ expect ( sentryEvent . contexts . trace ) . toEqual ( {
747+ description : otelSpan . name ,
748+ parent_span_id : otelSpan . parentSpanId ,
749+ span_id : otelSpan . spanContext ( ) . spanId ,
750+ trace_id : otelSpan . spanContext ( ) . traceId ,
751+ } ) ;
752+ } ) ;
714753} ) ;
715754
716755// OTEL expects a custom date format
0 commit comments