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;
        }
Example #3
0
 public override void Initialize(
     XmlElement configurationElement,
     DataCollectionEvents events,
     DataCollectionSink dataSink,
     DataCollectionLogger logger,
     DataCollectionEnvironmentContext environmentContext)
 {
     tracerPath = configurationElement["TracerPath"].InnerText;
     outputDir  = configurationElement["OutputDir"].InnerText;
 }
Example #4
0
        /// <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();
            }
        }
Example #5
0
 public override void Initialize(
     XmlElement configurationElement,
     DataCollectionEvents events,
     DataCollectionSink dataSink,
     DataCollectionLogger logger,
     DataCollectionEnvironmentContext environmentContext)
 {
     events.SessionEnd  += SessionEnded_Handler;
     _dataCollectionSink = dataSink;
     _context            = environmentContext;
 }
Example #6
0
 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;
 }
Example #7
0
 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)
        {
            _dataEvents = events;
            _dataLogger = logger;
            _dataSink = dataSink;

            _configSettings = configurationElement;
            RegisterEventHandlers();

            _nyanCat = new CatRenderer();
            _stats = new TestStats();
        }
Example #10
0
 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));
 }
        /// <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);
        }
Example #12
0
        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;
        }
Example #13
0
        /// <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;
        }
        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 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)
        {
            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)
 {
     _ = StartTracing(message => logger.LogWarning(environmentContext.SessionDataCollectionContext, message));
 }
 public DataCollectionEventsWrapper(DataCollectionEvents wrapped)
 {
     this.wrapped = wrapped;
 }
Example #18
0
        /// <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 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]");
 }