33
44namespace Microsoft . TestPlatform . AcceptanceTests . TranslationLayerTests
55{
6+ using Castle . Core . Internal ;
67 using Microsoft . TestPlatform . TestUtilities ;
78 using Microsoft . TestPlatform . VsTestConsole . TranslationLayer . Interfaces ;
9+ using Microsoft . VisualStudio . TestPlatform . Common . Telemetry ;
810 using Microsoft . VisualStudio . TestPlatform . ObjectModel ;
911 using Microsoft . VisualStudio . TestTools . UnitTesting ;
1012 using System ;
@@ -109,6 +111,66 @@ public async Task TestRunWithCodeCoverageAndFinalization(RunnerInfo runnerInfo)
109111 Assert . AreEqual ( testEnvironment . RunnerFramework . Equals ( IntegrationTestBase . DesktopRunnerFramework ) ? 1 : 2 , this . multiTestRunFinalizationEventHandler . Attachments . Count ) ;
110112
111113 AssertCoverageResults ( this . multiTestRunFinalizationEventHandler . Attachments ) ;
114+
115+ Assert . IsFalse ( multiTestRunFinalizationEventHandler . CompleteArgs . IsAborted ) ;
116+ Assert . IsFalse ( multiTestRunFinalizationEventHandler . CompleteArgs . IsCanceled ) ;
117+ Assert . IsNull ( multiTestRunFinalizationEventHandler . CompleteArgs . Error ) ;
118+
119+ Assert . AreEqual ( testEnvironment . RunnerFramework . Equals ( IntegrationTestBase . DesktopRunnerFramework ) ? 2 : 0 , multiTestRunFinalizationEventHandler . ProgressArgs . Count ) ;
120+ for ( int i = 0 ; i < multiTestRunFinalizationEventHandler . ProgressArgs . Count ; i ++ )
121+ {
122+ VisualStudio . TestPlatform . ObjectModel . Client . MultiTestRunFinalizationProgressEventArgs progressArgs = multiTestRunFinalizationEventHandler . ProgressArgs [ i ] ;
123+ Assert . AreEqual ( 1 , progressArgs . CurrentHandlerIndex ) ;
124+ Assert . AreEqual ( "Microsoft.VisualStudio.TestPlatform.Utilities.CodeCoverageDataAttachmentsHandler" , progressArgs . CurrentHandlerName ) ;
125+ Assert . AreEqual ( 1 , progressArgs . HandlersCount ) ;
126+ Assert . AreEqual ( i == 0 ? 50 : 100 , progressArgs . CurrentHandlerProgress ) ;
127+ }
128+
129+ Assert . AreEqual ( "Completed" , multiTestRunFinalizationEventHandler . CompleteArgs . Metrics [ TelemetryDataConstants . FinalizationState ] ) ;
130+ Assert . AreEqual ( 2L , multiTestRunFinalizationEventHandler . CompleteArgs . Metrics [ TelemetryDataConstants . NumberOfAttachmentsSentForFinalization ] ) ;
131+ Assert . AreEqual ( testEnvironment . RunnerFramework . Equals ( IntegrationTestBase . DesktopRunnerFramework ) ? 1L : 2L , multiTestRunFinalizationEventHandler . CompleteArgs . Metrics [ TelemetryDataConstants . NumberOfAttachmentsAfterFinalization ] ) ;
132+ Assert . IsTrue ( multiTestRunFinalizationEventHandler . CompleteArgs . Metrics . ContainsKey ( TelemetryDataConstants . TimeTakenInSecForFinalization ) ) ;
133+ }
134+
135+ [ TestMethod ]
136+ [ NetFullTargetFrameworkDataSource ]
137+ [ NetCoreTargetFrameworkDataSource ]
138+ public async Task TestRunWithCodeCoverageAndFinalizationNoMetrics ( RunnerInfo runnerInfo )
139+ {
140+ // arrange
141+ AcceptanceTestBase . SetTestEnvironment ( this . testEnvironment , runnerInfo ) ;
142+ this . Setup ( ) ;
143+
144+ this . vstestConsoleWrapper . RunTests ( this . GetTestAssemblies ( ) . Take ( 1 ) , this . GetCodeCoverageRunSettings ( 1 ) , this . runEventHandler ) ;
145+ this . vstestConsoleWrapper . RunTests ( this . GetTestAssemblies ( ) . Skip ( 1 ) , this . GetCodeCoverageRunSettings ( 1 ) , this . runEventHandler ) ;
146+
147+ Assert . AreEqual ( 6 , this . runEventHandler . TestResults . Count ) ;
148+ Assert . AreEqual ( 2 , this . runEventHandler . Attachments . Count ) ;
149+
150+ // act
151+ await this . vstestConsoleWrapper . FinalizeMultiTestRunAsync ( runEventHandler . Attachments , false , multiTestRunFinalizationEventHandler , CancellationToken . None ) ;
152+
153+ // Assert
154+ multiTestRunFinalizationEventHandler . EnsureSuccess ( ) ;
155+ Assert . AreEqual ( testEnvironment . RunnerFramework . Equals ( IntegrationTestBase . DesktopRunnerFramework ) ? 1 : 2 , this . multiTestRunFinalizationEventHandler . Attachments . Count ) ;
156+
157+ AssertCoverageResults ( this . multiTestRunFinalizationEventHandler . Attachments ) ;
158+
159+ Assert . IsFalse ( multiTestRunFinalizationEventHandler . CompleteArgs . IsAborted ) ;
160+ Assert . IsFalse ( multiTestRunFinalizationEventHandler . CompleteArgs . IsCanceled ) ;
161+ Assert . IsNull ( multiTestRunFinalizationEventHandler . CompleteArgs . Error ) ;
162+
163+ Assert . AreEqual ( testEnvironment . RunnerFramework . Equals ( IntegrationTestBase . DesktopRunnerFramework ) ? 2 : 0 , multiTestRunFinalizationEventHandler . ProgressArgs . Count ) ;
164+ for ( int i = 0 ; i < multiTestRunFinalizationEventHandler . ProgressArgs . Count ; i ++ )
165+ {
166+ VisualStudio . TestPlatform . ObjectModel . Client . MultiTestRunFinalizationProgressEventArgs progressArgs = multiTestRunFinalizationEventHandler . ProgressArgs [ i ] ;
167+ Assert . AreEqual ( 1 , progressArgs . CurrentHandlerIndex ) ;
168+ Assert . AreEqual ( "Microsoft.VisualStudio.TestPlatform.Utilities.CodeCoverageDataAttachmentsHandler" , progressArgs . CurrentHandlerName ) ;
169+ Assert . AreEqual ( 1 , progressArgs . HandlersCount ) ;
170+ Assert . AreEqual ( i == 0 ? 50 : 100 , progressArgs . CurrentHandlerProgress ) ;
171+ }
172+
173+ Assert . IsTrue ( multiTestRunFinalizationEventHandler . CompleteArgs . Metrics . IsNullOrEmpty ( ) ) ;
112174 }
113175
114176 [ TestMethod ]
@@ -135,6 +197,25 @@ public async Task TestRunWithCodeCoverageAndFinalizationModuleDuplicated(RunnerI
135197 Assert . AreEqual ( testEnvironment . RunnerFramework . Equals ( IntegrationTestBase . DesktopRunnerFramework ) ? 1 : 3 , this . multiTestRunFinalizationEventHandler . Attachments . Count ) ;
136198
137199 AssertCoverageResults ( this . multiTestRunFinalizationEventHandler . Attachments ) ;
200+
201+ Assert . IsFalse ( multiTestRunFinalizationEventHandler . CompleteArgs . IsAborted ) ;
202+ Assert . IsFalse ( multiTestRunFinalizationEventHandler . CompleteArgs . IsCanceled ) ;
203+ Assert . IsNull ( multiTestRunFinalizationEventHandler . CompleteArgs . Error ) ;
204+
205+ Assert . AreEqual ( testEnvironment . RunnerFramework . Equals ( IntegrationTestBase . DesktopRunnerFramework ) ? 3 : 0 , multiTestRunFinalizationEventHandler . ProgressArgs . Count ) ;
206+ for ( int i = 0 ; i < multiTestRunFinalizationEventHandler . ProgressArgs . Count ; i ++ )
207+ {
208+ VisualStudio . TestPlatform . ObjectModel . Client . MultiTestRunFinalizationProgressEventArgs progressArgs = multiTestRunFinalizationEventHandler . ProgressArgs [ i ] ;
209+ Assert . AreEqual ( 1 , progressArgs . CurrentHandlerIndex ) ;
210+ Assert . AreEqual ( "Microsoft.VisualStudio.TestPlatform.Utilities.CodeCoverageDataAttachmentsHandler" , progressArgs . CurrentHandlerName ) ;
211+ Assert . AreEqual ( 1 , progressArgs . HandlersCount ) ;
212+ Assert . AreEqual ( i == 0 ? 33 : i == 1 ? 66 : 100 , progressArgs . CurrentHandlerProgress ) ;
213+ }
214+
215+ Assert . AreEqual ( "Completed" , multiTestRunFinalizationEventHandler . CompleteArgs . Metrics [ TelemetryDataConstants . FinalizationState ] ) ;
216+ Assert . AreEqual ( 3L , multiTestRunFinalizationEventHandler . CompleteArgs . Metrics [ TelemetryDataConstants . NumberOfAttachmentsSentForFinalization ] ) ;
217+ Assert . AreEqual ( testEnvironment . RunnerFramework . Equals ( IntegrationTestBase . DesktopRunnerFramework ) ? 1L : 3L , multiTestRunFinalizationEventHandler . CompleteArgs . Metrics [ TelemetryDataConstants . NumberOfAttachmentsAfterFinalization ] ) ;
218+ Assert . IsTrue ( multiTestRunFinalizationEventHandler . CompleteArgs . Metrics . ContainsKey ( TelemetryDataConstants . TimeTakenInSecForFinalization ) ) ;
138219 }
139220
140221 [ TestMethod ]
@@ -146,6 +227,8 @@ public async Task TestRunWithCodeCoverageAndFinalizationCancelled(RunnerInfo run
146227 AcceptanceTestBase . SetTestEnvironment ( this . testEnvironment , runnerInfo ) ;
147228 this . Setup ( ) ;
148229
230+ if ( ! testEnvironment . RunnerFramework . Equals ( IntegrationTestBase . DesktopRunnerFramework ) ) return ;
231+
149232 this . vstestConsoleWrapper . RunTests ( this . GetTestAssemblies ( ) . Take ( 1 ) , this . GetCodeCoverageRunSettings ( 1 ) , this . runEventHandler ) ;
150233 Assert . AreEqual ( 3 , this . runEventHandler . TestResults . Count ) ;
151234 Assert . AreEqual ( 1 , this . runEventHandler . Attachments . Count ) ;
@@ -155,7 +238,20 @@ public async Task TestRunWithCodeCoverageAndFinalizationCancelled(RunnerInfo run
155238 CancellationTokenSource cts = new CancellationTokenSource ( ) ;
156239
157240 Task finalization = this . vstestConsoleWrapper . FinalizeMultiTestRunAsync ( attachments , true , multiTestRunFinalizationEventHandler , cts . Token ) ;
158- await Task . Delay ( TimeSpan . FromSeconds ( 1 ) ) ;
241+
242+ while ( true )
243+ {
244+ try
245+ {
246+ if ( multiTestRunFinalizationEventHandler . ProgressArgs . Count >= 3 )
247+ break ;
248+ }
249+ catch
250+ {
251+ // ignore
252+ }
253+ await Task . Delay ( 100 ) ;
254+ }
159255
160256 // act
161257 cts . Cancel ( ) ;
@@ -164,7 +260,34 @@ public async Task TestRunWithCodeCoverageAndFinalizationCancelled(RunnerInfo run
164260 await finalization ;
165261 multiTestRunFinalizationEventHandler . EnsureSuccess ( ) ;
166262
167- Assert . AreEqual ( 1000 , this . multiTestRunFinalizationEventHandler . Attachments . Count ) ;
263+ Assert . AreEqual ( 1000 , this . multiTestRunFinalizationEventHandler . Attachments . Count ) ;
264+
265+ Assert . IsFalse ( multiTestRunFinalizationEventHandler . CompleteArgs . IsAborted ) ;
266+ Assert . IsTrue ( multiTestRunFinalizationEventHandler . CompleteArgs . IsCanceled ) ;
267+ Assert . IsNull ( multiTestRunFinalizationEventHandler . CompleteArgs . Error ) ;
268+
269+ Assert . IsTrue ( ( testEnvironment . RunnerFramework . Equals ( IntegrationTestBase . DesktopRunnerFramework ) ? 3 : 0 ) <= multiTestRunFinalizationEventHandler . ProgressArgs . Count ) ;
270+ for ( int i = 0 ; i < multiTestRunFinalizationEventHandler . ProgressArgs . Count ; i ++ )
271+ {
272+ VisualStudio . TestPlatform . ObjectModel . Client . MultiTestRunFinalizationProgressEventArgs progressArgs = multiTestRunFinalizationEventHandler . ProgressArgs [ i ] ;
273+ Assert . AreEqual ( 1 , progressArgs . CurrentHandlerIndex ) ;
274+ Assert . AreEqual ( "Microsoft.VisualStudio.TestPlatform.Utilities.CodeCoverageDataAttachmentsHandler" , progressArgs . CurrentHandlerName ) ;
275+ Assert . AreEqual ( 1 , progressArgs . HandlersCount ) ;
276+
277+ if ( i == 5 )
278+ {
279+ Assert . AreEqual ( 0 , progressArgs . CurrentHandlerProgress ) ;
280+ }
281+ else if ( i == 15 )
282+ {
283+ Assert . AreEqual ( 1 , progressArgs . CurrentHandlerProgress ) ;
284+ }
285+ }
286+
287+ Assert . AreEqual ( "Canceled" , multiTestRunFinalizationEventHandler . CompleteArgs . Metrics [ TelemetryDataConstants . FinalizationState ] ) ;
288+ Assert . AreEqual ( 1000L , multiTestRunFinalizationEventHandler . CompleteArgs . Metrics [ TelemetryDataConstants . NumberOfAttachmentsSentForFinalization ] ) ;
289+ Assert . AreEqual ( 1000L , multiTestRunFinalizationEventHandler . CompleteArgs . Metrics [ TelemetryDataConstants . NumberOfAttachmentsAfterFinalization ] ) ;
290+ Assert . IsTrue ( multiTestRunFinalizationEventHandler . CompleteArgs . Metrics . ContainsKey ( TelemetryDataConstants . TimeTakenInSecForFinalization ) ) ;
168291 }
169292
170293 [ TestMethod ]
0 commit comments