in src/Microsoft.TestPlatform.Client/DesignMode/DesignModeClient.cs [146:287]
private void ProcessRequests(ITestRequestManager testRequestManager)
{
var isSessionEnd = false;
do
{
try
{
var message = _communicationManager.ReceiveMessage();
if (EqtTrace.IsInfoEnabled)
{
EqtTrace.Info("DesignModeClient.ProcessRequests: Processing Message: {0}", message);
}
switch (message.MessageType)
{
case MessageType.VersionCheck:
{
var version = _dataSerializer.DeserializePayload<int>(message);
_protocolConfig.Version = Math.Min(version, _protocolConfig.Version);
_communicationManager.SendMessage(MessageType.VersionCheck, _protocolConfig.Version);
break;
}
case MessageType.ExtensionsInitialize:
{
// Do not filter the Editor/IDE provided extensions by name
var extensionPaths = _communicationManager.DeserializePayload<IEnumerable<string>>(message);
testRequestManager.InitializeExtensions(extensionPaths, skipExtensionFilters: true);
break;
}
case MessageType.StartTestSession:
{
var testSessionPayload = _communicationManager.DeserializePayload<StartTestSessionPayload>(message);
StartTestSession(testSessionPayload, testRequestManager);
break;
}
case MessageType.StopTestSession:
{
var testSessionInfo = _communicationManager.DeserializePayload<TestSessionInfo>(message);
StopTestSession(testSessionInfo);
break;
}
case MessageType.StartDiscovery:
{
var discoveryPayload = _dataSerializer.DeserializePayload<DiscoveryRequestPayload>(message);
StartDiscovery(discoveryPayload, testRequestManager);
break;
}
case MessageType.GetTestRunnerProcessStartInfoForRunAll:
case MessageType.GetTestRunnerProcessStartInfoForRunSelected:
{
var testRunPayload =
_communicationManager.DeserializePayload<TestRunRequestPayload>(
message);
StartTestRun(testRunPayload, testRequestManager, shouldLaunchTesthost: true);
break;
}
case MessageType.TestRunAllSourcesWithDefaultHost:
case MessageType.TestRunSelectedTestCasesDefaultHost:
{
var testRunPayload =
_communicationManager.DeserializePayload<TestRunRequestPayload>(
message);
StartTestRun(testRunPayload, testRequestManager, shouldLaunchTesthost: false);
break;
}
case MessageType.TestRunAttachmentsProcessingStart:
{
var testRunAttachmentsProcessingPayload =
_communicationManager.DeserializePayload<TestRunAttachmentsProcessingPayload>(message);
StartTestRunAttachmentsProcessing(testRunAttachmentsProcessingPayload, testRequestManager);
break;
}
case MessageType.CancelDiscovery:
{
testRequestManager.CancelDiscovery();
break;
}
case MessageType.CancelTestRun:
{
testRequestManager.CancelTestRun();
break;
}
case MessageType.AbortTestRun:
{
testRequestManager.AbortTestRun();
break;
}
case MessageType.TestRunAttachmentsProcessingCancel:
{
testRequestManager.CancelTestRunAttachmentsProcessing();
break;
}
case MessageType.CustomTestHostLaunchCallback:
{
onCustomTestHostLaunchAckReceived?.Invoke(message);
break;
}
case MessageType.EditorAttachDebuggerCallback:
{
onAttachDebuggerAckRecieved?.Invoke(message);
break;
}
case MessageType.SessionEnd:
{
EqtTrace.Info("DesignModeClient: Session End message received from server. Closing the connection.");
isSessionEnd = true;
Dispose();
break;
}
default:
{
EqtTrace.Info("DesignModeClient: Invalid Message received: {0}", message);
break;
}
}
}
catch (Exception ex)
{
EqtTrace.Error("DesignModeClient: Error processing request: {0}", ex);
isSessionEnd = true;
Dispose();
}
}
while (!isSessionEnd);
}