Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding test run attachments processing #2463

Merged
merged 62 commits into from Jul 2, 2020
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
7efc5c2
v1
jakubch1 May 7, 2020
8e88dea
Merging v1
jakubch1 May 19, 2020
3851666
Merge branch 'master' into dev/jachocho/1114286_merging
jakubch1 May 21, 2020
1cae4c5
Rename to MultiTestRunsFinalization
jakubch1 May 21, 2020
04aac62
New version
jakubch1 May 21, 2020
91c8785
More changes
jakubch1 May 21, 2020
d799be6
More changes
jakubch1 May 21, 2020
872bbcc
Next changes
jakubch1 May 22, 2020
69340a5
Fix
jakubch1 May 22, 2020
e23d24d
test
jakubch1 May 25, 2020
6189eb0
More changes
jakubch1 Jun 2, 2020
4870e7c
Merge branch 'master' into dev/jachocho/1114286_merging
jakubch1 Jun 4, 2020
97ab178
Dmc chagnes
jakubch1 Jun 9, 2020
2314550
next
jakubch1 Jun 9, 2020
e7b839f
small changes
jakubch1 Jun 10, 2020
6aa2912
compiled
jakubch1 Jun 10, 2020
29d618d
More changes
jakubch1 Jun 10, 2020
44c5fdc
acceptance tests green
jakubch1 Jun 10, 2020
39f3f84
Review comments #1
jakubch1 Jun 11, 2020
d56baf6
Resolving more comments
jakubch1 Jun 11, 2020
c5a7134
Tests for design mode client
jakubch1 Jun 11, 2020
daaef85
Tests for events handler
jakubch1 Jun 11, 2020
7d7d8a1
revert not related changes
jakubch1 Jun 11, 2020
5ae0b3a
More changes
jakubch1 Jun 12, 2020
a9eee9c
Compiling OK, tests OK
jakubch1 Jun 12, 2020
08b646a
Unit tests for manager
jakubch1 Jun 15, 2020
e16e3ad
More changes
jakubch1 Jun 15, 2020
cbca05a
More tests
jakubch1 Jun 16, 2020
3176175
tests for reqeust sender
jakubch1 Jun 16, 2020
89f7eed
more tests
jakubch1 Jun 16, 2020
3c3c631
Tests for cancelling
jakubch1 Jun 16, 2020
eeb7963
Acceptance tests done
jakubch1 Jun 16, 2020
bbb2244
Remove not used stuff
jakubch1 Jun 16, 2020
4d61a92
Fix comments
jakubch1 Jun 16, 2020
74f971f
Merge branch 'master' into dev/jachocho/1114286_merging
jakubch1 Jun 16, 2020
1190895
Fix race condition in test
jakubch1 Jun 16, 2020
82bb3de
Fix another race condition
jakubch1 Jun 16, 2020
9376adb
Fix converting to xml
jakubch1 Jun 16, 2020
be9537b
fix next test
jakubch1 Jun 16, 2020
f157e24
fix test
jakubch1 Jun 16, 2020
b25a64e
Next changes
jakubch1 Jun 17, 2020
fc7a1c0
Review changes #1
jakubch1 Jun 19, 2020
bcd0673
Fixing multi test finalization manager tests
jakubch1 Jun 19, 2020
147f23e
Fixes
jakubch1 Jun 19, 2020
5d18566
Fix last unit test
jakubch1 Jun 19, 2020
f4c121a
Fix acceptance tests
jakubch1 Jun 19, 2020
1b56b78
Progress feature, compiling + unit tests
jakubch1 Jun 22, 2020
6c308b5
acceptance tests changes
jakubch1 Jun 22, 2020
4f1ede1
More changes
jakubch1 Jun 22, 2020
e635ec5
Fixing resources accesability
jakubch1 Jun 22, 2020
303cee8
Fix test
jakubch1 Jun 22, 2020
676c02b
Fix race conditions in acceptance tests
jakubch1 Jun 23, 2020
25849e9
Merge remote-tracking branch 'upstream/master' into dev/jachocho/1114…
jakubch1 Jun 30, 2020
571028e
RFC changes merged
jakubch1 Jun 30, 2020
2afcc44
Log warning in case of unexpected message id
jakubch1 Jul 1, 2020
ebf1a79
Fix spelling
jakubch1 Jul 1, 2020
e37a6f7
Additional comment
jakubch1 Jul 1, 2020
5e51a03
Restore some stuff in interfaces
jakubch1 Jul 1, 2020
1267291
Big renaming
jakubch1 Jul 1, 2020
1aee79f
Added processingSettings
jakubch1 Jul 1, 2020
74cb25e
Fix naming
jakubch1 Jul 1, 2020
8468ec0
Move explanation to <remarks>
jakubch1 Jul 2, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
@@ -1,7 +1,7 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

