Skip to content

Commit

Permalink
save work
Browse files Browse the repository at this point in the history
  • Loading branch information
MarcoRossignoli committed Nov 11, 2021
1 parent c63eda0 commit 9b61fb4
Show file tree
Hide file tree
Showing 52 changed files with 325 additions and 234 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -421,7 +421,7 @@ public void TestRunMessageHandler(object sender, TestRunMessageEventArgs e)
SendTestMessage(e.Level, e.Message);
break;


default:
throw new NotSupportedException($"Test message level '{e.Level}' is not supported.");
}
Expand Down Expand Up @@ -456,7 +456,7 @@ private void StartTestRun(TestRunRequestPayload testRunPayload, ITestRequestMana
this.communicationManager.SendMessage(MessageType.TestMessage, testMessagePayload);
var runCompletePayload = new TestRunCompletePayload()
{
TestRunCompleteArgs = new TestRunCompleteEventArgs(null, false, true, ex, null, TimeSpan.MinValue),
TestRunCompleteArgs = new TestRunCompleteEventArgs(null, false, true, ex, null, null, TimeSpan.MinValue),
LastRunTests = null
};

Expand Down
2 changes: 2 additions & 0 deletions src/Microsoft.TestPlatform.Client/Execution/TestRunRequest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -431,6 +431,7 @@ public void HandleTestRunComplete(TestRunCompleteEventArgs runCompleteArgs, Test
runCompleteArgs.Error,
// This is required as TMI adapter is sending attachments as List which cannot be type casted to Collection.
runContextAttachments != null ? new Collection<AttachmentSet>(runContextAttachments.ToList()) : null,
runCompleteArgs.RunDataCollectors,
this.runRequestTimeTracker.Elapsed);

// Ignore the time sent (runCompleteArgs.ElapsedTimeInRunningTests)
Expand Down Expand Up @@ -587,6 +588,7 @@ private void HandleLoggerManagerTestRunComplete(TestRunCompletePayload testRunCo
testRunCompletePayload.TestRunCompleteArgs.IsAborted,
testRunCompletePayload.TestRunCompleteArgs.Error,
testRunCompletePayload.TestRunCompleteArgs.AttachmentSets,
testRunCompletePayload.TestRunCompleteArgs.RunDataCollectors,
this.runRequestTimeTracker.Elapsed);
this.LoggerManager.HandleTestRunComplete(testRunCompleteArgs);
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ internal class InternalTestLoggerEvents : TestLoggerEvents, IDisposable
private bool isBoundsOnLoggerEventQueueEnabled;

private TestSessionMessageLogger testSessionMessageLogger;
#endregion
#endregion

#region Constructor

Expand Down Expand Up @@ -76,7 +76,7 @@ public InternalTestLoggerEvents(TestSessionMessageLogger testSessionMessageLogge
this.testSessionMessageLogger.TestRunMessage += this.TestRunMessageHandler;
}

#endregion
#endregion

#region Events

Expand Down Expand Up @@ -120,7 +120,7 @@ public InternalTestLoggerEvents(TestSessionMessageLogger testSessionMessageLogge
/// </summary>
public override event EventHandler<DiscoveryCompleteEventArgs> DiscoveryComplete;

#endregion
#endregion

#region IDisposable

Expand All @@ -143,7 +143,7 @@ public void Dispose()
this.loggerEventQueue.Dispose();
}

#endregion
#endregion

#region Internal Methods

Expand Down Expand Up @@ -307,12 +307,13 @@ internal void RaiseTestRunComplete(TestRunCompleteEventArgs args)
/// <param name="isAborted">Specifies whether the test run is aborted.</param>
/// <param name="error">Specifies the error that occurs during the test run.</param>
/// <param name="attachmentSet">Run level attachment sets</param>
/// <param name="runCollectors">Run collectors</param>
/// <param name="elapsedTime">Time elapsed in just running the tests.</param>
internal void CompleteTestRun(ITestRunStatistics stats, bool isCanceled, bool isAborted, Exception error, Collection<AttachmentSet> attachmentSet, TimeSpan elapsedTime)
internal void CompleteTestRun(ITestRunStatistics stats, bool isCanceled, bool isAborted, Exception error, Collection<AttachmentSet> attachmentSet, Collection<RunDataCollector> runCollectors, TimeSpan elapsedTime)
{
this.CheckDisposed();

var args = new TestRunCompleteEventArgs(stats, isCanceled, isAborted, error, attachmentSet, elapsedTime);
var args = new TestRunCompleteEventArgs(stats, isCanceled, isAborted, error, attachmentSet, runCollectors, elapsedTime);

// Sending 0 size as this event is not expected to contain any data.
this.SafeInvokeAsync(() => this.TestRunComplete, args, 0, "InternalTestLoggerEvents.SendTestRunComplete");
Expand All @@ -321,7 +322,7 @@ internal void CompleteTestRun(ITestRunStatistics stats, bool isCanceled, bool is
this.loggerEventQueue.Flush();
}

#endregion
#endregion

#region Private Members

Expand Down Expand Up @@ -462,6 +463,6 @@ private int GetSetting(string appSettingKey, int defaultValue)
return value;
}

#endregion
#endregion
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -631,7 +631,7 @@ private void OnTestRunAbort(ITestRunEventsHandler testRunEventsHandler, Exceptio
this.LogErrorMessage(string.Format(CommonResources.AbortedTestRun, reason));

// notify test run abort to vstest console wrapper.
var completeArgs = new TestRunCompleteEventArgs(null, false, true, exception, null, TimeSpan.Zero);
var completeArgs = new TestRunCompleteEventArgs(null, false, true, exception, null, null, TimeSpan.Zero);
var payload = new TestRunCompletePayload { TestRunCompleteArgs = completeArgs };
var rawMessage = this.dataSerializer.SerializePayload(MessageType.ExecutionComplete, payload);
testRunEventsHandler.HandleRawMessage(rawMessage);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ public int StartTestRun(TestRunCriteria testRunCriteria, ITestRunEventsHandler e
eventHandler.HandleLogMessage(TestMessageLevel.Error, exception.ToString());

// Send a run complete to caller.
var completeArgs = new TestRunCompleteEventArgs(null, false, true, exception, new Collection<AttachmentSet>(), TimeSpan.Zero);
var completeArgs = new TestRunCompleteEventArgs(null, false, true, exception, new Collection<AttachmentSet>(), new Collection<RunDataCollector>(), TimeSpan.Zero);
eventHandler.HandleTestRunComplete(completeArgs, null, null, null);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -343,7 +343,7 @@ private void StartTestRunOnConcurrentManager(IProxyExecutionManager proxyExecuti
// Aborted is sent to allow the current execution manager replaced with another instance
// Ensure that the test run aggregator in parallel run events handler doesn't add these statistics
// (since the test run didn't even start)
var completeArgs = new TestRunCompleteEventArgs(null, false, true, null, new Collection<AttachmentSet>(), TimeSpan.Zero);
var completeArgs = new TestRunCompleteEventArgs(null, false, true, null, new Collection<AttachmentSet>(), new Collection<RunDataCollector>(), TimeSpan.Zero);
handler.HandleTestRunComplete(completeArgs, null, null, null);
},
TaskContinuationOptions.OnlyOnFaulted);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public ParallelRunDataAggregator()

public List<AttachmentSet> RunCompleteArgsAttachments { get; }

public List<RunDataCollector> RunDataCollectors { get; set; }
public Collection<RunDataCollector> RunDataCollectors { get; set; }

public List<Exception> Exceptions { get; }

Expand Down Expand Up @@ -140,7 +140,7 @@ public void Aggregate(
bool isCanceled,
ICollection<AttachmentSet> runContextAttachments,
Collection<AttachmentSet> runCompleteArgsAttachments,
RunDataCollector[] runDataCollectors)
Collection<RunDataCollector> runDataCollectors)
{
lock (dataUpdateSyncObject)
{
Expand All @@ -161,16 +161,16 @@ public void Aggregate(
if (executorUris != null) this.executorUris.AddRange(executorUris);
if (testRunStats != null) testRunStatsList.Add(testRunStats);

if (runDataCollectors != null && runDataCollectors.Length > 0)
if (runDataCollectors != null && runDataCollectors.Count > 0)
{
if (this.RunDataCollectors is null)
{
this.RunDataCollectors = new List<RunDataCollector>();
this.RunDataCollectors = new Collection<RunDataCollector>();
}

foreach (var runDataCollector in runDataCollectors)
{
if (!this.RunDataCollectors.Contains(runDataCollector))
if (this.RunDataCollectors.LongCount(c => c.AssemblyQualifiedName == runDataCollector.AssemblyQualifiedName && c.FilePath == runDataCollector.FilePath) == 0)
{
this.RunDataCollectors.Add(runDataCollector);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,6 @@ internal class ParallelRunEventsHandler : ITestRunEventsHandler2

protected IRequestData requestData;

private List<RunDataCollector> runDataCollectors;

public ParallelRunEventsHandler(IRequestData requestData,
IProxyExecutionManager proxyExecutionManager,
ITestRunEventsHandler actualRunEventsHandler,
Expand All @@ -59,27 +57,6 @@ internal ParallelRunEventsHandler(IRequestData requestData,
this.requestData = requestData;
}

internal void AddRunDataCollectors(RunDataCollector[] runDataCollectors)
{
if (runDataAggregator is null)
{
return;
}

foreach (RunDataCollector runDataCollector in runDataCollectors)
{
if (this.runDataCollectors is null)
{
this.runDataCollectors = new List<RunDataCollector>();
}

if (!this.runDataCollectors.Contains(runDataCollector))
{
this.runDataCollectors.Add(runDataCollector);
}
}
}

/// <summary>
/// Handles the Run Complete event from a parallel proxy manager
/// </summary>
Expand All @@ -98,6 +75,7 @@ public virtual void HandleTestRunComplete(
this.runDataAggregator.IsAborted,
this.runDataAggregator.GetAggregatedException(),
new Collection<AttachmentSet>(this.runDataAggregator.RunCompleteArgsAttachments),
new Collection<RunDataCollector>(this.runDataAggregator.RunDataCollectors),
this.runDataAggregator.ElapsedTime);

// Collect Final RunState
Expand Down Expand Up @@ -136,7 +114,7 @@ protected bool HandleSingleTestRunComplete(TestRunCompleteEventArgs testRunCompl
testRunCompleteArgs.IsCanceled,
runContextAttachments,
testRunCompleteArgs.AttachmentSets,
runDataCollectors?.ToArray());
testRunCompleteArgs.RunDataCollectors);

// Aggregate Run Data Metrics
this.runDataAggregator.AggregateRunDataMetrics(testRunCompleteArgs.Metrics);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,7 @@ public virtual int StartTestRun(TestRunCriteria testRunCriteria, ITestRunEventsH
// message ensures another execution manager created to replace the current one.
// This will help if the current execution manager is aborted due to irreparable
// error and the test host is lost as well.
var completeArgs = new TestRunCompleteEventArgs(null, false, true, null, new Collection<AttachmentSet>(), TimeSpan.Zero);
var completeArgs = new TestRunCompleteEventArgs(null, false, true, null, new Collection<AttachmentSet>(), new Collection<RunDataCollector>(), TimeSpan.Zero);
var testRunCompletePayload = new TestRunCompletePayload { TestRunCompleteArgs = completeArgs };
this.HandleRawMessage(this.dataSerializer.SerializePayload(MessageType.ExecutionComplete, testRunCompletePayload));
this.HandleTestRunComplete(completeArgs, null, null, null);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ public void HandleTestRunComplete(TestRunCompleteEventArgs e)
try
{
this.loggerEvents.CompleteTestRun(e.TestRunStatistics, e.IsCanceled, e.IsAborted, e.Error,
e.AttachmentSets, e.ElapsedTimeInRunningTests);
e.AttachmentSets, e.RunDataCollectors, e.ElapsedTimeInRunningTests);
}
finally
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ internal class DataCollectionTestRunEventsHandler : ITestRunEventsHandler2
private CancellationToken cancellationToken;
private IDataSerializer dataSerializer;
private Collection<AttachmentSet> dataCollectionAttachmentSets;
private Collection<RunDataCollector> runDataCollectors;

/// <summary>
/// Initializes a new instance of the <see cref="DataCollectionTestRunEventsHandler"/> class.
Expand Down Expand Up @@ -94,17 +95,21 @@ public void HandleRawMessage(string rawMessage)
{
var dataCollectionResult = this.proxyDataCollectionManager?.AfterTestRunEnd(this.cancellationToken.IsCancellationRequested, this);
this.dataCollectionAttachmentSets = dataCollectionResult?.Attachments;

if (this.testRunEventsHandler is ParallelRunEventsHandler preh)
{
preh.AddRunDataCollectors(dataCollectionResult?.RunDataCollectors.ToArray());
}
this.runDataCollectors = dataCollectionResult?.RunDataCollectors;

if (this.dataCollectionAttachmentSets != null && this.dataCollectionAttachmentSets.Any())
{
var testRunCompletePayload =
this.dataSerializer.DeserializePayload<TestRunCompletePayload>(message);

if (this.runDataCollectors?.Count > 0)
{
foreach (var dataCollector in this.runDataCollectors)
{
testRunCompletePayload.TestRunCompleteArgs.RunDataCollectors.Add(dataCollector);
}
}

GetCombinedAttachmentSets(
testRunCompletePayload.TestRunCompleteArgs.AttachmentSets,
this.dataCollectionAttachmentSets);
Expand Down Expand Up @@ -140,6 +145,14 @@ public void HandleTestRunComplete(TestRunCompleteEventArgs testRunCompleteArgs,
runContextAttachments = GetCombinedAttachmentSets(this.dataCollectionAttachmentSets, runContextAttachments);
}

if (this.runDataCollectors != null && this.runDataCollectors.Any())
{
foreach (var dataCollector in this.runDataCollectors)
{
testRunCompleteArgs.RunDataCollectors.Add(dataCollector);
}
}

this.testRunEventsHandler.HandleTestRunComplete(testRunCompleteArgs, lastChunkArgs, runContextAttachments, executorUris);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,13 +56,14 @@ public override void HandleTestRunComplete(

if (parallelRunComplete)
{
runDataAggregator.RunContextAttachments = attachmentsProcessingManager.ProcessTestRunAttachmentsAsync(requestData, runDataAggregator.RunContextAttachments, runDataAggregator.RunDataCollectors?.ToArray(), cancellationToken).Result ?? runDataAggregator.RunContextAttachments;
runDataAggregator.RunContextAttachments = attachmentsProcessingManager.ProcessTestRunAttachmentsAsync(requestData, runDataAggregator.RunContextAttachments, runDataAggregator.RunDataCollectors, cancellationToken).Result ?? runDataAggregator.RunContextAttachments;

var completedArgs = new TestRunCompleteEventArgs(this.runDataAggregator.GetAggregatedRunStats(),
this.runDataAggregator.IsCanceled,
this.runDataAggregator.IsAborted,
this.runDataAggregator.GetAggregatedException(),
runDataAggregator.RunContextAttachments,
this.runDataAggregator.RunContextAttachments,
this.runDataAggregator.RunDataCollectors,
this.runDataAggregator.ElapsedTime);

// Add Metrics from Test Host
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ public void SendExecutionComplete(
curentArgs.IsCanceled,
curentArgs.IsAborted,
this.messageProcessingUnrecoverableError,
curentArgs.AttachmentSets, curentArgs.ElapsedTimeInRunningTests
curentArgs.AttachmentSets, curentArgs.RunDataCollectors, curentArgs.ElapsedTimeInRunningTests
);
}
var data = this.dataSerializer.SerializePayload(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -662,6 +662,7 @@ private void RaiseTestRunComplete(
aborted,
exception,
attachments,
new Collection<RunDataCollector>(), // TODO: understand what to do here?!?!?!?!?
elapsedTime);
testRunCompleteEventArgs.Metrics = this.requestData.MetricsCollection.Metrics;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ public void Cancel(ITestRunEventsHandler testRunEventsHandler)
{
if (this.activeTestRun == null)
{
var testRunCompleteEventArgs = new TestRunCompleteEventArgs(null, true, false, null, null, TimeSpan.Zero);
var testRunCompleteEventArgs = new TestRunCompleteEventArgs(null, true, false, null, null, null, TimeSpan.Zero);
testRunEventsHandler.HandleTestRunComplete(testRunCompleteEventArgs, null, null, null);
}
else
Expand All @@ -174,7 +174,7 @@ public void Abort(ITestRunEventsHandler testRunEventsHandler)
{
if (this.activeTestRun == null)
{
var testRunCompleteEventArgs = new TestRunCompleteEventArgs(null, false, true, null, null, TimeSpan.Zero);
var testRunCompleteEventArgs = new TestRunCompleteEventArgs(null, false, true, null, null, null, TimeSpan.Zero);
testRunEventsHandler.HandleTestRunComplete(testRunCompleteEventArgs, null, null, null);
}
else
Expand Down
Loading

0 comments on commit 9b61fb4

Please sign in to comment.