@@ -10,7 +10,8 @@ public class RequestExecutorResolverTests
10
10
public async Task Operation_Cache_Should_Be_Scoped_To_Executor ( )
11
11
{
12
12
// arrange
13
- var executorEvictedResetEvent = new AutoResetEvent ( false ) ;
13
+ var executorEvictedResetEvent = new ManualResetEventSlim ( false ) ;
14
+ using var cts = new CancellationTokenSource ( TimeSpan . FromSeconds ( 5 ) ) ;
14
15
15
16
var resolver = new ServiceCollection ( )
16
17
. AddGraphQL ( )
@@ -32,7 +33,7 @@ public async Task Operation_Cache_Should_Be_Scoped_To_Executor()
32
33
. GetRequiredService < IPreparedOperationCache > ( ) ;
33
34
34
35
resolver . EvictRequestExecutor ( ) ;
35
- executorEvictedResetEvent . WaitOne ( 1000 ) ;
36
+ executorEvictedResetEvent . Wait ( cts . Token ) ;
36
37
37
38
var secondExecutor = await resolver . GetRequestExecutorAsync ( ) ;
38
39
var secondOperationCache = secondExecutor . Services . GetCombinedServices ( )
@@ -46,16 +47,17 @@ public async Task Operation_Cache_Should_Be_Scoped_To_Executor()
46
47
public async Task Executor_Should_Only_Be_Switched_Once_It_Is_Warmed_Up ( )
47
48
{
48
49
// arrange
49
- var warmupResetEvent = new AutoResetEvent ( true ) ;
50
- var executorEvictedResetEvent = new AutoResetEvent ( false ) ;
50
+ var warmupResetEvent = new ManualResetEventSlim ( true ) ;
51
+ var executorEvictedResetEvent = new ManualResetEventSlim ( false ) ;
52
+ var cts = new CancellationTokenSource ( TimeSpan . FromSeconds ( 5 ) ) ;
51
53
52
54
var resolver = new ServiceCollection ( )
53
55
. AddGraphQL ( )
54
56
. InitializeOnStartup (
55
57
keepWarm : true ,
56
58
warmup : ( _ , _ ) =>
57
59
{
58
- warmupResetEvent . WaitOne ( 1000 ) ;
60
+ warmupResetEvent . Wait ( cts . Token ) ;
59
61
60
62
return Task . CompletedTask ;
61
63
} )
@@ -83,10 +85,12 @@ public async Task Executor_Should_Only_Be_Switched_Once_It_Is_Warmed_Up()
83
85
Assert . Same ( initialExecutor , executorAfterEviction ) ;
84
86
85
87
warmupResetEvent . Set ( ) ;
86
- executorEvictedResetEvent . WaitOne ( 1000 ) ;
88
+ executorEvictedResetEvent . Wait ( cts . Token ) ;
87
89
var executorAfterWarmup = await resolver . GetRequestExecutorAsync ( ) ;
88
90
89
91
Assert . NotSame ( initialExecutor , executorAfterWarmup ) ;
92
+
93
+ cts . Dispose ( ) ;
90
94
}
91
95
92
96
[ Theory ]
@@ -97,7 +101,8 @@ public async Task WarmupSchemaTasks_Are_Applied_Correct_Number_Of_Times(
97
101
{
98
102
// arrange
99
103
var warmups = 0 ;
100
- var executorEvictedResetEvent = new AutoResetEvent ( false ) ;
104
+ var executorEvictedResetEvent = new ManualResetEventSlim ( false ) ;
105
+ using var cts = new CancellationTokenSource ( TimeSpan . FromSeconds ( 5 ) ) ;
101
106
102
107
var resolver = new ServiceCollection ( )
103
108
. AddGraphQL ( )
@@ -125,7 +130,7 @@ public async Task WarmupSchemaTasks_Are_Applied_Correct_Number_Of_Times(
125
130
var initialExecutor = await resolver . GetRequestExecutorAsync ( ) ;
126
131
127
132
resolver . EvictRequestExecutor ( ) ;
128
- executorEvictedResetEvent . WaitOne ( 1000 ) ;
133
+ executorEvictedResetEvent . Wait ( cts . Token ) ;
129
134
130
135
var executorAfterEviction = await resolver . GetRequestExecutorAsync ( ) ;
131
136
@@ -161,14 +166,15 @@ public async Task Calling_GetExecutorAsync_Multiple_Times_Only_Creates_One_Execu
161
166
public async Task Executor_Resolution_Should_Be_Parallel ( )
162
167
{
163
168
// arrange
164
- var schema1CreationResetEvent = new AutoResetEvent ( false ) ;
169
+ var schema1CreationResetEvent = new ManualResetEventSlim ( false ) ;
170
+ var cts = new CancellationTokenSource ( TimeSpan . FromSeconds ( 5 ) ) ;
165
171
166
172
var services = new ServiceCollection ( ) ;
167
173
services
168
174
. AddGraphQL ( "schema1" )
169
175
. AddQueryType ( d =>
170
176
{
171
- schema1CreationResetEvent . WaitOne ( 1000 ) ;
177
+ schema1CreationResetEvent . Wait ( cts . Token ) ;
172
178
d . Field ( "foo" ) . Resolve ( "" ) ;
173
179
} ) ;
174
180
services
@@ -181,14 +187,16 @@ public async Task Executor_Resolution_Should_Be_Parallel()
181
187
var resolver = provider . GetRequiredService < IRequestExecutorResolver > ( ) ;
182
188
183
189
// act
184
- var executor1Task = Task . Run ( async ( ) => await resolver . GetRequestExecutorAsync ( "schema1" ) ) ;
185
- var executor2Task = Task . Run ( async ( ) => await resolver . GetRequestExecutorAsync ( "schema2" ) ) ;
190
+ var executor1Task = Task . Run ( async ( ) => await resolver . GetRequestExecutorAsync ( "schema1" ) , cts . Token ) ;
191
+ var executor2Task = Task . Run ( async ( ) => await resolver . GetRequestExecutorAsync ( "schema2" ) , cts . Token ) ;
186
192
187
193
// assert
188
194
await executor2Task ;
189
195
190
196
schema1CreationResetEvent . Set ( ) ;
191
197
192
198
await executor1Task ;
199
+
200
+ cts . Dispose ( ) ;
193
201
}
194
202
}
0 commit comments