Skip to content

Commit

Permalink
Next changes
Browse files Browse the repository at this point in the history
  • Loading branch information
jakubch1 committed Jun 17, 2020
1 parent f157e24 commit b25a64e
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 44 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public MultiTestRunFinalizationManager(ITestPlatformEventSource testPlatformEven
/// <inheritdoc/>
public async Task FinalizeMultiTestRunAsync(ICollection<AttachmentSet> attachments, IMultiTestRunFinalizationEventsHandler eventHandler, CancellationToken cancellationToken)
{
await InternalFinalizeMultiTestRunAsync(new Collection<AttachmentSet>(attachments.ToList()), eventHandler, cancellationToken);
await InternalFinalizeMultiTestRunAsync(new Collection<AttachmentSet>(attachments.ToList()), eventHandler, cancellationToken).ConfigureAwait(false);
}

/// <inheritdoc/>
Expand All @@ -53,30 +53,28 @@ private async Task<Collection<AttachmentSet>> InternalFinalizeMultiTestRunAsync(
cancellationToken.ThrowIfCancellationRequested();

var taskCompletionSource = new TaskCompletionSource<object>();
cancellationToken.Register(() =>
using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
taskCompletionSource.TrySetCanceled();
});

Task task = Task.Run(() =>
{
HandleAttachments(attachments, cancellationToken);
});
Task task = Task.Run(() =>
{
HandleAttachments(attachments, cancellationToken);
});

var completedTask = await Task.WhenAny(task, taskCompletionSource.Task);
var completedTask = await Task.WhenAny(task, taskCompletionSource.Task).ConfigureAwait(false);

if (completedTask == task)
{
await task;
eventHandler?.HandleMultiTestRunFinalizationComplete(attachments);
testPlatformEventSource.MultiTestRunFinalizationStop(attachments.Count);
return attachments;
}
else
{
eventHandler?.HandleLogMessage(ObjectModel.Logging.TestMessageLevel.Informational, "Finalization was cancelled.");
eventHandler?.HandleMultiTestRunFinalizationComplete(null);
testPlatformEventSource.MultiTestRunFinalizationStop(0);
if (completedTask == task)
{
await task;
eventHandler?.HandleMultiTestRunFinalizationComplete(attachments);
testPlatformEventSource.MultiTestRunFinalizationStop(attachments.Count);
return attachments;
}
else
{
eventHandler?.HandleLogMessage(ObjectModel.Logging.TestMessageLevel.Informational, "Finalization was cancelled.");
eventHandler?.HandleMultiTestRunFinalizationComplete(null);
testPlatformEventSource.MultiTestRunFinalizationStop(0);
}
}

return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -742,31 +742,32 @@ private async Task SendMessageAndListenAndReportFinalizationResultAsync(ICollect
this.communicationManager.SendMessage(MessageType.MultiTestRunFinalizationStart, payload);
var isMultiTestRunFinalizationComplete = false;

cancellationToken.Register(() => this.communicationManager.SendMessage(MessageType.MultiTestRunFinalizationCancel));

// Cycle through the messages that the vstest.console sends.
// Currently each of the operations are not separate tasks since they should not each take much time.
// This is just a notification.
while (!isMultiTestRunFinalizationComplete)
using (cancellationToken.Register(() => this.communicationManager.SendMessage(MessageType.MultiTestRunFinalizationCancel)))
{
var message = await this.TryReceiveMessageAsync();

if (string.Equals(MessageType.MultiTestRunFinalizationComplete, message.MessageType))
// Cycle through the messages that the vstest.console sends.
// Currently each of the operations are not separate tasks since they should not each take much time.
// This is just a notification.
while (!isMultiTestRunFinalizationComplete)
{
if (EqtTrace.IsInfoEnabled)
var message = await this.TryReceiveMessageAsync().ConfigureAwait(false);

if (string.Equals(MessageType.MultiTestRunFinalizationComplete, message.MessageType))
{
EqtTrace.Info("VsTestConsoleRequestSender.SendMessageAndListenAndReportAttachments: Process complete.");
}
if (EqtTrace.IsInfoEnabled)
{
EqtTrace.Info("VsTestConsoleRequestSender.SendMessageAndListenAndReportAttachments: Process complete.");
}

var multiTestRunFinalizationCompletePayload = this.dataSerializer.DeserializePayload<MultiTestRunFinalizationCompletePayload>(message);
var multiTestRunFinalizationCompletePayload = this.dataSerializer.DeserializePayload<MultiTestRunFinalizationCompletePayload>(message);

eventHandler.HandleMultiTestRunFinalizationComplete(multiTestRunFinalizationCompletePayload.Attachments);
isMultiTestRunFinalizationComplete = true;
}
else if (string.Equals(MessageType.TestMessage, message.MessageType))
{
var testMessagePayload = this.dataSerializer.DeserializePayload<TestMessagePayload>(message);
eventHandler.HandleLogMessage(testMessagePayload.MessageLevel, testMessagePayload.Message);
eventHandler.HandleMultiTestRunFinalizationComplete(multiTestRunFinalizationCompletePayload.Attachments);
isMultiTestRunFinalizationComplete = true;
}
else if (string.Equals(MessageType.TestMessage, message.MessageType))
{
var testMessagePayload = this.dataSerializer.DeserializePayload<TestMessagePayload>(message);
eventHandler.HandleLogMessage(testMessagePayload.MessageLevel, testMessagePayload.Message);
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -228,8 +228,8 @@ public async Task FinalizeMultiTestRunAsync(ICollection<AttachmentSet> attachmen
{
this.testPlatformEventSource.TranslationLayerMultiTestRunFinalizationStart();

await this.EnsureInitializedAsync();
await requestSender.FinalizeMultiTestRunAsync(attachments, testSessionEventsHandler, cancellationToken);
await this.EnsureInitializedAsync().ConfigureAwait(false);
await requestSender.FinalizeMultiTestRunAsync(attachments, testSessionEventsHandler, cancellationToken).ConfigureAwait(false);
}

/// <inheritdoc/>
Expand Down

0 comments on commit b25a64e

Please sign in to comment.