namespace Microsoft.VisualStudio.TestPlatform.Client.MultiTestRunFinalization
namespace Microsoft.VisualStudio.TestPlatform.Client.TestRunAttachmentsProcessing
{
using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces;
using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel;
Expand All @@ -11,47 +11,48 @@ namespace Microsoft.VisualStudio.TestPlatform.Client.MultiTestRunFinalization
using System.Collections.Generic;

/// <summary>
/// The multi test finalization events handler.
/// The test run attachments processing events handler.
/// </summary>
public class MultiTestRunFinalizationEventsHandler : IMultiTestRunFinalizationEventsHandler
///
public class TestRunAttachmentsProcessingEventsHandler : ITestRunAttachmentsProcessingEventsHandler
{
private readonly ICommunicationManager communicationManager;

/// <summary>
/// Initializes a new instance of the <see cref="MultiTestRunFinalizationEventsHandler"/> class.
/// Initializes a new instance of the <see cref="TestRunAttachmentsProcessingEventsHandler"/> class.
/// </summary>
/// <param name="communicationManager"> The communication manager. </param>
public MultiTestRunFinalizationEventsHandler(ICommunicationManager communicationManager)
public TestRunAttachmentsProcessingEventsHandler(ICommunicationManager communicationManager)
{
this.communicationManager = communicationManager;
}

/// <inheritdoc/>
public void HandleMultiTestRunFinalizationComplete(MultiTestRunFinalizationCompleteEventArgs finalizationCompleteEventArgs, IEnumerable<AttachmentSet> lastChunk)
public void HandleTestRunAttachmentsProcessingComplete(TestRunAttachmentsProcessingCompleteEventArgs attachmentsProcessingCompleteEventArgs, IEnumerable<AttachmentSet> lastChunk)
{
if (EqtTrace.IsInfoEnabled)
{
EqtTrace.Info("Multi test run finalization completed.");
EqtTrace.Info("Test run attachments processing completed.");
}

var payload = new MultiTestRunFinalizationCompletePayload()
var payload = new TestRunAttachmentsProcessingCompletePayload()
{
FinalizationCompleteEventArgs = finalizationCompleteEventArgs,
AttachmentsProcessingCompleteEventArgs = attachmentsProcessingCompleteEventArgs,
Attachments = lastChunk
};

this.communicationManager.SendMessage(MessageType.MultiTestRunFinalizationComplete, payload);
this.communicationManager.SendMessage(MessageType.TestRunAttachmentsProcessingComplete, payload);
}

/// <inheritdoc/>
public void HandleMultiTestRunFinalizationProgress(MultiTestRunFinalizationProgressEventArgs finalizationProgressEventArgs)
public void HandleTestRunAttachmentsProcessingProgress(TestRunAttachmentsProcessingProgressEventArgs attachmentsProcessingProgressEventArgs)
{
var payload = new MultiTestRunFinalizationProgressPayload()
var payload = new TestRunAttachmentsProcessingProgressPayload()
{
FinalizationProgressEventArgs = finalizationProgressEventArgs,
AttachmentsProcessingProgressEventArgs = attachmentsProcessingProgressEventArgs,
};

this.communicationManager.SendMessage(MessageType.MultiTestRunFinalizationProgress, payload);
this.communicationManager.SendMessage(MessageType.TestRunAttachmentsProcessingProgress, payload);
}

/// <inheritdoc/>
Expand Down
24 changes: 12 additions & 12 deletions src/Microsoft.TestPlatform.Client/DesignMode/DesignModeClient.cs
Expand Up @@ -9,7 +9,7 @@ namespace Microsoft.VisualStudio.TestPlatform.Client.DesignMode
using System.Net;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestPlatform.Client.MultiTestRunFinalization;
using Microsoft.VisualStudio.TestPlatform.Client.TestRunAttachmentsProcessing;
using Microsoft.VisualStudio.TestPlatform.Client.RequestHelper;
using Microsoft.VisualStudio.TestPlatform.Common.Logging;
using Microsoft.VisualStudio.TestPlatform.Common.Utilities;
Expand Down Expand Up @@ -199,11 +199,11 @@ private void ProcessRequests(ITestRequestManager testRequestManager)
break;
}

case MessageType.MultiTestRunFinalizationStart:
case MessageType.TestRunAttachmentsProcessingStart:
{
var multiTestRunFinalizationPayload =
this.communicationManager.DeserializePayload<MultiTestRunFinalizationPayload>(message);
this.StartMultiTestRunFinalization(multiTestRunFinalizationPayload, testRequestManager);
var testRunAttachmentsProcessingPayload =
this.communicationManager.DeserializePayload<TestRunAttachmentsProcessingPayload>(message);
this.StartTestRunAttachmentsProcessing(testRunAttachmentsProcessingPayload, testRequestManager);
break;
}

Expand All @@ -225,9 +225,9 @@ private void ProcessRequests(ITestRequestManager testRequestManager)
break;
}

