File tree 5 files changed +41
-0
lines changed
5 files changed +41
-0
lines changed Original file line number Diff line number Diff line change
1
+ import test from 'ava' ;
2
+ import { v4 as uuid4 } from 'uuid' ;
3
+ import { Client } from '@temporalio/client' ;
4
+ import { RUN_INTEGRATION_TESTS , Worker } from './helpers' ;
5
+ import { defaultOptions } from './mock-native-worker' ;
6
+ import { abortController } from './workflows' ;
7
+
8
+ if ( RUN_INTEGRATION_TESTS ) {
9
+ test ( `Worker runtime exposes AbortController as a global` , async ( t ) => {
10
+ const worker = await Worker . create ( { ...defaultOptions , taskQueue : 'test-worker-exposes-abortcontroller' } ) ;
11
+ const client = new Client ( ) ;
12
+ const result = await worker . runUntil (
13
+ client . workflow . execute ( abortController , {
14
+ args : [ ] ,
15
+ taskQueue : 'test-worker-exposes-abortcontroller' ,
16
+ workflowId : uuid4 ( ) ,
17
+ workflowExecutionTimeout : '5s' ,
18
+ } )
19
+ ) ;
20
+ t . is ( result , 'abort successful' ) ;
21
+ } ) ;
22
+ }
Original file line number Diff line number Diff line change
1
+ export async function abortController ( ) : Promise < string | null > {
2
+ let aborted : string | null = null ;
3
+
4
+ const controller = new AbortController ( ) ;
5
+ const { signal } = controller ;
6
+
7
+ const abortEventListener = ( ) => {
8
+ aborted = signal . reason ;
9
+ } ;
10
+
11
+ signal . addEventListener ( 'abort' , abortEventListener ) ;
12
+ controller . abort ( 'abort successful' ) ;
13
+ signal . removeEventListener ( 'abort' , abortEventListener ) ;
14
+
15
+ return aborted ;
16
+ }
Original file line number Diff line number Diff line change
1
+ export * from './abort-controller' ;
1
2
export * from './activity-failure' ;
2
3
export * from './activity-failures' ;
3
4
export * from './args-and-return' ;
Original file line number Diff line number Diff line change @@ -78,6 +78,7 @@ export class ReusableVMWorkflowCreator implements WorkflowCreator {
78
78
__webpack_module_cache__,
79
79
TextEncoder,
80
80
TextDecoder,
81
+ AbortController,
81
82
} ;
82
83
this . _context = vm . createContext ( globals , { microtaskMode : 'afterEvaluate' } ) ;
83
84
this . injectConsole ( ) ;
Original file line number Diff line number Diff line change @@ -86,6 +86,7 @@ export class VMWorkflowCreator implements WorkflowCreator {
86
86
__webpack_module_cache__ : { } ,
87
87
TextEncoder,
88
88
TextDecoder,
89
+ AbortController,
89
90
} ;
90
91
const context = vm . createContext ( globals , { microtaskMode : 'afterEvaluate' } ) ;
91
92
this . script . runInContext ( context ) ;
You can’t perform that action at this time.
0 commit comments