@@ -13,6 +13,13 @@ import { SENTRY_SPAN_PROCESSOR_MAP, SentrySpanProcessor } from '../src/spanproce
13
13
14
14
const SENTRY_DSN = 'https://[email protected] /0' ;
15
15
16
+ const DEFAULT_NODE_CLIENT_OPTIONS = {
17
+ dsn : SENTRY_DSN ,
18
+ integrations : [ ] ,
19
+ transport : ( ) => createTransport ( { recordDroppedEvent : ( ) => undefined } , _ => resolvedSyncPromise ( { } ) ) ,
20
+ stackParser : ( ) => [ ] ,
21
+ } ;
22
+
16
23
// Integration Test of SentrySpanProcessor
17
24
18
25
beforeAll ( ( ) => {
@@ -21,16 +28,12 @@ beforeAll(() => {
21
28
22
29
describe ( 'SentrySpanProcessor' , ( ) => {
23
30
let hub : Hub ;
31
+ let client : NodeClient ;
24
32
let provider : NodeTracerProvider ;
25
33
let spanProcessor : SentrySpanProcessor ;
26
34
27
35
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 ) ;
34
37
hub = new Hub ( client ) ;
35
38
makeMain ( hub ) ;
36
39
@@ -711,6 +714,42 @@ describe('SentrySpanProcessor', () => {
711
714
} ) ;
712
715
} ) ;
713
716
} ) ;
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
+ } ) ;
714
753
} ) ;
715
754
716
755
// OTEL expects a custom date format
0 commit comments