public override void Initialize( System.Xml.XmlElement configurationElement, DataCollectionEvents events, DataCollectionSink dataSink, DataCollectionLogger logger, DataCollectionEnvironmentContext environmentContext) { log = new Lazy <CloudwatchLogsSink>(() => // have to wait as late as possible for DataCollector to bind the right assembly versions new ServiceCollection() .AddAlteredAws() .AddCloudwatchLogs() .BuildServiceProvider() .GetService <CloudwatchLogsSink>()); log2 = logger; events.TestHostLaunched += TestHostLaunched_Handler; events.SessionStart += SessionStarted_Handler; events.SessionEnd += SessionEnded_Handler; events.TestCaseStart += Events_TestCaseStart; events.TestCaseEnd += Events_TestCaseEnd; dataSink.SendFileCompleted += DataSink_SendFileCompleted; }
/// <summary> /// Initializes the data collector /// </summary> /// <param name="configurationElement"> /// The XML element containing configuration information for the data collector. Currently, /// this data collector does not have any configuration, so we ignore this parameter. /// </param> /// <param name="events"> /// Object containing the execution events the data collector registers for /// </param> /// <param name="dataSink">The sink used by the data collector to send its data</param> /// <param name="logger"> /// Used by the data collector to send warnings, errors, or other messages /// </param> /// <param name="dataCollectionEnvironmentContext">Provides contextual information about the agent environment</param> public override void Initialize( XmlElement configurationElement, DataCollectionEvents events, DataCollectionSink dataSink, DataCollectionLogger logger, DataCollectionEnvironmentContext dataCollectionEnvironmentContext) { ValidateArg.NotNull(events, nameof(events)); ValidateArg.NotNull(dataSink, nameof(dataSink)); ValidateArg.NotNull(logger, nameof(logger)); this.events = events; this.dataSink = dataSink; this.logger = logger; this.dataCollectorContext = dataCollectionEnvironmentContext.SessionDataCollectionContext; // Load the configuration CollectorNameValueConfigurationManager nameValueSettings = new CollectorNameValueConfigurationManager(configurationElement); // Apply the configuration this.ConfigureEventSources(nameValueSettings); this.ConfigureEntryTypes(nameValueSettings); this.ConfigureMaxEntries(nameValueSettings); this.ConfigureEventLogNames(nameValueSettings); // Register for events events.SessionStart += this.sessionStartEventHandler; events.SessionEnd += this.sessionEndEventHandler; events.TestCaseStart += this.testCaseStartEventHandler; events.TestCaseEnd += this.testCaseEndEventHandler; }
/// <summary> /// Initializes parameters for the new instance of the class <see cref="BlameDataCollector"/> /// </summary> /// <param name="configurationElement">The Xml Element to save to</param> /// <param name="events">Data collection events to which methods subscribe</param> /// <param name="dataSink">A data collection sink for data transfer</param> /// <param name="logger">Data Collection Logger to send messages to the client </param> /// <param name="environmentContext">Context of data collector environment</param> public override void Initialize( XmlElement configurationElement, DataCollectionEvents events, DataCollectionSink dataSink, DataCollectionLogger logger, DataCollectionEnvironmentContext environmentContext) { ValidateArg.NotNull(logger, nameof(logger)); this.events = events; this.dataCollectionSink = dataSink; this.context = environmentContext; this.configurationElement = configurationElement; this.testSequence = new List <TestCase>(); this.logger = logger; // Subscribing to events this.events.TestHostLaunched += this.TestHostLaunched_Handler; this.events.SessionEnd += this.SessionEnded_Handler; this.events.TestCaseStart += this.EventsTestCaseStart; this.events.TestCaseEnd += this.EventsTestCaseEnd; if (this.configurationElement != null) { this.processDumpEnabled = this.configurationElement[Constants.DumpModeKey] != null; } this.attachmentGuid = Guid.NewGuid().ToString().Replace("-", string.Empty); }
/// <summary> /// Initializes data collector /// </summary> /// <param name="configurationElement">Configuration element</param> /// <param name="events">Events to register on</param> /// <param name="dataSink">Data sink to send attachments to test platform</param> /// <param name="logger">Test platform logger</param> /// <param name="environmentContext">Environment context</param> public override void Initialize( XmlElement configurationElement, DataCollectionEvents events, DataCollectionSink dataSink, DataCollectionLogger logger, DataCollectionEnvironmentContext environmentContext) { AttachDebugger(); if (_eqtTrace.IsInfoEnabled) { _eqtTrace.Info("Initializing {0} with configuration: '{1}'", CoverletConstants.DataCollectorName, configurationElement?.OuterXml); } // Store input variables _events = events; _configurationElement = configurationElement; _dataSink = dataSink; _dataCollectionContext = environmentContext.SessionDataCollectionContext; _logger = new TestPlatformLogger(logger, _dataCollectionContext); // Register events _events.SessionStart += OnSessionStart; _events.SessionEnd += OnSessionEnd; }
public override void Initialize( XmlElement configurationElement, DataCollectionEvents events, DataCollectionSink dataSink, DataCollectionLogger logger, DataCollectionEnvironmentContext environmentContext) { }
public override void Initialize(XmlElement configurationElement, DataCollectionEvents events, DataCollectionSink dataSink, DataCollectionLogger logger, DataCollectionEnvironmentContext environmentContext) { mDataSink = dataSink; events.SessionStart += OnSessionStart; events.SessionEnd += OnSessionEnd; events.TestCaseStart += OnTestCaseStart; events.TestCaseEnd += OnTestCaseEnd; }
public override void Initialize( XmlElement configurationElement, DataCollectionEvents events, DataCollectionSink dataSink, DataCollectionLogger logger, DataCollectionEnvironmentContext environmentContext) { tracerPath = configurationElement["TracerPath"].InnerText; outputDir = configurationElement["OutputDir"].InnerText; }
/// <summary> /// Initializes parameters for the new instance of the class <see cref="BlameDataCollector"/> /// </summary> /// <param name="configurationElement">The Xml Element to save to</param> /// <param name="events">Data collection events to which methods subscribe</param> /// <param name="dataSink">A data collection sink for data transfer</param> /// <param name="logger">Data Collection Logger to send messages to the client </param> /// <param name="environmentContext">Context of data collector environment</param> public override void Initialize( XmlElement configurationElement, DataCollectionEvents events, DataCollectionSink dataSink, DataCollectionLogger logger, DataCollectionEnvironmentContext environmentContext) { ValidateArg.NotNull(logger, nameof(logger)); this.events = events; this.dataCollectionSink = dataSink; this.context = environmentContext; this.configurationElement = configurationElement; this.testSequence = new List <Guid>(); this.testObjectDictionary = new Dictionary <Guid, BlameTestObject>(); this.logger = logger; // Subscribing to events this.events.TestHostLaunched += this.TestHostLaunchedHandler; this.events.SessionEnd += this.SessionEndedHandler; this.events.TestCaseStart += this.EventsTestCaseStart; this.events.TestCaseEnd += this.EventsTestCaseEnd; if (this.configurationElement != null) { var collectDumpNode = this.configurationElement[Constants.DumpModeKey]; this.collectProcessDumpOnTrigger = collectDumpNode != null; if (this.collectProcessDumpOnTrigger) { this.ValidateAndAddTriggerBasedProcessDumpParameters(collectDumpNode); } var collectHangBasedDumpNode = this.configurationElement[Constants.CollectDumpOnTestSessionHang]; this.collectProcessDumpOnTestHostHang = collectHangBasedDumpNode != null; if (this.collectProcessDumpOnTestHostHang) { this.ValidateAndAddHangBasedProcessDumpParameters(collectHangBasedDumpNode); } var tfm = this.configurationElement[Constants.TargetFramework]?.InnerText; if (!string.IsNullOrWhiteSpace(tfm)) { this.targetFramework = tfm; } } this.attachmentGuid = Guid.NewGuid().ToString().Replace("-", string.Empty); if (this.collectProcessDumpOnTestHostHang) { this.inactivityTimer = this.inactivityTimer ?? new InactivityTimer(this.CollectDumpAndAbortTesthost); this.ResetInactivityTimer(); } }
public AttachmentManager(DataCollectionSink dataSink, DataCollectionContext dataCollectionContext, TestPlatformLogger logger, TestPlatformEqtTrace eqtTrace, string reportFileName) : this(dataSink, dataCollectionContext, logger, eqtTrace, reportFileName, Guid.NewGuid().ToString(), new FileHelper(), new DirectoryHelper()) { }
public AttachmentManager(DataCollectionSink dataSink, DataCollectionContext dataCollectionContext, TestPlatformLogger logger, TestPlatformEqtTrace eqtTrace, ICountDownEvent countDownEvent) : this(dataSink, dataCollectionContext, logger, eqtTrace, Guid.NewGuid().ToString(), new FileHelper(), new DirectoryHelper(), countDownEvent) { }
public override void Initialize( XmlElement configurationElement, DataCollectionEvents events, DataCollectionSink dataSink, DataCollectionLogger logger, DataCollectionEnvironmentContext environmentContext) { events.SessionEnd += SessionEnded_Handler; _dataCollectionSink = dataSink; _context = environmentContext; }
public override void Initialize( System.Xml.XmlElement configurationElement, DataCollectionEvents events, DataCollectionSink dataSink, DataCollectionLogger logger, DataCollectionEnvironmentContext environmentContext) { events.SessionStart += this.SessionStarted_Handler; events.TestCaseStart += this.Events_TestCaseStart; _logger = logger; _context = environmentContext; }
public override void Initialize( System.Xml.XmlElement configurationElement, DataCollectionEvents events, DataCollectionSink dataSink, DataCollectionLogger logger, DataCollectionEnvironmentContext environmentContext) { events.SessionStart += new EventHandler <SessionStartEventArgs>(this.SessionStarted_Handler); events.SessionEnd += new EventHandler <SessionEndEventArgs>(this.SessionEnded_Handler); this.dataCollectionSink = dataSink; this.context = environmentContext; this.logger = logger; }
public override void Initialize(XmlElement configurationElement, DataCollectionEvents events, DataCollectionSink dataSink, DataCollectionLogger logger, DataCollectionEnvironmentContext environmentContext) { _dataEvents = events; _dataLogger = logger; _dataSink = dataSink; _configSettings = configurationElement; RegisterEventHandlers(); _nyanCat = new CatRenderer(); _stats = new TestStats(); }
public override void Initialize( XmlElement configurationElement, DataCollectionEvents events, DataCollectionSink dataSink, DataCollectionLogger logger, DataCollectionEnvironmentContext environmentContext) { this.Initialize( configurationElement, new DataCollectionEventsWrapper(events), new DataCollectionSinkWrapper(dataSink), new DataCollectionLoggerWrapper(logger), new DataCollectionEnvironmentContextWrapper(environmentContext)); }
public AttachmentManager(DataCollectionSink dataSink, DataCollectionContext dataCollectionContext, TestPlatformLogger logger, TestPlatformEqtTrace eqtTrace, string reportFileName, string reportDirectoryName, FileHelper fileHelper, DirectoryHelper directoryHelper) { // Store input vars this.dataSink = dataSink; this.dataCollectionContext = dataCollectionContext; this.logger = logger; this.eqtTrace = eqtTrace; this.reportFileName = reportFileName; this.fileHelper = fileHelper; this.directoryHelper = directoryHelper; // Report directory to store the coverage reports. this.reportDirectory = Path.Combine(Path.GetTempPath(), reportDirectoryName); // Register events this.dataSink.SendFileCompleted += this.OnSendFileCompleted; }
public AttachmentManager(DataCollectionSink dataSink, DataCollectionContext dataCollectionContext, TestPlatformLogger logger, TestPlatformEqtTrace eqtTrace, string reportDirectoryName, IFileHelper fileHelper, IDirectoryHelper directoryHelper, ICountDownEvent countDownEvent) { // Store input variabless _dataSink = dataSink; _dataCollectionContext = dataCollectionContext; _logger = logger; _eqtTrace = eqtTrace; _fileHelper = fileHelper; _directoryHelper = directoryHelper; _countDownEvent = countDownEvent; // Report directory to store the coverage reports. _reportDirectory = Path.Combine(Path.GetTempPath(), reportDirectoryName); // Register events _dataSink.SendFileCompleted += OnSendFileCompleted; }
/// <summary> /// Disposes the data collector /// </summary> /// <param name="disposing">Disposing flag</param> protected override void Dispose(bool disposing) { _eqtTrace.Verbose("{0}: Disposing", CoverletConstants.DataCollectorName); // Unregister events if (_events != null) { _events.SessionStart -= OnSessionStart; _events.SessionEnd -= OnSessionEnd; } // Remove vars _events = null; _dataSink = null; _coverageManager = null; base.Dispose(disposing); }
public override void Initialize( XmlElement configurationElement, DataCollectionEvents events, DataCollectionSink dataSink, DataCollectionLogger logger, DataCollectionEnvironmentContext environmentContext) { _logger = logger; context = environmentContext; events.TestCaseEnd += EventsOnTestCaseEnd; events.TestCaseStart += EventsOnTestCaseStart; events.SessionEnd += EventsOnSessionEnd; events.SessionStart += EventsOnSessionStart; AppDomain.CurrentDomain.ProcessExit += OnCurrentDomain_ProcessExit; AppDomain.CurrentDomain.UnhandledException += OnCurrentDomain_ProcessExit; }
public override void Initialize(XmlElement configurationElement, DataCollectionEvents events, DataCollectionSink dataSink, DataCollectionLogger logger, DataCollectionEnvironmentContext environmentContext) { // Load config _sessionConfiguration = new SessionConfiguration( (uint)ReadIntAttribute(configurationElement, "circularBufferSizeMB", 1024), EventPipeSerializationFormat.NetTrace, ReadProviders(configurationElement)); _dataSink = dataSink; _logger = logger; var traceExt = _sessionConfiguration.Format == EventPipeSerializationFormat.NetTrace ? "nettrace" : "netperf"; _traceDirectory = Path.Combine(Path.GetTempPath(), "vstest_eventpipe", $"{environmentContext.SessionDataCollectionContext.SessionId.Id:N}_{Guid.NewGuid():N}"); if (!Directory.Exists(_traceDirectory)) { Directory.CreateDirectory(_traceDirectory); } events.SessionEnd += Events_SessionEnd; }
/// <summary> /// Initializes parameters for the new instance of the class <see cref="BlameDataCollector"/> /// </summary> /// <param name="configurationElement">The Xml Element to save to</param> /// <param name="events">Data collection events to which methods subscribe</param> /// <param name="dataSink">A data collection sink for data transfer</param> /// <param name="logger">Data Collection Logger to send messages to the client </param> /// <param name="environmentContext">Context of data collector environment</param> public override void Initialize( XmlElement configurationElement, DataCollectionEvents events, DataCollectionSink dataSink, DataCollectionLogger logger, DataCollectionEnvironmentContext environmentContext) { ValidateArg.NotNull(logger, nameof(logger)); this.events = events; this.dataCollectionSink = dataSink; this.context = environmentContext; this.configurationElement = configurationElement; this.testSequence = new List <TestCase>(); // Subscribing to events this.events.SessionEnd += this.SessionEnded_Handler; this.events.TestCaseStart += this.EventsTestCaseStart; this.events.TestCaseEnd += this.EventsTestCaseEnd; }
/// <summary> /// Initializes parameters for the new instance of the class <see cref="BlameDataCollector"/> /// </summary> /// <param name="configurationElement">The Xml Element to save to</param> /// <param name="events">Data collection events to which methods subscribe</param> /// <param name="dataSink">A data collection sink for data transfer</param> /// <param name="logger">Data Collection Logger to send messages to the client </param> /// <param name="environmentContext">Context of data collector environment</param> public override void Initialize( XmlElement configurationElement, DataCollectionEvents events, DataCollectionSink dataSink, DataCollectionLogger logger, DataCollectionEnvironmentContext environmentContext) { ValidateArg.NotNull(logger, nameof(logger)); this.events = events; this.dataCollectionSink = dataSink; this.context = environmentContext; this.configurationElement = configurationElement; this.testSequence = new List <Guid>(); this.testObjectDictionary = new Dictionary <Guid, BlameTestObject>(); this.logger = logger; // Subscribing to events this.events.TestHostLaunched += this.TestHostLaunchedHandler; this.events.SessionEnd += this.SessionEndedHandler; this.events.TestCaseStart += this.EventsTestCaseStart; this.events.TestCaseEnd += this.EventsTestCaseEnd; if (this.configurationElement != null) { var collectDumpNode = this.configurationElement[Constants.DumpModeKey]; this.collectProcessDumpOnTrigger = collectDumpNode != null; if (this.collectProcessDumpOnTrigger) { this.ValidateAndAddTriggerBasedProcessDumpParameters(collectDumpNode); // enabling dumps on MacOS needs to be done explicitly https://github.com/dotnet/runtime/pull/40105 this.environmentVariables.Add(new KeyValuePair <string, string>("COMPlus_DbgEnableElfDumpOnMacOS", "1")); this.environmentVariables.Add(new KeyValuePair <string, string>("COMPlus_DbgEnableMiniDump", "1")); // https://github.com/dotnet/coreclr/blob/master/Documentation/botr/xplat-minidump-generation.md // 2 MiniDumpWithPrivateReadWriteMemory // 4 MiniDumpWithFullMemory this.environmentVariables.Add(new KeyValuePair <string, string>("COMPlus_DbgMiniDumpType", this.processFullDumpEnabled ? "4" : "2")); var dumpDirectory = this.GetDumpDirectory(); var dumpPath = Path.Combine(dumpDirectory, $"%e_%p_%t_crashdump.dmp"); this.environmentVariables.Add(new KeyValuePair <string, string>("COMPlus_DbgMiniDumpName", dumpPath)); } var collectHangBasedDumpNode = this.configurationElement[Constants.CollectDumpOnTestSessionHang]; this.collectProcessDumpOnTestHostHang = collectHangBasedDumpNode != null; if (this.collectProcessDumpOnTestHostHang) { // enabling dumps on MacOS needs to be done explicitly https://github.com/dotnet/runtime/pull/40105 this.environmentVariables.Add(new KeyValuePair <string, string>("COMPlus_DbgEnableElfDumpOnMacOS", "1")); this.ValidateAndAddHangBasedProcessDumpParameters(collectHangBasedDumpNode); } var tfm = this.configurationElement[Constants.TargetFramework]?.InnerText; if (!string.IsNullOrWhiteSpace(tfm)) { this.targetFramework = tfm; } } this.attachmentGuid = Guid.NewGuid().ToString().Replace("-", string.Empty); if (this.collectProcessDumpOnTestHostHang) { this.inactivityTimer = this.inactivityTimer ?? new InactivityTimer(this.CollectDumpAndAbortTesthost); this.ResetInactivityTimer(); } }
public DataCollectionSinkWrapper(DataCollectionSink wrapped) { this.wrapped = wrapped; }
public override void Initialize(XmlElement configurationElement, DataCollectionEvents events, DataCollectionSink dataSink, DataCollectionLogger logger, DataCollectionEnvironmentContext environmentContext) { events.TestCaseStart += (sender, e) => logger.LogWarning(environmentContext.SessionDataCollectionContext, e.TestCaseName + " [Start]"); events.TestCaseEnd += (sender, e) => logger.LogWarning(environmentContext.SessionDataCollectionContext, e.TestCaseName + " [Ended]"); }
public override void Initialize(XmlElement configurationElement, DataCollectionEvents events, DataCollectionSink dataSink, DataCollectionLogger logger, DataCollectionEnvironmentContext environmentContext) { _ = StartTracing(message => logger.LogWarning(environmentContext.SessionDataCollectionContext, message)); }
/// <inheritdoc /> public override void Initialize(XmlElement configurationElement, DataCollectionEvents events, DataCollectionSink dataSink, DataCollectionLogger logger, DataCollectionEnvironmentContext environmentContext) { _events = events; _logger = new DataCollectorLogger(logger, environmentContext.SessionDataCollectionContext); try { _ciVisibilitySettings = CIVisibilitySettings.FromDefaultSources(); // Read the SIGNALFX_DOTNET_TRACER_HOME environment variable _tracerHome = Util.EnvironmentHelpers.GetEnvironmentVariable("SIGNALFX_DOTNET_TRACER_HOME"); if (string.IsNullOrEmpty(_tracerHome) || !Directory.Exists(_tracerHome)) { _logger.Error("Tracer home (SIGNALFX_DOTNET_TRACER_HOME environment variable) is not defined or folder doesn't exist, coverage has been disabled."); // By not register a handler to SessionStart and SessionEnd the coverage gets disabled (assemblies are not being processed). return; } } catch (Exception ex) { _logger.Error(ex); _ciVisibilitySettings = null; } if (_events is not null) { _events.SessionStart += OnSessionStart; _events.SessionEnd += OnSessionEnd; } }