case MessageType.MultiTestRunFinalizationCancel:
case MessageType.TestRunAttachmentsProcessingCancel:
{
testRequestManager.CancelMultiTestRunFinalization();
testRequestManager.CancelTestRunAttachmentsProcessing();
break;
}

Expand Down Expand Up @@ -472,29 +472,29 @@ private void StartDiscovery(DiscoveryRequestPayload discoveryRequestPayload, ITe
});
}

private void StartMultiTestRunFinalization(MultiTestRunFinalizationPayload finalizationPayload, ITestRequestManager testRequestManager)
private void StartTestRunAttachmentsProcessing(TestRunAttachmentsProcessingPayload attachmentsProcessingPayload, ITestRequestManager testRequestManager)
{
Task.Run(
delegate
{
try
{
testRequestManager.FinalizeMultiTestRun(finalizationPayload, new MultiTestRunFinalizationEventsHandler(this.communicationManager), this.protocolConfig);
testRequestManager.ProcessTestRunAttachments(attachmentsProcessingPayload, new TestRunAttachmentsProcessingEventsHandler(this.communicationManager), this.protocolConfig);
}
catch (Exception ex)
{
EqtTrace.Error("DesignModeClient: Exception in StartMultiTestRunFinalization: " + ex);
EqtTrace.Error("DesignModeClient: Exception in StartTestRunAttachmentsProcessing: " + ex);

var testMessagePayload = new TestMessagePayload { MessageLevel = TestMessageLevel.Error, Message = ex.ToString() };
this.communicationManager.SendMessage(MessageType.TestMessage, testMessagePayload);

var payload = new MultiTestRunFinalizationCompletePayload()
var payload = new TestRunAttachmentsProcessingCompletePayload()
{
Attachments = null
};

// Send run complete to translation layer
this.communicationManager.SendMessage(MessageType.MultiTestRunFinalizationComplete, payload);
this.communicationManager.SendMessage(MessageType.TestRunAttachmentsProcessingComplete, payload);
}
});
}
Expand Down
Expand Up @@ -45,11 +45,11 @@ public interface ITestRequestManager : IDisposable
void RunTests(TestRunRequestPayload testRunRequestPayLoad, ITestHostLauncher customTestHostLauncher, ITestRunEventsRegistrar testRunEventsRegistrar, ProtocolConfig protocolConfig);

/// <summary>
/// Finalize multi test run
/// Processes test run attachments
/// </summary>
/// <param name="multiTestRunFinalizationPayload">Multi test run finalization payload</param>
/// <param name="multiTestRunFinalizationEventsHandler">Multi test run finalization events handler</param>
void FinalizeMultiTestRun(MultiTestRunFinalizationPayload multiTestRunFinalizationPayload, IMultiTestRunFinalizationEventsHandler multiTestRunFinalizationEventsHandler, ProtocolConfig protocolConfig);
/// <param name="testRunAttachmentsProcessingPayload">Test run attachments processing payload</param>
/// <param name="testRunAttachmentsProcessingEventsHandler">Test run attachments processing events handler</param>
void ProcessTestRunAttachments(TestRunAttachmentsProcessingPayload testRunAttachmentsProcessingPayload, ITestRunAttachmentsProcessingEventsHandler testRunAttachmentsProcessingEventsHandler, ProtocolConfig protocolConfig);

