@@ -161,7 +161,9 @@ private void LoadTestsFromAnExtension(string extensionAssembly, IEnumerable<stri
161
161
return ;
162
162
}
163
163
164
- this . DiscoverTestsFromSingleDiscoverer ( discoverer , discovererToSourcesMap , context , discoverySink , logger , ref totalAdaptersUsed , ref totalTimeTakenByAdapters ) ;
164
+ var result = this . DiscoverTestsFromSingleDiscoverer ( discoverer , discovererToSourcesMap [ discoverer ] , context , discoverySink , logger , cancellationToken ) ;
165
+ totalAdaptersUsed += result . TotalAdaptersUsed ;
166
+ totalTimeTakenByAdapters += result . TotalTimeSpentInAdapaters ;
165
167
}
166
168
167
169
if ( this . discoveryResultCache . TotalDiscoveredTests == 0 )
@@ -191,19 +193,19 @@ private void CollectTelemetryAtEnd(double totalTimeTakenByAdapters, double total
191
193
totalAdaptersUsed ) ;
192
194
}
193
195
194
- private void DiscoverTestsFromSingleDiscoverer (
196
+ private DiscoveryResult DiscoverTestsFromSingleDiscoverer (
195
197
LazyExtension < ITestDiscoverer , ITestDiscovererCapabilities > discoverer ,
196
- Dictionary < LazyExtension < ITestDiscoverer , ITestDiscovererCapabilities > , IEnumerable < string > > discovererToSourcesMap ,
198
+ IEnumerable < string > sources ,
197
199
DiscoveryContext context ,
198
200
TestCaseDiscoverySink discoverySink ,
199
201
IMessageLogger logger ,
200
- ref double totalAdaptersUsed ,
201
- ref double totalTimeTakenByAdapters )
202
+ CancellationToken cancellationToken )
202
203
{
204
+ var result = new DiscoveryResult ( ) ;
203
205
if ( DiscovererEnumerator . TryToLoadDiscoverer ( discoverer , logger , out var discovererType ) == false )
204
206
{
205
207
// Fail to instantiate the discoverer type.
206
- return ;
208
+ return result ;
207
209
}
208
210
209
211
// on instantiated successfully, get tests
@@ -217,21 +219,27 @@ private void DiscoverTestsFromSingleDiscoverer(
217
219
var newTimeStart = DateTime . UtcNow ;
218
220
219
221
this . testPlatformEventSource . AdapterDiscoveryStart ( discoverer . Metadata . DefaultExecutorUri . AbsoluteUri ) ;
220
- discoverer . Value . DiscoverTests ( discovererToSourcesMap [ discoverer ] , context , logger , discoverySink ) ;
222
+ foreach ( var testSource in sources )
223
+ {
224
+ if ( cancellationToken . IsCancellationRequested )
225
+ {
226
+ EqtTrace . Info ( "DiscovererEnumerator.DiscoverTestsFromSingleDiscoverer: Cancellation Requested. Aborting the discovery" ) ;
227
+ break ;
228
+ }
221
229
222
- var totalAdapterRunTime = DateTime . UtcNow - newTimeStart ;
230
+ discoverer . Value . DiscoverTests ( new [ ] { testSource } , context , logger , discoverySink ) ;
231
+ }
223
232
224
- this . testPlatformEventSource . AdapterDiscoveryStop ( this . discoveryResultCache . TotalDiscoveredTests -
225
- currentTotalTests ) ;
233
+ var totalAdapterRunTime = DateTime . UtcNow - newTimeStart ;
234
+ this . testPlatformEventSource . AdapterDiscoveryStop ( this . discoveryResultCache . TotalDiscoveredTests - currentTotalTests ) ;
226
235
227
236
// Record Total Tests Discovered By each Discoverer.
228
237
var totalTestsDiscoveredByCurrentDiscoverer = this . discoveryResultCache . TotalDiscoveredTests - currentTotalTests ;
229
238
this . requestData . MetricsCollection . Add (
230
239
string . Format ( "{0}.{1}" , TelemetryDataConstants . TotalTestsByAdapter ,
231
240
discoverer . Metadata . DefaultExecutorUri ) , totalTestsDiscoveredByCurrentDiscoverer ) ;
232
241
233
- totalAdaptersUsed ++ ;
234
-
242
+ result . TotalAdaptersUsed ++ ;
235
243
236
244
EqtTrace . Verbose ( "DiscovererEnumerator.DiscoverTestsFromSingleDiscoverer: Done loading tests for {0}" ,
237
245
discoverer . Value . GetType ( ) . FullName ) ;
@@ -244,22 +252,18 @@ private void DiscoverTestsFromSingleDiscoverer(
244
252
}
245
253
246
254
// Collecting Data Point for Time Taken to Discover Tests by each Adapter
247
- this . requestData . MetricsCollection . Add (
248
- string . Format ( "{0}.{1}" , TelemetryDataConstants . TimeTakenToDiscoverTestsByAnAdapter ,
249
- discoverer . Metadata . DefaultExecutorUri ) , totalAdapterRunTime . TotalSeconds ) ;
250
- totalTimeTakenByAdapters += totalAdapterRunTime . TotalSeconds ;
255
+ this . requestData . MetricsCollection . Add ( $ "{ TelemetryDataConstants . TimeTakenToDiscoverTestsByAnAdapter } .{ discoverer . Metadata . DefaultExecutorUri } ", totalAdapterRunTime . TotalSeconds ) ;
256
+ result . TotalTimeSpentInAdapaters += totalAdapterRunTime . TotalSeconds ;
251
257
}
252
258
catch ( Exception e )
253
259
{
254
- var message = string . Format (
255
- CultureInfo . CurrentUICulture ,
256
- CrossPlatEngineResources . ExceptionFromLoadTests ,
257
- discovererType . Name ,
258
- e . Message ) ;
260
+ var message = string . Format ( CultureInfo . CurrentUICulture , CrossPlatEngineResources . ExceptionFromLoadTests , discovererType . Name , e . Message ) ;
259
261
260
262
logger . SendMessage ( TestMessageLevel . Error , message ) ;
261
263
EqtTrace . Error ( "DiscovererEnumerator.DiscoverTestsFromSingleDiscoverer: {0} " , e ) ;
262
264
}
265
+
266
+ return result ;
263
267
}
264
268
265
269
private static bool TryToLoadDiscoverer ( LazyExtension < ITestDiscoverer , ITestDiscovererCapabilities > discoverer , IMessageLogger logger , out Type discovererType )
@@ -495,5 +499,11 @@ private static IEnumerable<LazyExtension<ITestDiscoverer, ITestDiscovererCapabil
495
499
}
496
500
}
497
501
502
+ private class DiscoveryResult
503
+ {
504
+ public double TotalTimeSpentInAdapaters { get ; set ; }
505
+ public int TotalAdaptersUsed { get ; set ; }
506
+ }
507
+
498
508
}
499
509
}
0 commit comments