/// <summary> /// Initializes with the argument that was provided with the command. /// </summary> /// <param name="argument">Argument that was provided with the command.</param> public void Initialize(string argument) { string exceptionMessage = string.Format(CultureInfo.CurrentUICulture, CommandLineResources.LoggerUriInvalid, argument); // Throw error in case logger argument null or empty. if (string.IsNullOrWhiteSpace(argument)) { throw new CommandLineException(exceptionMessage); } // Get logger argument list. var loggerArgumentList = ArgumentProcessorUtilities.GetArgumentList(argument, ArgumentProcessorUtilities.SemiColonArgumentSeparator, exceptionMessage); // Get logger identifier. var loggerIdentifier = loggerArgumentList[0]; if (loggerIdentifier.Contains("=")) { throw new CommandLineException(exceptionMessage); } // Get logger parameters var loggerParameterArgs = loggerArgumentList.Skip(1); var loggerParameters = ArgumentProcessorUtilities.GetArgumentParameters(loggerParameterArgs, ArgumentProcessorUtilities.EqualNameValueSeparator, exceptionMessage); // Add logger to run settings. LoggerUtilities.AddLoggerToRunSettings(loggerIdentifier, loggerParameters, runSettingsManager); }
/// <summary> /// Initialize blame. /// </summary> /// <param name="enableDump">Enable dump.</param> /// <param name="blameParameters">Blame parameters.</param> private void InitializeBlame(bool enableDump, Dictionary <string, string> collectDumpParameters) { // Add Blame Logger LoggerUtilities.AddLoggerToRunSettings(BlameFriendlyName, null, this.runSettingsManager); // Add Blame Data Collector CollectArgumentExecutor.AddDataCollectorToRunSettings(BlameFriendlyName, this.runSettingsManager, this.fileHelper); // Add default run settings if required. if (this.runSettingsManager.ActiveRunSettings?.SettingsXml == null) { this.runSettingsManager.AddDefaultRunSettings();; } var settings = this.runSettingsManager.ActiveRunSettings?.SettingsXml; // Get results directory from RunSettingsManager var resultsDirectory = GetResultsDirectory(settings); // Get data collection run settings. Create if not present. var dataCollectionRunSettings = XmlRunSettingsUtilities.GetDataCollectionRunSettings(settings); if (dataCollectionRunSettings == null) { dataCollectionRunSettings = new DataCollectionRunSettings(); } // Create blame configuration element. var XmlDocument = new XmlDocument(); var outernode = XmlDocument.CreateElement("Configuration"); var node = XmlDocument.CreateElement("ResultsDirectory"); outernode.AppendChild(node); node.InnerText = resultsDirectory; // Add collect dump node in configuration element. if (enableDump) { AddCollectDumpNode(collectDumpParameters, XmlDocument, outernode); } // Add blame configuration element to blame collector. foreach (var item in dataCollectionRunSettings.DataCollectorSettingsList) { if (item.FriendlyName.Equals(BlameFriendlyName)) { item.Configuration = outernode; } } // Update run settings. runSettingsManager.UpdateRunSettingsNodeInnerXml(Constants.DataCollectionRunSettingsName, dataCollectionRunSettings.ToXml().InnerXml); }
/// <summary> /// Initialize blame. /// </summary> /// <param name="enableCrashDump">Enable dump.</param> /// <param name="blameParameters">Blame parameters.</param> private void InitializeBlame(bool enableCrashDump, bool enableHangDump, Dictionary <string, string> collectDumpParameters) { // Add Blame Logger LoggerUtilities.AddLoggerToRunSettings(BlameFriendlyName, null, this.runSettingsManager); // Add Blame Data Collector CollectArgumentExecutor.AddDataCollectorToRunSettings(BlameFriendlyName, this.runSettingsManager, this.fileHelper); // Add default run settings if required. if (this.runSettingsManager.ActiveRunSettings?.SettingsXml == null) { this.runSettingsManager.AddDefaultRunSettings();; } var settings = this.runSettingsManager.ActiveRunSettings?.SettingsXml; // Get results directory from RunSettingsManager var resultsDirectory = GetResultsDirectory(settings); // Get data collection run settings. Create if not present. var dataCollectionRunSettings = XmlRunSettingsUtilities.GetDataCollectionRunSettings(settings); if (dataCollectionRunSettings == null) { dataCollectionRunSettings = new DataCollectionRunSettings(); } // Create blame configuration element. var XmlDocument = new XmlDocument(); var outernode = XmlDocument.CreateElement("Configuration"); var node = XmlDocument.CreateElement("ResultsDirectory"); outernode.AppendChild(node); node.InnerText = resultsDirectory; // Add collect dump node in configuration element. if (enableCrashDump) { var dumpParameters = collectDumpParameters .Where(p => new[] { "CollectAlways", "DumpType" }.Contains(p.Key)) .ToDictionary(p => p.Key, p => p.Value); if (!dumpParameters.ContainsKey("DumpType")) { dumpParameters.Add("DumpType", "Full"); } AddCollectDumpNode(dumpParameters, XmlDocument, outernode); } // Add collect hang dump node in configuration element. if (enableHangDump) { var hangDumpParameters = collectDumpParameters .Where(p => new[] { "TestTimeout", "HangDumpType" }.Contains(p.Key)) .ToDictionary(p => p.Key, p => p.Value); if (!hangDumpParameters.ContainsKey("TestTimeout")) { hangDumpParameters.Add("TestTimeout", TimeSpan.FromHours(1).TotalMilliseconds.ToString()); } if (!hangDumpParameters.ContainsKey("HangDumpType")) { hangDumpParameters.Add("HangDumpType", "Full"); } AddCollectHangDumpNode(hangDumpParameters, XmlDocument, outernode); } // Add blame configuration element to blame collector. foreach (var item in dataCollectionRunSettings.DataCollectorSettingsList) { if (item.FriendlyName.Equals(BlameFriendlyName)) { item.Configuration = outernode; } } // Update run settings. runSettingsManager.UpdateRunSettingsNodeInnerXml(Constants.DataCollectionRunSettingsName, dataCollectionRunSettings.ToXml().InnerXml); }