/// <summary>
/// Cancel the current TestRun request
Expand All @@ -67,8 +67,8 @@ public interface ITestRequestManager : IDisposable
void CancelDiscovery();

/// <summary>
/// Cancels the current multi test run finalization request
/// Cancels the current test run attachments processing request
/// </summary>
void CancelMultiTestRunFinalization();
void CancelTestRunAttachmentsProcessing();
}
}
Expand Up @@ -10,24 +10,24 @@
namespace Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine
{
/// <summary>
/// Orchestrates multi test run finalization operations.
/// Orchestrates test run attachments processing operations.
/// </summary>
internal interface IMultiTestRunFinalizationManager
internal interface ITestRunAttachmentsProcessingManager
{
/// <summary>
/// Finalizes multi test run and provides results through handler
/// Processes attachments and provides results through handler
/// </summary>
/// <param name="attachments">Collection of attachments</param>
/// <param name="eventHandler">EventHandler for handling multi test run finalization event</param>
/// <param name="eventHandler">EventHandler for handling test run attachments processing event</param>
/// <param name="cancellationToken">Cancellation token</param>
Task FinalizeMultiTestRunAsync(IRequestData requestData, IEnumerable<AttachmentSet> attachments, IMultiTestRunFinalizationEventsHandler eventHandler, CancellationToken cancellationToken);
Task ProcessTestRunAttachmentsAsync(IRequestData requestData, IEnumerable<AttachmentSet> attachments, ITestRunAttachmentsProcessingEventsHandler eventHandler, CancellationToken cancellationToken);

/// <summary>
/// Finalizes multi test run
/// Processes attachments
/// </summary>
/// <param name="attachments">Collection of attachments</param>
/// <param name="cancellationToken">Cancellation token</param>
/// <returns>Collection of attachments.</returns>
Task<Collection<AttachmentSet>> FinalizeMultiTestRunAsync(IRequestData requestData, IEnumerable<AttachmentSet> attachments, CancellationToken cancellationToken);
Task<Collection<AttachmentSet>> ProcessTestRunAttachmentsAsync(IRequestData requestData, IEnumerable<AttachmentSet> attachments, CancellationToken cancellationToken);
}
}
Expand Up @@ -90,19 +90,19 @@ public static class TelemetryDataConstants

public static string NumberOfAdapterUsedToDiscoverTests = "VS.TestDiscovery.AdaptersUsedCount";

// *********************Finalization****************************
public static string NumberOfAttachmentsSentForFinalization = "VS.TestFinalization.InitialAttachmentsCount";
// *********************Attachments Processing****************************
public static string NumberOfAttachmentsSentForProcessing = "VS.AttachmentsProcessing.InitialAttachmentsCount";

public static string NumberOfAttachmentsAfterFinalization = "VS.TestFinalization.FinalAttachmentsCount";
public static string NumberOfAttachmentsAfterProcessing = "VS.AttachmentsProcessing.FinalAttachmentsCount";

public static string TimeTakenInSecForFinalization = "VS.TestFinalization.TotalTimeTakenInSec";
public static string FinalizationState = "VS.TestFinalization.FinalizationState";
public static string TimeTakenInSecForAttachmentsProcessing = "VS.AttachmentsProcessing.TotalTimeTakenInSec";
public static string AttachmentsProcessingState = "VS.AttachmentsProcessing.State";

// **************Events Name **********************************
public static string TestDiscoveryCompleteEvent = "vs/testplatform/testdiscoverysession";

public static string TestExecutionCompleteEvent = "vs/testplatform/testrunsession";

public static string TestFinalizationCompleteEvent = "vs/testplatform/testfinalizationsession";
public static string TestAttachmentsProcessingCompleteEvent = "vs/testplatform/testattachmentsprocessingsession";
}
}
Expand Up @@ -124,24 +124,24 @@ public static class MessageType
public const string CustomTestHostLaunchCallback = "TestExecution.CustomTestHostLaunchCallback";

/// <summary>
/// Multi test run finalization
/// Test run attachments processing
/// </summary>
public const string MultiTestRunFinalizationStart = "MultiTestRunFinalization.Start";
public const string TestRunAttachmentsProcessingStart = "TestRunAttachmentsProcessing.Start";

