File tree Expand file tree Collapse file tree 3 files changed +94
-0
lines changed
dev-packages/cloudflare-integration-tests/suites/tracing/durableobject Expand file tree Collapse file tree 3 files changed +94
-0
lines changed Original file line number Diff line number Diff line change 1+ import * as Sentry from '@sentry/cloudflare' ;
2+ import { DurableObject } from 'cloudflare:workers' ;
3+
4+ interface Env {
5+ SENTRY_DSN : string ;
6+ TEST_DURABLE_OBJECT : DurableObjectNamespace ;
7+ }
8+
9+ class TestDurableObjectBase extends DurableObject < Env > {
10+ public constructor ( ctx : DurableObjectState , env : Env ) {
11+ super ( ctx , env ) ;
12+ }
13+
14+ // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility
15+ async sayHello ( name : string ) : Promise < string > {
16+ return `Hello, ${ name } ` ;
17+ }
18+ }
19+
20+ export const TestDurableObject = Sentry . instrumentDurableObjectWithSentry (
21+ ( env : Env ) => ( {
22+ dsn : env . SENTRY_DSN ,
23+ tracesSampleRate : 1.0 ,
24+ beforeSendTransaction : transaction => {
25+ console . log ( 'beforeSendTransaction' , transaction ) ;
26+ return transaction ;
27+ } ,
28+ } ) ,
29+ TestDurableObjectBase ,
30+ ) ;
31+
32+ export default {
33+ async fetch ( request , env ) : Promise < Response > {
34+ const id : DurableObjectId = env . TEST_DURABLE_OBJECT . idFromName ( 'test' ) ;
35+ const stub = env . TEST_DURABLE_OBJECT . get ( id ) as unknown as TestDurableObjectBase ;
36+
37+ if ( request . url . includes ( 'hello' ) ) {
38+ const greeting = await stub . sayHello ( 'world' ) ;
39+ return new Response ( greeting ) ;
40+ }
41+
42+ return new Response ( 'Usual response' ) ;
43+ } ,
44+ } ;
Original file line number Diff line number Diff line change 1+ import { expect , it } from 'vitest' ;
2+ import { createRunner } from '../../../runner' ;
3+
4+ it ( 'traces a durable object method' , async ( ) => {
5+ const runner = createRunner ( __dirname )
6+ . expect ( envelope => {
7+ const transactionEvent = envelope [ 1 ] ?. [ 0 ] ?. [ 1 ] ;
8+ expect ( transactionEvent ) . toEqual (
9+ expect . objectContaining ( {
10+ contexts : expect . objectContaining ( {
11+ trace : expect . objectContaining ( {
12+ op : 'rpc' ,
13+ data : expect . objectContaining ( {
14+ 'sentry.op' : 'rpc' ,
15+ 'sentry.origin' : 'auto.faas.cloudflare_durableobjects' ,
16+ } ) ,
17+ origin : 'auto.faas.cloudflare_durableobjects' ,
18+ } ) ,
19+ } ) ,
20+ transaction : 'sayHello' ,
21+ } ) ,
22+ ) ;
23+ } )
24+ . start ( ) ;
25+ await runner . makeRequest ( 'get' , '/hello' ) ;
26+ await runner . completed ( ) ;
27+ } ) ;
Original file line number Diff line number Diff line change 1+ {
2+ "name" : " worker-name" ,
3+ "main" : " index.ts" ,
4+ "compatibility_date" : " 2025-06-17" ,
5+ "migrations" : [
6+ {
7+ "new_sqlite_classes" : [" TestDurableObject" ],
8+ "tag" : " v1"
9+ }
10+ ],
11+ "durable_objects" : {
12+ "bindings" : [
13+ {
14+ "class_name" : " TestDurableObject" ,
15+ "name" : " TEST_DURABLE_OBJECT"
16+ }
17+ ]
18+ },
19+ "compatibility_flags" : [" nodejs_als" ],
20+ "vars" : {
21+ "SENTRY_DSN" :
" https://[email protected] /4509553159831552" 22+ }
23+ }
You can’t perform that action at this time.
0 commit comments