private void StartTestSession(StartTestSessionPayload payload, ITestRequestManager requestManager) { Task.Run(() => { var eventsHandler = new TestSessionEventsHandler(this.communicationManager); try { var customLauncher = payload.HasCustomHostLauncher ? DesignModeTestHostLauncherFactory.GetCustomHostLauncherForTestRun(this, payload.IsDebuggingEnabled) : null; requestManager.ResetOptions(); requestManager.StartTestSession(payload, customLauncher, eventsHandler, this.protocolConfig); } catch (Exception ex) { EqtTrace.Error("DesignModeClient: Exception in StartTestSession: " + ex); eventsHandler.HandleLogMessage(TestMessageLevel.Error, ex.ToString()); eventsHandler.HandleStartTestSessionComplete(null); } }); }
/// <inheritdoc/> public void StartTestSession( StartTestSessionPayload payload, ITestHostLauncher testHostLauncher, ITestSessionEventsHandler eventsHandler, ProtocolConfig protocolConfig) { EqtTrace.Info("TestRequestManager.StartTestSession: Starting test session."); if (payload.TestPlatformOptions != null) { this.telemetryOptedIn = payload.TestPlatformOptions.CollectMetrics; } var requestData = this.GetRequestData(protocolConfig); if (this.UpdateRunSettingsIfRequired( payload.RunSettings, payload.Sources, null, out string updatedRunsettings)) { payload.RunSettings = updatedRunsettings; } if (InferRunSettingsHelper.AreRunSettingsCollectorsIncompatibleWithTestSettings(payload.RunSettings)) { throw new SettingsException( string.Format( Resources.RunsettingsWithDCErrorMessage, payload.RunSettings)); } // TODO (copoiena): Collect metrics ? lock (this.syncObject) { try { EqtTrace.Info("TestRequestManager.StartTestRunner: Synchronization context taken."); this.TestPlatformEventSourceInstance.StartTestSessionStart(); var criteria = new StartTestSessionCriteria() { Sources = payload.Sources, RunSettings = payload.RunSettings, TestHostLauncher = testHostLauncher }; this.testPlatform.StartTestSession(requestData, criteria, eventsHandler); } finally { EqtTrace.Info("TestRequestManager.StartTestSession: Starting test session completed."); this.TestPlatformEventSourceInstance.StartTestSessionStop(); // Post the attachments processing complete event. this.metricsPublisher.Result.PublishMetrics( TelemetryDataConstants.StartTestSessionCompleteEvent, requestData.MetricsCollection.Metrics); } } }