/// <summary>
/// Multi test run finalization callback
/// Test run attachments processing callback
/// </summary>
public const string MultiTestRunFinalizationComplete = "MultiTestRunFinalization.Complete";
public const string TestRunAttachmentsProcessingComplete = "TestRunAttachmentsProcessing.Complete";

/// <summary>
/// Multi test run finalization progress
/// Test run attachments processing progress
/// </summary>
public const string MultiTestRunFinalizationProgress = "MultiTestRunFinalization.Progress";
public const string TestRunAttachmentsProcessingProgress = "TestRunAttachmentsProcessing.Progress";

/// <summary>
/// Cancel multi test run finalization
/// Cancel test run attachments processing
/// </summary>
public const string MultiTestRunFinalizationCancel = "MultiTestRunFinalization.Cancel";
public const string TestRunAttachmentsProcessingCancel = "TestRunAttachmentsProcessing.Cancel";

/// <summary>
/// Extensions Initialization
Expand Down
Expand Up @@ -9,14 +9,14 @@ namespace Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel
using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client;

/// <summary>
/// Multi test run finalization complete payload.
/// Test run attachments processing complete payload.
/// </summary>
public class MultiTestRunFinalizationCompletePayload
public class TestRunAttachmentsProcessingCompletePayload
{
/// <summary>
/// Gets or sets the multi test run finalization complete args.
/// Gets or sets the test run attachments processing complete args.
/// </summary>
public MultiTestRunFinalizationCompleteEventArgs FinalizationCompleteEventArgs { get; set; }
public TestRunAttachmentsProcessingCompleteEventArgs AttachmentsProcessingCompleteEventArgs { get; set; }

/// <summary>
/// Gets or sets the attachments.
Expand Down
Expand Up @@ -6,13 +6,13 @@ namespace Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel
using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client;

/// <summary>
/// Multi test run finalization complete payload.
/// Test run attachments processing complete payload.
/// </summary>
public class MultiTestRunFinalizationProgressPayload
public class TestRunAttachmentsProcessingProgressPayload
{
/// <summary>
/// Gets or sets the multi test run finalization complete args.
/// Gets or sets the test run attachments processing complete args.
/// </summary>
public MultiTestRunFinalizationProgressEventArgs FinalizationProgressEventArgs { get; set; }
public TestRunAttachmentsProcessingProgressEventArgs AttachmentsProcessingProgressEventArgs { get; set; }
}
}
Expand Up @@ -184,39 +184,39 @@ public interface ITestPlatformEventSource
void MetricsDisposeStop();

/// <summary>
/// The multi test run finalization request start.
/// The test run attachments processing request start.
/// </summary>
void MultiTestRunFinalizationRequestStart();
void TestRunAttachmentsProcessingRequestStart();

/// <summary>
/// The multi test run finalization request stop.
/// The test run attachments processing request stop.
/// </summary>
void MultiTestRunFinalizationRequestStop();
void TestRunAttachmentsProcessingRequestStop();

/// <summary>
/// The multi test run finalization start.
/// The test run attachments processing start.
/// </summary>
/// <param name="numberOfAttachments">
/// The number of attachments.
/// </param>
void MultiTestRunFinalizationStart(long numberOfAttachments);
void TestRunAttachmentsProcessingStart(long numberOfAttachments);

/// <summary>
/// The multi test run finalization stop.
/// The test run attachments processing stop.
/// </summary>
/// <param name="numberOfAttachments">
/// The number of attachments.
/// </param>
void MultiTestRunFinalizationStop(long numberOfAttachments);
void TestRunAttachmentsProcessingStop(long numberOfAttachments);

/// <summary>
/// Mark the start of translation layer multi test run finalization request.
/// Mark the start of translation layer test run attachments processing request.
/// </summary>
void TranslationLayerMultiTestRunFinalizationStart();
void TranslationLayerTestRunAttachmentsProcessingStart();

/// <summary>
/// Mark the completion of translation layer multi test run finalization request.
/// Mark the completion of translation layer test run attachments processing request.
/// </summary>
void TranslationLayerMultiTestRunFinalizationStop();
void TranslationLayerTestRunAttachmentsProcessingStop();
}
}