public void InitializeShouldCreateEntryForCodeCoverageInRunSettingsIfNotAlreadyPresent() { var runsettingsString = string.Format(DefaultRunSettings, ""); var runsettings = new RunSettings(); runsettings.LoadSettingsXml(runsettingsString); this.settingsProvider.SetActiveRunSettings(runsettings); this.executor.Initialize(string.Empty); Assert.IsNotNull(this.settingsProvider.ActiveRunSettings); var dataCollectorsFriendlyNames = XmlRunSettingsUtilities.GetDataCollectorsFriendlyName(this.settingsProvider.ActiveRunSettings.SettingsXml); Assert.IsTrue(dataCollectorsFriendlyNames.Contains("Code Coverage"), "Code coverage setting in not avilabe in runsettings"); }
public void GetDataCollectorsFriendlyNameShouldReturnListOfFriendlyName() { var settingsXml = @"<RunSettings> <DataCollectionRunSettings> <DataCollectors> <DataCollector friendlyName=""DummyDataCollector1""> </DataCollector> <DataCollector friendlyName=""DummyDataCollector2""> </DataCollector> </DataCollectors> </DataCollectionRunSettings> </RunSettings>"; var friendlyNameList = XmlRunSettingsUtilities.GetDataCollectorsFriendlyName(settingsXml).ToList <string>(); Assert.AreEqual(friendlyNameList.Count, 2, "There should be two friendly name"); CollectionAssert.AreEqual(friendlyNameList, new List <string> { "DummyDataCollector1", "DummyDataCollector2" }); }
/// <summary> /// Run Tests with given a set of test cases. /// </summary> /// <param name="testRunRequestPayload">TestRun request Payload</param> /// <param name="testHostLauncher">TestHost Launcher for the run</param> /// <param name="testRunEventsRegistrar">event registrar for run events</param> /// <param name="protocolConfig">Protocol related information</param> /// <returns>True, if successful</returns> public bool RunTests(TestRunRequestPayload testRunRequestPayload, ITestHostLauncher testHostLauncher, ITestRunEventsRegistrar testRunEventsRegistrar, ProtocolConfig protocolConfig) { EqtTrace.Info("TestRequestManager.RunTests: run tests started."); TestRunCriteria runCriteria = null; var runsettings = testRunRequestPayload.RunSettings; if (testRunRequestPayload.TestPlatformOptions != null) { this.telemetryOptedIn = testRunRequestPayload.TestPlatformOptions.CollectMetrics; } var requestData = this.GetRequestData(protocolConfig); // Get sources to auto detect fx and arch for both run selected or run all scenario. var sources = GetSources(testRunRequestPayload); if (this.UpdateRunSettingsIfRequired(runsettings, sources, out string updatedRunsettings)) { runsettings = updatedRunsettings; } if (InferRunSettingsHelper.IsTestSettingsEnabled(runsettings)) { bool throwException = false; if (this.commandLineOptions.EnableCodeCoverage) { var dataCollectorsFriendlyNames = XmlRunSettingsUtilities.GetDataCollectorsFriendlyName(runsettings); if (dataCollectorsFriendlyNames.Count >= 2) { throwException = true; } } else if (XmlRunSettingsUtilities.IsDataCollectionEnabled(runsettings)) { throwException = true; } if (throwException) { throw new SettingsException(string.Format(Resources.RunsettingsWithDCErrorMessage, runsettings)); } } var runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(runsettings); var batchSize = runConfiguration.BatchSize; if (requestData.IsTelemetryOptedIn) { // Collect Metrics this.CollectMetrics(requestData, runConfiguration); // Collect Commands this.LogCommandsTelemetryPoints(requestData); } if (!commandLineOptions.IsDesignMode) { // Generate fakes settings only for command line scenarios. In case of // Editors/IDEs, this responsibility is with the caller. GenerateFakesUtilities.GenerateFakesSettings(this.commandLineOptions, this.commandLineOptions.Sources.ToList(), ref runsettings); } if (testRunRequestPayload.Sources != null && testRunRequestPayload.Sources.Any()) { runCriteria = new TestRunCriteria( testRunRequestPayload.Sources, batchSize, testRunRequestPayload.KeepAlive, runsettings, this.commandLineOptions.TestStatsEventTimeout, testHostLauncher); runCriteria.TestCaseFilter = testRunRequestPayload.TestPlatformOptions?.TestCaseFilter; runCriteria.FilterOptions = testRunRequestPayload.TestPlatformOptions?.FilterOptions; } else { runCriteria = new TestRunCriteria( testRunRequestPayload.TestCases, batchSize, testRunRequestPayload.KeepAlive, runsettings, this.commandLineOptions.TestStatsEventTimeout, testHostLauncher); } var success = this.RunTests(requestData, runCriteria, testRunEventsRegistrar); EqtTrace.Info("TestRequestManager.RunTests: run tests completed, sucessful: {0}.", success); this.testPlatformEventSource.ExecutionRequestStop(); // Post the run complete event this.metricsPublisher.Result.PublishMetrics(TelemetryDataConstants.TestExecutionCompleteEvent, requestData.MetricsCollection.Metrics); return(success); }