diff --git a/packages/node/test/async/domain.test.ts b/packages/node/test/async/domain.test.ts index 445718de227d..8b608c778fa0 100644 --- a/packages/node/test/async/domain.test.ts +++ b/packages/node/test/async/domain.test.ts @@ -38,6 +38,37 @@ describe('domains', () => { }); }); + test('async hub scope inheritance', async () => { + setDomainAsyncContextStrategy(); + + async function addRandomExtra(hub: Hub, key: string): Promise { + return new Promise(resolve => { + setTimeout(() => { + hub.setExtra(key, Math.random()); + resolve(); + }, 100); + }); + } + + const globalHub = getCurrentHub(); + await addRandomExtra(globalHub, 'a'); + + await runWithAsyncContext(async hub1 => { + expect(hub1).toEqual(globalHub); + + await addRandomExtra(hub1, 'b'); + expect(hub1).not.toEqual(globalHub); + + await runWithAsyncContext(async hub2 => { + expect(hub2).toEqual(hub1); + expect(hub2).not.toEqual(globalHub); + + await addRandomExtra(hub1, 'c'); + expect(hub2).not.toEqual(hub1); + }); + }); + }); + test('hub single instance', () => { setDomainAsyncContextStrategy(); diff --git a/packages/node/test/async/hooks.test.ts b/packages/node/test/async/hooks.test.ts index dbd1904c34dc..da741d7684f5 100644 --- a/packages/node/test/async/hooks.test.ts +++ b/packages/node/test/async/hooks.test.ts @@ -44,6 +44,37 @@ conditionalTest({ min: 12 })('async_hooks', () => { }); }); + test('async hub scope inheritance', async () => { + setHooksAsyncContextStrategy(); + + async function addRandomExtra(hub: Hub, key: string): Promise { + return new Promise(resolve => { + setTimeout(() => { + hub.setExtra(key, Math.random()); + resolve(); + }, 100); + }); + } + + const globalHub = getCurrentHub(); + await addRandomExtra(globalHub, 'a'); + + await runWithAsyncContext(async hub1 => { + expect(hub1).toEqual(globalHub); + + await addRandomExtra(hub1, 'b'); + expect(hub1).not.toEqual(globalHub); + + await runWithAsyncContext(async hub2 => { + expect(hub2).toEqual(hub1); + expect(hub2).not.toEqual(globalHub); + + await addRandomExtra(hub1, 'c'); + expect(hub2).not.toEqual(hub1); + }); + }); + }); + test('context single instance', () => { setHooksAsyncContextStrategy();