diff --git a/TestPlatform.sln b/TestPlatform.sln
index 3d1e2b6080..1ec85c83de 100644
--- a/TestPlatform.sln
+++ b/TestPlatform.sln
@@ -124,6 +124,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SimpleTestProject3", "test\
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "datacollector.UnitTests", "test\datacollector.UnitTests\datacollector.UnitTests.csproj", "{0C6EFAF9-CE3E-4C11-8DD8-D7DABB206E5C}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "datacollector.PlatformTests", "test\datacollector.PlatformTests\datacollector.PlatformTests.csproj", "{FF80D706-8309-4E02-BAC0-D28B4CBCF600}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OutOfProcDataCollector", "test\TestAssets\OutOfProcDataCollector\OutOfProcDataCollector.csproj", "{CB6FA3C6-38E2-4DD1-AAB7-A705EFE114BC}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -686,6 +690,30 @@ Global
{0C6EFAF9-CE3E-4C11-8DD8-D7DABB206E5C}.Release|x64.Build.0 = Release|x64
{0C6EFAF9-CE3E-4C11-8DD8-D7DABB206E5C}.Release|x86.ActiveCfg = Release|x86
{0C6EFAF9-CE3E-4C11-8DD8-D7DABB206E5C}.Release|x86.Build.0 = Release|x86
+ {FF80D706-8309-4E02-BAC0-D28B4CBCF600}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FF80D706-8309-4E02-BAC0-D28B4CBCF600}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FF80D706-8309-4E02-BAC0-D28B4CBCF600}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {FF80D706-8309-4E02-BAC0-D28B4CBCF600}.Debug|x64.Build.0 = Debug|Any CPU
+ {FF80D706-8309-4E02-BAC0-D28B4CBCF600}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {FF80D706-8309-4E02-BAC0-D28B4CBCF600}.Debug|x86.Build.0 = Debug|Any CPU
+ {FF80D706-8309-4E02-BAC0-D28B4CBCF600}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FF80D706-8309-4E02-BAC0-D28B4CBCF600}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FF80D706-8309-4E02-BAC0-D28B4CBCF600}.Release|x64.ActiveCfg = Release|Any CPU
+ {FF80D706-8309-4E02-BAC0-D28B4CBCF600}.Release|x64.Build.0 = Release|Any CPU
+ {FF80D706-8309-4E02-BAC0-D28B4CBCF600}.Release|x86.ActiveCfg = Release|Any CPU
+ {FF80D706-8309-4E02-BAC0-D28B4CBCF600}.Release|x86.Build.0 = Release|Any CPU
+ {CB6FA3C6-38E2-4DD1-AAB7-A705EFE114BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CB6FA3C6-38E2-4DD1-AAB7-A705EFE114BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CB6FA3C6-38E2-4DD1-AAB7-A705EFE114BC}.Debug|x64.ActiveCfg = Debug|x64
+ {CB6FA3C6-38E2-4DD1-AAB7-A705EFE114BC}.Debug|x64.Build.0 = Debug|x64
+ {CB6FA3C6-38E2-4DD1-AAB7-A705EFE114BC}.Debug|x86.ActiveCfg = Debug|x86
+ {CB6FA3C6-38E2-4DD1-AAB7-A705EFE114BC}.Debug|x86.Build.0 = Debug|x86
+ {CB6FA3C6-38E2-4DD1-AAB7-A705EFE114BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CB6FA3C6-38E2-4DD1-AAB7-A705EFE114BC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CB6FA3C6-38E2-4DD1-AAB7-A705EFE114BC}.Release|x64.ActiveCfg = Release|x64
+ {CB6FA3C6-38E2-4DD1-AAB7-A705EFE114BC}.Release|x64.Build.0 = Release|x64
+ {CB6FA3C6-38E2-4DD1-AAB7-A705EFE114BC}.Release|x86.ActiveCfg = Release|x86
+ {CB6FA3C6-38E2-4DD1-AAB7-A705EFE114BC}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -743,5 +771,7 @@ Global
{0D85D957-6FF2-4620-B766-B708801D97F3} = {8DA7CBD9-F17E-41B6-90C4-CFF55848A25A}
{9549C1A4-CB57-4689-B3EB-F752F65F863F} = {8DA7CBD9-F17E-41B6-90C4-CFF55848A25A}
{0C6EFAF9-CE3E-4C11-8DD8-D7DABB206E5C} = {B27FAFDF-2DBA-4AB0-BA85-FD5F21D359D6}
+ {FF80D706-8309-4E02-BAC0-D28B4CBCF600} = {B27FAFDF-2DBA-4AB0-BA85-FD5F21D359D6}
+ {CB6FA3C6-38E2-4DD1-AAB7-A705EFE114BC} = {8DA7CBD9-F17E-41B6-90C4-CFF55848A25A}
EndGlobalSection
EndGlobal
diff --git a/src/Microsoft.TestPlatform.Client/Execution/TestRunRequest.cs b/src/Microsoft.TestPlatform.Client/Execution/TestRunRequest.cs
index 1704c1a66b..3a903b2802 100644
--- a/src/Microsoft.TestPlatform.Client/Execution/TestRunRequest.cs
+++ b/src/Microsoft.TestPlatform.Client/Execution/TestRunRequest.cs
@@ -15,6 +15,7 @@ namespace Microsoft.VisualStudio.TestPlatform.Client.Execution
using Microsoft.VisualStudio.TestPlatform.Utilities;
using ClientResources = Microsoft.VisualStudio.TestPlatform.Client.Resources.Resources;
+ using System.Collections.ObjectModel;
public class TestRunRequest : ITestRunRequest, ITestRunEventsHandler
{
@@ -26,7 +27,7 @@ internal TestRunRequest(TestRunCriteria testRunCriteria, IProxyExecutionManager
EqtTrace.Verbose("TestRunRequest.ExecuteAsync: Creating test run request.");
this.testRunCriteria = testRunCriteria;
this.ExecutionManager = executionManager;
-
+
this.State = TestRunState.Pending;
}
@@ -39,7 +40,7 @@ internal TestRunRequest(TestRunCriteria testRunCriteria, IProxyExecutionManager
public int ExecuteAsync()
{
EqtTrace.Verbose("TestRunRequest.ExecuteAsync: Starting.");
-
+
lock (this.syncObject)
{
if (this.disposed)
@@ -53,17 +54,17 @@ public int ExecuteAsync()
}
EqtTrace.Info("TestRunRequest.ExecuteAsync: Starting run with settings:{0}", this.testRunCriteria);
-
+
// Waiting for warm up to be over.
EqtTrace.Verbose("TestRunRequest.ExecuteAsync: Wait for the first run request is over.");
-
+
this.State = TestRunState.InProgress;
// Reset the run completion event
// (This needs to be done before queuing the test run because if the test run finishes fast then runCompletion event can
// remain in non-signaled state even though run is actually complete.
this.runCompletionEvent.Reset();
-
+
try
{
this.runRequestTimeTracker = new Stopwatch();
@@ -72,7 +73,7 @@ public int ExecuteAsync()
this.runRequestTimeTracker.Start();
int processId = this.ExecutionManager.StartTestRun(this.testRunCriteria, this);
EqtTrace.Info("TestRunRequest.ExecuteAsync: Started.");
-
+
return processId;
}
catch
@@ -88,8 +89,8 @@ public int ExecuteAsync()
///
public bool WaitForCompletion(int timeout)
{
- EqtTrace.Verbose("TestRunRequest.WaitForCompletion: Waiting with timeout {0}.", timeout);
-
+ EqtTrace.Verbose("TestRunRequest.WaitForCompletion: Waiting with timeout {0}.", timeout);
+
if (this.disposed)
{
throw new ObjectDisposedException("testRunRequest");
@@ -122,7 +123,7 @@ public bool WaitForCompletion(int timeout)
public void CancelAsync()
{
EqtTrace.Verbose("TestRunRequest.CancelAsync: Canceling.");
-
+
lock (this.syncObject)
{
if (this.disposed)
@@ -132,7 +133,7 @@ public void CancelAsync()
if (this.State != TestRunState.InProgress)
{
- EqtTrace.Info("Ignoring TestRunRequest.CancelAsync(). No test run in progress.");
+ EqtTrace.Info("Ignoring TestRunRequest.CancelAsync(). No test run in progress.");
}
else
{
@@ -170,7 +171,7 @@ public void Abort()
EqtTrace.Info("TestRunRequest.Abort: Aborted.");
}
-
+
///
/// Specifies the test run criteria
@@ -194,13 +195,13 @@ public ITestRunConfiguration TestRunConfiguration
/// Raised when the test message is received.
///
public event EventHandler TestRunMessage;
-
+
///
/// Raised when the test run completes.
///
public event EventHandler OnRunCompletion;
-
+
///
/// Raised when data collection message is received.
@@ -291,7 +292,7 @@ public void HandleTestRunComplete(TestRunCompleteEventArgs runCompleteArgs, Test
runCompleteArgs.IsCanceled,
runCompleteArgs.IsAborted,
runCompleteArgs.Error,
- null,
+ runContextAttachments as Collection,
this.runRequestTimeTracker.Elapsed);
// Ignore the time sent (runCompleteArgs.ElapsedTimeInRunningTests)
@@ -363,7 +364,6 @@ public virtual void HandleTestRunStatsChange(TestRunChangedEventArgs testRunChan
EqtTrace.Info("TestRunRequest:SendTestRunStatsChange: Completed.");
}
}
-
///
/// Invoked when log messages are received
@@ -410,7 +410,7 @@ public int LaunchProcessWithDebuggerAttached(TestProcessStartInfo testProcessSta
{
processId = this.testRunCriteria.TestHostLauncher.LaunchTestHost(testProcessStartInfo);
}
-
+
return processId;
}
@@ -459,7 +459,7 @@ protected virtual void Dispose(bool disposing)
/// The run completion event which will be signalled on completion of test run.
///
private ManualResetEvent runCompletionEvent = new ManualResetEvent(true);
-
+
///
/// Tracks the time taken by each run request
diff --git a/src/datacollector/DataCollectionAttachmentManager.cs b/src/Microsoft.TestPlatform.Common/DataCollection/DataCollectionAttachmentManager.cs
similarity index 64%
rename from src/datacollector/DataCollectionAttachmentManager.cs
rename to src/Microsoft.TestPlatform.Common/DataCollection/DataCollectionAttachmentManager.cs
index 7126c79815..2ea8b772cf 100644
--- a/src/datacollector/DataCollectionAttachmentManager.cs
+++ b/src/Microsoft.TestPlatform.Common/DataCollection/DataCollectionAttachmentManager.cs
@@ -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.DataCollector
+namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector
{
using System;
using System.Collections.Generic;
@@ -10,9 +10,10 @@ namespace Microsoft.VisualStudio.TestPlatform.DataCollector
using System.Globalization;
using System.IO;
using System.Linq;
+ using System.Threading;
using System.Threading.Tasks;
- using Microsoft.VisualStudio.TestPlatform.DataCollector.Interfaces;
+ using Microsoft.VisualStudio.TestPlatform.Common.DataCollector.Interfaces;
using Microsoft.VisualStudio.TestPlatform.ObjectModel;
using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection;
using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging;
@@ -39,6 +40,11 @@ internal class DataCollectionAttachmentManager : IDataCollectionAttachmentManage
///
private List attachmentTasks;
+ ///
+ /// Use to cancel data collection if test run is cancelled.
+ ///
+ private CancellationTokenSource cancellationTokenSource;
+
#endregion
#region Constructor
@@ -48,6 +54,7 @@ internal class DataCollectionAttachmentManager : IDataCollectionAttachmentManage
///
public DataCollectionAttachmentManager()
{
+ this.cancellationTokenSource = new CancellationTokenSource();
this.attachmentTasks = new List();
this.AttachmentSets = new Dictionary();
}
@@ -102,7 +109,15 @@ public void Initialize(SessionId id, string outputDirectory, IMessageSink messag
///
public List GetAttachments(DataCollectionContext dataCollectionContext)
{
- Task.WhenAll(this.attachmentTasks.ToArray()).Wait();
+ try
+ {
+ Task.WhenAll(this.attachmentTasks.ToArray()).Wait();
+ }
+ catch (Exception ex)
+ {
+ EqtTrace.Error(ex.Message);
+ }
+
return this.AttachmentSets.Values.ToList();
}
@@ -140,6 +155,12 @@ public void AddAttachment(FileTransferInformation fileTransferInfo, AsyncComplet
}
}
+ ///
+ public void Cancel()
+ {
+ this.cancellationTokenSource.Cancel();
+ }
+
#endregion
#region private methods
@@ -207,80 +228,89 @@ private void AddNewFileTransfer(FileTransferInformation fileTransferInfo, AsyncC
testCaseId);
var localFilePath = Path.Combine(directoryPath, Path.GetFileName(fileTransferInfo.FileName));
- // todo : add cancellation token for cancelling file operations test run is cancelled or there is a crash.
- var task = new Task(() =>
- {
- Validate(fileTransferInfo, localFilePath);
-
- try
- {
- if (fileTransferInfo.PerformCleanup)
- {
- if (EqtTrace.IsInfoEnabled)
- {
- EqtTrace.Info("DataCollectionAttachmentManager.AddNewFileTransfer : Moving file {0} to {1}", fileTransferInfo.FileName, localFilePath);
- }
-
- File.Move(fileTransferInfo.FileName, localFilePath);
-
- if (EqtTrace.IsInfoEnabled)
- {
- EqtTrace.Info("DataCollectionAttachmentManager.AddNewFileTransfer : Moved file {0} to {1}", fileTransferInfo.FileName, localFilePath);
- }
- }
- else
- {
- if (EqtTrace.IsInfoEnabled)
- {
- EqtTrace.Info("DataCollectionAttachmentManager.AddNewFileTransfer : Copying file {0} to {1}", fileTransferInfo.FileName, localFilePath);
- }
-
- File.Copy(fileTransferInfo.FileName, localFilePath);
-
- if (EqtTrace.IsInfoEnabled)
- {
- EqtTrace.Info("DataCollectionAttachmentManager.AddNewFileTransfer : Copied file {0} to {1}", fileTransferInfo.FileName, localFilePath);
- }
- }
- }
- catch (Exception ex)
- {
- this.LogError(
- ex.Message,
- uri,
- friendlyName,
- Guid.Parse(testCaseId));
-
- throw;
- }
- });
-
- var continuationTask = task.ContinueWith((t) =>
- {
- try
- {
- if (t.Exception == null)
- {
- this.AttachmentSets[uri].Attachments.Add(new UriDataAttachment(new Uri(localFilePath), fileTransferInfo.Description));
- }
-
- sendFileCompletedCallback(this, new AsyncCompletedEventArgs(t.Exception, false, fileTransferInfo.UserToken));
- }
- catch (Exception e)
- {
- if (EqtTrace.IsErrorEnabled)
- {
- EqtTrace.Error(
- "DataCollectionAttachmentManager.TriggerCallBack: Error occurred while raising the file transfer completed callback for {0}. Error: {1}",
- localFilePath,
- e.ToString());
- }
- }
- });
-
- this.attachmentTasks.Add(task);
+ var task = Task.Factory.StartNew(
+ () =>
+ {
+ Validate(fileTransferInfo, localFilePath);
+
+ if (this.cancellationTokenSource.Token.IsCancellationRequested)
+ {
+ this.cancellationTokenSource.Token.ThrowIfCancellationRequested();
+ }
+
+ try
+ {
+ if (fileTransferInfo.PerformCleanup)
+ {
+ if (EqtTrace.IsInfoEnabled)
+ {
+ EqtTrace.Info("DataCollectionAttachmentManager.AddNewFileTransfer : Moving file {0} to {1}", fileTransferInfo.FileName, localFilePath);
+ }
+
+ File.Move(fileTransferInfo.FileName, localFilePath);
+
+ if (EqtTrace.IsInfoEnabled)
+ {
+ EqtTrace.Info("DataCollectionAttachmentManager.AddNewFileTransfer : Moved file {0} to {1}", fileTransferInfo.FileName, localFilePath);
+ }
+ }
+ else
+ {
+ if (EqtTrace.IsInfoEnabled)
+ {
+ EqtTrace.Info("DataCollectionAttachmentManager.AddNewFileTransfer : Copying file {0} to {1}", fileTransferInfo.FileName, localFilePath);
+ }
+
+ File.Copy(fileTransferInfo.FileName, localFilePath);
+
+ if (EqtTrace.IsInfoEnabled)
+ {
+ EqtTrace.Info("DataCollectionAttachmentManager.AddNewFileTransfer : Copied file {0} to {1}", fileTransferInfo.FileName, localFilePath);
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ this.LogError(
+ ex.Message,
+ uri,
+ friendlyName,
+ Guid.Parse(testCaseId));
+
+ throw;
+ }
+ },
+ this.cancellationTokenSource.Token);
+
+ var continuationTask = task.ContinueWith(
+ (t) =>
+ {
+ try
+ {
+ if (t.Exception == null)
+ {
+ this.AttachmentSets[uri].Attachments.Add(new UriDataAttachment(new Uri(localFilePath), fileTransferInfo.Description));
+ }
+
+ if (sendFileCompletedCallback != null)
+ {
+ sendFileCompletedCallback(this, new AsyncCompletedEventArgs(t.Exception, false, fileTransferInfo.UserToken));
+ }
+ }
+ catch (Exception e)
+ {
+ if (EqtTrace.IsErrorEnabled)
+ {
+ EqtTrace.Error(
+ "DataCollectionAttachmentManager.TriggerCallBack: Error occurred while raising the file transfer completed callback for {0}. Error: {1}",
+ localFilePath,
+ e.ToString());
+ }
+ }
+ },
+ this.cancellationTokenSource.Token);
+
this.attachmentTasks.Add(continuationTask);
- task.Start();
}
///
diff --git a/src/datacollector/DataCollectionEnvironmentVariable.cs b/src/Microsoft.TestPlatform.Common/DataCollection/DataCollectionEnvironmentVariable.cs
similarity index 98%
rename from src/datacollector/DataCollectionEnvironmentVariable.cs
rename to src/Microsoft.TestPlatform.Common/DataCollection/DataCollectionEnvironmentVariable.cs
index 92cbde0a5b..309f5d95c9 100644
--- a/src/datacollector/DataCollectionEnvironmentVariable.cs
+++ b/src/Microsoft.TestPlatform.Common/DataCollection/DataCollectionEnvironmentVariable.cs
@@ -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.DataCollector
+namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector
{
using System.Collections.Generic;
diff --git a/src/datacollector/DataCollectionManager.cs b/src/Microsoft.TestPlatform.Common/DataCollection/DataCollectionManager.cs
similarity index 97%
rename from src/datacollector/DataCollectionManager.cs
rename to src/Microsoft.TestPlatform.Common/DataCollection/DataCollectionManager.cs
index 660bc284e2..ff7d1d2c05 100644
--- a/src/datacollector/DataCollectionManager.cs
+++ b/src/Microsoft.TestPlatform.Common/DataCollection/DataCollectionManager.cs
@@ -1,19 +1,16 @@
// 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.DataCollector
+namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector
{
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
- using System.Diagnostics;
using System.Globalization;
- using System.IO;
using System.Linq;
- using System.Reflection;
+ using Microsoft.VisualStudio.TestPlatform.Common.DataCollector.Interfaces;
using Microsoft.VisualStudio.TestPlatform.Common.Utilities;
- using Microsoft.VisualStudio.TestPlatform.DataCollector.Interfaces;
using Microsoft.VisualStudio.TestPlatform.ObjectModel;
using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection;
using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging;
@@ -67,7 +64,10 @@ internal class DataCollectionManager : IDataCollectionManager
///
/// Initializes a new instance of the class.
///
- internal DataCollectionManager() : this(new DataCollectionAttachmentManager(), new MessageSink(), new DataCollectorLoader())
+ ///
+ /// The message Sink.
+ ///
+ internal DataCollectionManager(IMessageSink messageSink) : this(new DataCollectionAttachmentManager(), messageSink, new DataCollectorLoader())
{
}
@@ -166,7 +166,7 @@ public void Dispose()
}
///
- public Collection SessionEnded()
+ public Collection SessionEnded(bool isCancelled = false)
{
// Return null if datacollection is not enabled.
if (!this.isDataCollectionEnabled)
@@ -174,6 +174,12 @@ public Collection SessionEnded()
return new Collection();
}
+ if (isCancelled)
+ {
+ this.attachmentManager.Cancel();
+ return new Collection();
+ }
+
var endEvent = new SessionEndEventArgs(this.dataCollectionEnvironmentContext.SessionDataCollectionContext);
this.SendEvent(endEvent);
diff --git a/src/datacollector/DataCollectorConfig.cs b/src/Microsoft.TestPlatform.Common/DataCollection/DataCollectorConfig.cs
similarity index 98%
rename from src/datacollector/DataCollectorConfig.cs
rename to src/Microsoft.TestPlatform.Common/DataCollection/DataCollectorConfig.cs
index 6af3e824ff..309d75e177 100644
--- a/src/datacollector/DataCollectorConfig.cs
+++ b/src/Microsoft.TestPlatform.Common/DataCollection/DataCollectorConfig.cs
@@ -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.DataCollector
+namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector
{
using System;
using System.Diagnostics;
@@ -10,7 +10,7 @@ namespace Microsoft.VisualStudio.TestPlatform.DataCollector
using System.Reflection;
using Microsoft.VisualStudio.TestPlatform.ObjectModel;
- using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollector;
+ using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection;
///
/// The data collector config.
diff --git a/src/datacollector/DataCollectorInformation.cs b/src/Microsoft.TestPlatform.Common/DataCollection/DataCollectorInformation.cs
similarity index 97%
rename from src/datacollector/DataCollectorInformation.cs
rename to src/Microsoft.TestPlatform.Common/DataCollection/DataCollectorInformation.cs
index b44bb2d039..5fe3f010c9 100644
--- a/src/datacollector/DataCollectorInformation.cs
+++ b/src/Microsoft.TestPlatform.Common/DataCollection/DataCollectorInformation.cs
@@ -1,13 +1,13 @@
// 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.DataCollector
+namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector
{
using System;
using System.Collections.Generic;
using System.Xml;
- using Microsoft.VisualStudio.TestPlatform.DataCollector.Interfaces;
+ using Microsoft.VisualStudio.TestPlatform.Common.DataCollector.Interfaces;
using Microsoft.VisualStudio.TestPlatform.ObjectModel;
using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection;
using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollector;
diff --git a/src/datacollector/DataCollectorLoader.cs b/src/Microsoft.TestPlatform.Common/DataCollection/DataCollectorLoader.cs
similarity index 76%
rename from src/datacollector/DataCollectorLoader.cs
rename to src/Microsoft.TestPlatform.Common/DataCollection/DataCollectorLoader.cs
index 207a8829e1..0266c52782 100644
--- a/src/datacollector/DataCollectorLoader.cs
+++ b/src/Microsoft.TestPlatform.Common/DataCollection/DataCollectorLoader.cs
@@ -1,25 +1,24 @@
// 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.DataCollector
+namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector
{
using System;
using System.Reflection;
#if !NET46
using System.Runtime.Loader;
#endif
- using Microsoft.VisualStudio.TestPlatform.DataCollector.Interfaces;
+ using Microsoft.VisualStudio.TestPlatform.Common.DataCollector.Interfaces;
using Microsoft.VisualStudio.TestPlatform.ObjectModel;
using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection;
+ using System.Linq;
///
internal class DataCollectorLoader : IDataCollectorLoader
{
///
- public DataCollector Load(string location,
- string assemblyQualifiedName)
+ public DataCollector Load(string location, string assemblyQualifiedName)
{
- var dataCollectorType = Type.GetType(assemblyQualifiedName);
DataCollector dataCollectorInstance = null;
Assembly assembly = null;
@@ -30,6 +29,7 @@ public DataCollector Load(string location,
#else
assembly = AssemblyLoadContext.Default.LoadFromAssemblyPath(location);
#endif
+ var dataCollectorType = assembly.GetTypes().Where(t => t.AssemblyQualifiedName.Equals(assemblyQualifiedName)).FirstOrDefault();
dataCollectorInstance = Activator.CreateInstance(dataCollectorType) as DataCollector;
}
catch (Exception ex)
diff --git a/src/datacollector/Interfaces/IDataCollectionAttachmentManager.cs b/src/Microsoft.TestPlatform.Common/DataCollection/Interfaces/IDataCollectionAttachmentManager.cs
similarity index 82%
rename from src/datacollector/Interfaces/IDataCollectionAttachmentManager.cs
rename to src/Microsoft.TestPlatform.Common/DataCollection/Interfaces/IDataCollectionAttachmentManager.cs
index e24f60ba65..64bc10f69b 100644
--- a/src/datacollector/Interfaces/IDataCollectionAttachmentManager.cs
+++ b/src/Microsoft.TestPlatform.Common/DataCollection/Interfaces/IDataCollectionAttachmentManager.cs
@@ -1,6 +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.DataCollector.Interfaces
+namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector.Interfaces
{
using System;
using System.Collections.Generic;
@@ -55,5 +56,10 @@ internal interface IDataCollectionAttachmentManager
/// The friendly Name.
///
void AddAttachment(FileTransferInformation fileTransferInfo, AsyncCompletedEventHandler sendFileCompletedCallback, Uri typeUri, string friendlyName);
+
+ ///
+ /// Stops processing further transfer requests as test run is cancelled.
+ ///
+ void Cancel();
}
}
\ No newline at end of file
diff --git a/src/datacollector/Interfaces/IDataCollectionManager.cs b/src/Microsoft.TestPlatform.Common/DataCollection/Interfaces/IDataCollectionManager.cs
similarity index 84%
rename from src/datacollector/Interfaces/IDataCollectionManager.cs
rename to src/Microsoft.TestPlatform.Common/DataCollection/Interfaces/IDataCollectionManager.cs
index 47e8fc6d7e..bb95cddb71 100644
--- a/src/datacollector/Interfaces/IDataCollectionManager.cs
+++ b/src/Microsoft.TestPlatform.Common/DataCollection/Interfaces/IDataCollectionManager.cs
@@ -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.DataCollector.Interfaces
+namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector.Interfaces
{
using System;
using System.Collections.Generic;
@@ -45,7 +45,12 @@ internal interface IDataCollectionManager : IDisposable
///
/// Raises SessionEnd event to all data collectors configured for run.
///
- /// Collection of session attachmentSet.
- Collection SessionEnded();
+ ///
+ /// Boolean to specify is the test ruun is cancelled or not.
+ ///
+ ///
+ /// Collection of session attachmentSet.
+ ///
+ Collection SessionEnded(bool isCancelled);
}
}
\ No newline at end of file
diff --git a/src/datacollector/Interfaces/IDataCollectorLoader.cs b/src/Microsoft.TestPlatform.Common/DataCollection/Interfaces/IDataCollectorLoader.cs
similarity index 92%
rename from src/datacollector/Interfaces/IDataCollectorLoader.cs
rename to src/Microsoft.TestPlatform.Common/DataCollection/Interfaces/IDataCollectorLoader.cs
index 0040750cf0..e310f0bfbd 100644
--- a/src/datacollector/Interfaces/IDataCollectorLoader.cs
+++ b/src/Microsoft.TestPlatform.Common/DataCollection/Interfaces/IDataCollectorLoader.cs
@@ -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.DataCollector.Interfaces
+namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector.Interfaces
{
using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection;
diff --git a/src/datacollector/Interfaces/IMessageSink.cs b/src/Microsoft.TestPlatform.Common/DataCollection/Interfaces/IMessageSink.cs
similarity index 89%
rename from src/datacollector/Interfaces/IMessageSink.cs
rename to src/Microsoft.TestPlatform.Common/DataCollection/Interfaces/IMessageSink.cs
index 56c6ab703b..b5b6e492a9 100644
--- a/src/datacollector/Interfaces/IMessageSink.cs
+++ b/src/Microsoft.TestPlatform.Common/DataCollection/Interfaces/IMessageSink.cs
@@ -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.DataCollector.Interfaces
+namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector.Interfaces
{
using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging;
diff --git a/src/datacollector/TestPlatformDataCollectionEvents.cs b/src/Microsoft.TestPlatform.Common/DataCollection/TestPlatformDataCollectionEvents.cs
similarity index 98%
rename from src/datacollector/TestPlatformDataCollectionEvents.cs
rename to src/Microsoft.TestPlatform.Common/DataCollection/TestPlatformDataCollectionEvents.cs
index d111418d12..0f25ef5ba0 100644
--- a/src/datacollector/TestPlatformDataCollectionEvents.cs
+++ b/src/Microsoft.TestPlatform.Common/DataCollection/TestPlatformDataCollectionEvents.cs
@@ -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.DataCollector
+namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector
{
using System;
using System.Collections.Generic;
diff --git a/src/datacollector/TestPlatformDataCollectionLogger.cs b/src/Microsoft.TestPlatform.Common/DataCollection/TestPlatformDataCollectionLogger.cs
similarity index 97%
rename from src/datacollector/TestPlatformDataCollectionLogger.cs
rename to src/Microsoft.TestPlatform.Common/DataCollection/TestPlatformDataCollectionLogger.cs
index 7c9ccd755f..c86d9ed87c 100644
--- a/src/datacollector/TestPlatformDataCollectionLogger.cs
+++ b/src/Microsoft.TestPlatform.Common/DataCollection/TestPlatformDataCollectionLogger.cs
@@ -1,13 +1,13 @@
// 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.DataCollector
+namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector
{
using System;
using System.Diagnostics;
using System.Globalization;
- using Microsoft.VisualStudio.TestPlatform.DataCollector.Interfaces;
+ using Microsoft.VisualStudio.TestPlatform.Common.DataCollector.Interfaces;
using Microsoft.VisualStudio.TestPlatform.ObjectModel;
using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection;
using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging;
diff --git a/src/datacollector/TestPlatformDataCollectionSink.cs b/src/Microsoft.TestPlatform.Common/DataCollection/TestPlatformDataCollectionSink.cs
similarity index 94%
rename from src/datacollector/TestPlatformDataCollectionSink.cs
rename to src/Microsoft.TestPlatform.Common/DataCollection/TestPlatformDataCollectionSink.cs
index 023b4c88ed..dea3529ccf 100644
--- a/src/datacollector/TestPlatformDataCollectionSink.cs
+++ b/src/Microsoft.TestPlatform.Common/DataCollection/TestPlatformDataCollectionSink.cs
@@ -1,12 +1,12 @@
// 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.DataCollector
+namespace Microsoft.VisualStudio.TestPlatform.Common.DataCollector
{
using System.ComponentModel;
using System.Diagnostics;
- using Microsoft.VisualStudio.TestPlatform.DataCollector.Interfaces;
+ using Microsoft.VisualStudio.TestPlatform.Common.DataCollector.Interfaces;
using Microsoft.VisualStudio.TestPlatform.ObjectModel;
using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection;
diff --git a/src/Microsoft.TestPlatform.Common/Friends.cs b/src/Microsoft.TestPlatform.Common/Friends.cs
index 1335438e0c..316c23e6b8 100644
--- a/src/Microsoft.TestPlatform.Common/Friends.cs
+++ b/src/Microsoft.TestPlatform.Common/Friends.cs
@@ -6,6 +6,8 @@
#region Product Assemblies
[assembly: InternalsVisibleTo("Microsoft.TestPlatform.CrossPlatEngine, PublicKey=002400000480000094000000060200000024000052534131000400000100010007d1fa57c4aed9f0a32e84aa0faefd0de9e8fd6aec8f87fb03766c834c99921eb23be79ad9d5dcc1dd9ad236132102900b723cf980957fc4e177108fc607774f29e8320e92ea05ece4e821c0a5efe8f1645c4c0c93c1ab99285d622caa652c1dfad63d745d6f2de5f17e5eaf0fc4963d261c8a12436518206dc093344d5ad293")]
[assembly: InternalsVisibleTo("vstest.console, PublicKey =002400000480000094000000060200000024000052534131000400000100010007d1fa57c4aed9f0a32e84aa0faefd0de9e8fd6aec8f87fb03766c834c99921eb23be79ad9d5dcc1dd9ad236132102900b723cf980957fc4e177108fc607774f29e8320e92ea05ece4e821c0a5efe8f1645c4c0c93c1ab99285d622caa652c1dfad63d745d6f2de5f17e5eaf0fc4963d261c8a12436518206dc093344d5ad293")]
+[assembly: InternalsVisibleTo("datacollector, PublicKey =002400000480000094000000060200000024000052534131000400000100010007d1fa57c4aed9f0a32e84aa0faefd0de9e8fd6aec8f87fb03766c834c99921eb23be79ad9d5dcc1dd9ad236132102900b723cf980957fc4e177108fc607774f29e8320e92ea05ece4e821c0a5efe8f1645c4c0c93c1ab99285d622caa652c1dfad63d745d6f2de5f17e5eaf0fc4963d261c8a12436518206dc093344d5ad293")]
+[assembly: InternalsVisibleTo("Microsoft.TestPlatform.CommunicationUtilities, PublicKey=002400000480000094000000060200000024000052534131000400000100010007d1fa57c4aed9f0a32e84aa0faefd0de9e8fd6aec8f87fb03766c834c99921eb23be79ad9d5dcc1dd9ad236132102900b723cf980957fc4e177108fc607774f29e8320e92ea05ece4e821c0a5efe8f1645c4c0c93c1ab99285d622caa652c1dfad63d745d6f2de5f17e5eaf0fc4963d261c8a12436518206dc093344d5ad293")]
#endregion
#region Test Assemblies
@@ -13,4 +15,7 @@
[assembly: InternalsVisibleTo("Microsoft.TestPlatform.CrossPlatEngine.UnitTests, PublicKey=002400000480000094000000060200000024000052534131000400000100010007d1fa57c4aed9f0a32e84aa0faefd0de9e8fd6aec8f87fb03766c834c99921eb23be79ad9d5dcc1dd9ad236132102900b723cf980957fc4e177108fc607774f29e8320e92ea05ece4e821c0a5efe8f1645c4c0c93c1ab99285d622caa652c1dfad63d745d6f2de5f17e5eaf0fc4963d261c8a12436518206dc093344d5ad293")]
[assembly: InternalsVisibleTo("vstest.console.UnitTests, PublicKey=002400000480000094000000060200000024000052534131000400000100010007d1fa57c4aed9f0a32e84aa0faefd0de9e8fd6aec8f87fb03766c834c99921eb23be79ad9d5dcc1dd9ad236132102900b723cf980957fc4e177108fc607774f29e8320e92ea05ece4e821c0a5efe8f1645c4c0c93c1ab99285d622caa652c1dfad63d745d6f2de5f17e5eaf0fc4963d261c8a12436518206dc093344d5ad293")]
[assembly: InternalsVisibleTo("Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests, PublicKey=002400000480000094000000060200000024000052534131000400000100010007d1fa57c4aed9f0a32e84aa0faefd0de9e8fd6aec8f87fb03766c834c99921eb23be79ad9d5dcc1dd9ad236132102900b723cf980957fc4e177108fc607774f29e8320e92ea05ece4e821c0a5efe8f1645c4c0c93c1ab99285d622caa652c1dfad63d745d6f2de5f17e5eaf0fc4963d261c8a12436518206dc093344d5ad293")]
+[assembly: InternalsVisibleTo("datacollector.UnitTests, PublicKey=002400000480000094000000060200000024000052534131000400000100010007d1fa57c4aed9f0a32e84aa0faefd0de9e8fd6aec8f87fb03766c834c99921eb23be79ad9d5dcc1dd9ad236132102900b723cf980957fc4e177108fc607774f29e8320e92ea05ece4e821c0a5efe8f1645c4c0c93c1ab99285d622caa652c1dfad63d745d6f2de5f17e5eaf0fc4963d261c8a12436518206dc093344d5ad293")]
+[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")]
+
#endregion
\ No newline at end of file
diff --git a/src/Microsoft.TestPlatform.Common/Resources/Resources.Designer.cs b/src/Microsoft.TestPlatform.Common/Resources/Resources.Designer.cs
index e25d14267a..7b7fe7a30a 100644
--- a/src/Microsoft.TestPlatform.Common/Resources/Resources.Designer.cs
+++ b/src/Microsoft.TestPlatform.Common/Resources/Resources.Designer.cs
@@ -61,6 +61,15 @@ internal Resources() {
}
}
+ ///
+ /// Looks up a localized string similar to An error occurred while retrieving the attributes for the diagnostic data adapter of type '{0}'..
+ ///
+ internal static string AttributeRetrievalError {
+ get {
+ return ResourceManager.GetString("AttributeRetrievalError", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Diagnostic data adapter message: {0}.
///
@@ -70,6 +79,42 @@ internal static string DataCollectionMessageFormat {
}
}
+ ///
+ /// Looks up a localized string similar to Diagnostic data adapter type URI cannot be null or empty. The type URI for the diagnostic data adapter of type '{0}' is null or empty..
+ ///
+ internal static string DataCollector_TypeIsNull {
+ get {
+ return ResourceManager.GetString("DataCollector_TypeIsNull", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Could not find diagnostic data adapter '{0}'. Make sure diagnostic data adapter is installed and try again..
+ ///
+ internal static string DataCollectorAssemblyNotFound {
+ get {
+ return ResourceManager.GetString("DataCollectorAssemblyNotFound", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Diagnostic data adapter '{0}' failed to provide intialization information. Error: {1}.
+ ///
+ internal static string DataCollectorErrorOnGetVariable {
+ get {
+ return ResourceManager.GetString("DataCollectorErrorOnGetVariable", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The diagnostic data adapter '{0}' threw an exception during type loading, construction, or initialization: {1}..
+ ///
+ internal static string DataCollectorInitializationError {
+ get {
+ return ResourceManager.GetString("DataCollectorInitializationError", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Diagnostic data adapter ('{0}') message: {1}..
///
@@ -79,6 +124,60 @@ internal static string DataCollectorMessageFormat {
}
}
+ ///
+ /// Looks up a localized string similar to Could not find diagnostic data adapter of type '{0}' and Uri '{1}'.
+ ///
+ internal static string DataCollectorNotFound {
+ get {
+ return ResourceManager.GetString("DataCollectorNotFound", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The diagnostic data adapter '{0}' requested environment variable '{1}' with value '{2}' to be set in test execution environment, but another diagnostic data adapter '{3}' has already requested same environment variable with different value '{4}'..
+ ///
+ internal static string DataCollectorRequestedDuplicateEnvironmentVariable {
+ get {
+ return ResourceManager.GetString("DataCollectorRequestedDuplicateEnvironmentVariable", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The required diagnostic data adapter attribute '{0}' is missing for the diagnostic data adapter of type '{1}'..
+ ///
+ internal static string DataCollectorRequiredAttributeMissing {
+ get {
+ return ResourceManager.GetString("DataCollectorRequiredAttributeMissing", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Failed to get type for diagnostic data adapter '{0}'. Error: {1}..
+ ///
+ internal static string DataCollectorTypeNotFound {
+ get {
+ return ResourceManager.GetString("DataCollectorTypeNotFound", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Invalid URI format. The URI '{0}' provided for the diagnostic data adapter of type '{1}' is not a valid URI..
+ ///
+ internal static string DataCollectorTypeUriFormatInvalid {
+ get {
+ return ResourceManager.GetString("DataCollectorTypeUriFormatInvalid", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Sending message of Message Type '{0}' is not supported..
+ ///
+ internal static string DataCollectorUnsupportedMessageType {
+ get {
+ return ResourceManager.GetString("DataCollectorUnsupportedMessageType", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Duplicate test extension URI '{0}'. Ignoring the duplicate extension..
///
@@ -115,6 +214,24 @@ internal static string EmptyParenthesis {
}
}
+ ///
+ /// Looks up a localized string similar to Diagnostic data adapter friendly names cannot be null or empty. The friendly name for the diagnostic data adapter of type '{0}' is null or empty..
+ ///
+ internal static string FriendlyNameIsNullOrEmpty {
+ get {
+ return ResourceManager.GetString("FriendlyNameIsNullOrEmpty", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to There are multiple configurations that have diagnostic data adapter type '{0}' or Uri '{1}'. Duplicate configurations will be ignored in the test run..
+ ///
+ internal static string IgnoredDuplicateConfiguration {
+ get {
+ return ResourceManager.GetString("IgnoredDuplicateConfiguration", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Error: Invalid Condition '{0}'.
///
@@ -196,6 +313,15 @@ internal static string MissingOperator {
}
}
+ ///
+ /// Looks up a localized string similar to Diagnostic data adapter caught an exception of type '{0}': '{1}'. More details: {2}..
+ ///
+ internal static string ReportDataCollectorException {
+ get {
+ return ResourceManager.GetString("ReportDataCollectorException", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to The Run Settings have already been loaded..
///
@@ -249,5 +375,14 @@ internal static string TestCaseFilterFormatException {
return ResourceManager.GetString("TestCaseFilterFormatException", resourceCulture);
}
}
+
+ ///
+ /// Looks up a localized string similar to Types deriving from the data collection context cannot be used for sending data and messages. The DataCollectionContext used for sending data and messages must come from one of the events raised to the data collector..
+ ///
+ internal static string WrongDataCollectionContextType {
+ get {
+ return ResourceManager.GetString("WrongDataCollectionContextType", resourceCulture);
+ }
+ }
}
}
diff --git a/src/Microsoft.TestPlatform.Common/Resources/Resources.resx b/src/Microsoft.TestPlatform.Common/Resources/Resources.resx
index fff7c2610d..ae3101168c 100644
--- a/src/Microsoft.TestPlatform.Common/Resources/Resources.resx
+++ b/src/Microsoft.TestPlatform.Common/Resources/Resources.resx
@@ -117,12 +117,45 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ An error occurred while retrieving the attributes for the diagnostic data adapter of type '{0}'.
+
Diagnostic data adapter message: {0}
+
+ Could not find diagnostic data adapter '{0}'. Make sure diagnostic data adapter is installed and try again.
+
+
+ Diagnostic data adapter '{0}' failed to provide intialization information. Error: {1}
+
+
+ The diagnostic data adapter '{0}' threw an exception during type loading, construction, or initialization: {1}.
+
Diagnostic data adapter ('{0}') message: {1}.
+
+ Could not find diagnostic data adapter of type '{0}' and Uri '{1}'
+
+
+ The diagnostic data adapter '{0}' requested environment variable '{1}' with value '{2}' to be set in test execution environment, but another diagnostic data adapter '{3}' has already requested same environment variable with different value '{4}'.
+
+
+ The required diagnostic data adapter attribute '{0}' is missing for the diagnostic data adapter of type '{1}'.
+
+
+ Failed to get type for diagnostic data adapter '{0}'. Error: {1}.
+
+
+ Invalid URI format. The URI '{0}' provided for the diagnostic data adapter of type '{1}' is not a valid URI.
+
+
+ Sending message of Message Type '{0}' is not supported.
+
+
+ Diagnostic data adapter type URI cannot be null or empty. The type URI for the diagnostic data adapter of type '{0}' is null or empty.
+
Duplicate test extension URI '{0}'. Ignoring the duplicate extension.
@@ -135,6 +168,12 @@
Error: Empty parenthesis ( )
+
+ Diagnostic data adapter friendly names cannot be null or empty. The friendly name for the diagnostic data adapter of type '{0}' is null or empty.
+
+
+ There are multiple configurations that have diagnostic data adapter type '{0}' or Uri '{1}'. Duplicate configurations will be ignored in the test run.
+
Error: Invalid Condition '{0}'
@@ -162,6 +201,9 @@
Missing Operator '|' or '&'
+
+ Diagnostic data adapter caught an exception of type '{0}': '{1}'. More details: {2}.
+
The Run Settings have already been loaded.
@@ -180,4 +222,7 @@
Incorrect format for TestCaseFilter {0}. Specify the correct format and try again. Note that the incorrect format can lead to no test getting executed.
+
+ Types deriving from the data collection context cannot be used for sending data and messages. The DataCollectionContext used for sending data and messages must come from one of the events raised to the data collector.
+
\ No newline at end of file
diff --git a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.cs.xlf b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.cs.xlf
index a6678ad27f..a529508c40 100644
--- a/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.cs.xlf
+++ b/src/Microsoft.TestPlatform.Common/Resources/xlf/Resources.cs.xlf
@@ -209,6 +209,81 @@
fuzzyMatch="15" wordcount="24" adjWordcount="20.4" curWordcount="20.4"
+
+ An error occurred while retrieving the attributes for the diagnostic data adapter of type '{0}'.
+ An error occurred while retrieving the attributes for the diagnostic data adapter of type '{0}'.
+
+
+
+ Could not find diagnostic data adapter '{0}'. Make sure diagnostic data adapter is installed and try again.
+ Could not find diagnostic data adapter '{0}'. Make sure diagnostic data adapter is installed and try again.
+
+
+
+ Diagnostic data adapter '{0}' failed to provide intialization information. Error: {1}
+ Diagnostic data adapter '{0}' failed to provide intialization information. Error: {1}
+
+
+
+ The diagnostic data adapter '{0}' threw an exception during type loading, construction, or initialization: {1}.
+ The diagnostic data adapter '{0}' threw an exception during type loading, construction, or initialization: {1}.
+
+
+
+ Could not find diagnostic data adapter of type '{0}' and Uri '{1}'
+ Could not find diagnostic data adapter of type '{0}' and Uri '{1}'
+
+
+
+ The diagnostic data adapter '{0}' requested environment variable '{1}' with value '{2}' to be set in test execution environment, but another diagnostic data adapter '{3}' has already requested same environment variable with different value '{4}'.
+ The diagnostic data adapter '{0}' requested environment variable '{1}' with value '{2}' to be set in test execution environment, but another diagnostic data adapter '{3}' has already requested same environment variable with different value '{4}'.
+
+
+
+ The required diagnostic data adapter attribute '{0}' is missing for the diagnostic data adapter of type '{1}'.
+ The required diagnostic data adapter attribute '{0}' is missing for the diagnostic data adapter of type '{1}'.
+
+
+
+ Failed to get type for diagnostic data adapter '{0}'. Error: {1}.
+ Failed to get type for diagnostic data adapter '{0}'. Error: {1}.
+
+
+
+ Invalid URI format. The URI '{0}' provided for the diagnostic data adapter of type '{1}' is not a valid URI.
+ Invalid URI format. The URI '{0}' provided for the diagnostic data adapter of type '{1}' is not a valid URI.
+
+
+
+ Sending message of Message Type '{0}' is not supported.
+ Sending message of Message Type '{0}' is not supported.
+
+
+
+ Diagnostic data adapter type URI cannot be null or empty. The type URI for the diagnostic data adapter of type '{0}' is null or empty.
+ Diagnostic data adapter type URI cannot be null or empty. The type URI for the diagnostic data adapter of type '{0}' is null or empty.
+
+
+
+ Diagnostic data adapter friendly names cannot be null or empty. The friendly name for the diagnostic data adapter of type '{0}' is null or empty.
+ Diagnostic data adapter friendly names cannot be null or empty. The friendly name for the diagnostic data adapter of type '{0}' is null or empty.
+
+
+
+ There are multiple configurations that have diagnostic data adapter type '{0}' or Uri '{1}'. Duplicate configurations will be ignored in the test run.
+ There are multiple configurations that have diagnostic data adapter type '{0}' or Uri '{1}'. Duplicate configurations will be ignored in the test run.
+
+
+
+ Diagnostic data adapter caught an exception of type '{0}': '{1}'. More details: {2}.
+ Diagnostic data adapter caught an exception of type '{0}': '{1}'. More details: {2}.
+
+
+
+ Types deriving from the data collection context cannot be used for sending data and messages. The DataCollectionContext used for sending data and messages must come from one of the events raised to the data collector.
+ Types deriving from the data collection context cannot be used for sending data and messages. The DataCollectionContext used for sending data and messages must come from one of the events raised to the data collector.
+
+