@@ -186,7 +186,7 @@ describe('NodeTracerProvider', () => {
186
186
} ) ;
187
187
188
188
describe ( '.withSpan()' , ( ) => {
189
- it ( 'should run context with AsyncHooksContextManager context manager ' , done => {
189
+ it ( 'should run context with AsyncHooksContextManager' , done => {
190
190
provider = new NodeTracerProvider ( { } ) ;
191
191
const span = provider . getTracer ( 'default' ) . startSpan ( 'my-span' ) ;
192
192
provider . getTracer ( 'default' ) . withSpan ( span , ( ) => {
@@ -202,7 +202,7 @@ describe('NodeTracerProvider', () => {
202
202
) ;
203
203
} ) ;
204
204
205
- it ( 'should run context with AsyncHooksContextManager context manager with multiple spans' , done => {
205
+ it ( 'should run context with AsyncHooksContextManager with multiple spans' , done => {
206
206
provider = new NodeTracerProvider ( { } ) ;
207
207
const span = provider . getTracer ( 'default' ) . startSpan ( 'my-span' ) ;
208
208
provider . getTracer ( 'default' ) . withSpan ( span , ( ) => {
@@ -254,7 +254,7 @@ describe('NodeTracerProvider', () => {
254
254
} ) ;
255
255
256
256
describe ( '.bind()' , ( ) => {
257
- it ( 'should bind context with AsyncHooksContextManager context manager ' , done => {
257
+ it ( 'should bind context with AsyncHooksContextManager' , done => {
258
258
const provider = new NodeTracerProvider ( { } ) ;
259
259
const span = provider . getTracer ( 'default' ) . startSpan ( 'my-span' ) ;
260
260
const fn = ( ) => {
@@ -268,4 +268,72 @@ describe('NodeTracerProvider', () => {
268
268
return patchedFn ( ) ;
269
269
} ) ;
270
270
} ) ;
271
+
272
+ describe ( '.withSpanAsync()' , ( ) => {
273
+ it ( 'should run async context with AsyncHooksContextManager' , done => {
274
+ provider = new NodeTracerProvider ( { } ) ;
275
+ const span = provider . getTracer ( 'default' ) . startSpan ( 'my-span' ) ;
276
+ void provider . getTracer ( 'default' ) . withSpanAsync ( span , async ( ) => {
277
+ assert . deepStrictEqual (
278
+ provider . getTracer ( 'default' ) . getCurrentSpan ( ) ,
279
+ span
280
+ ) ;
281
+ return done ( ) ;
282
+ } ) ;
283
+ assert . deepStrictEqual (
284
+ provider . getTracer ( 'default' ) . getCurrentSpan ( ) ,
285
+ undefined
286
+ ) ;
287
+ } ) ;
288
+
289
+ it ( 'should run context with AsyncHooksContextManager with multiple spans' , async ( ) => {
290
+ provider = new NodeTracerProvider ( { } ) ;
291
+ let nestedHasBeenRun : boolean = false ;
292
+ const span = provider . getTracer ( 'default' ) . startSpan ( 'my-span' ) ;
293
+ await provider . getTracer ( 'default' ) . withSpanAsync ( span , async ( ) => {
294
+ assert . deepStrictEqual (
295
+ provider . getTracer ( 'default' ) . getCurrentSpan ( ) ,
296
+ span
297
+ ) ;
298
+
299
+ const span1 = provider . getTracer ( 'default' ) . startSpan ( 'my-span1' ) ;
300
+
301
+ await provider . getTracer ( 'default' ) . withSpanAsync ( span1 , async ( ) => {
302
+ assert . deepStrictEqual (
303
+ provider . getTracer ( 'default' ) . getCurrentSpan ( ) ,
304
+ span1
305
+ ) ;
306
+ assert . deepStrictEqual (
307
+ span1 . context ( ) . traceId ,
308
+ span . context ( ) . traceId
309
+ ) ;
310
+ nestedHasBeenRun = true ;
311
+ } ) ;
312
+ } ) ;
313
+ assert . deepStrictEqual (
314
+ provider . getTracer ( 'default' ) . getCurrentSpan ( ) ,
315
+ undefined
316
+ ) ;
317
+ assert ( nestedHasBeenRun ) ;
318
+ } ) ;
319
+
320
+ it ( 'should find correct context with promises' , async ( ) => {
321
+ provider = new NodeTracerProvider ( ) ;
322
+ const span = provider . getTracer ( 'default' ) . startSpan ( 'my-span' ) ;
323
+ await provider . getTracer ( 'default' ) . withSpanAsync ( span , async ( ) => {
324
+ for ( let i = 0 ; i < 3 ; i ++ ) {
325
+ await sleep ( 5 ) . then ( ( ) => {
326
+ assert . deepStrictEqual (
327
+ provider . getTracer ( 'default' ) . getCurrentSpan ( ) ,
328
+ span
329
+ ) ;
330
+ } ) ;
331
+ }
332
+ } ) ;
333
+ assert . deepStrictEqual (
334
+ provider . getTracer ( 'default' ) . getCurrentSpan ( ) ,
335
+ undefined
336
+ ) ;
337
+ } ) ;
338
+ } ) ;
271
339
} ) ;
0 commit comments