public PipelineTestRunPublisher(IClientFactory clientFactory, IPipelineConfig pipelineConfig, ITraceLogger logger, ITelemetryDataCollector telemetry)
 {
     _logger         = logger;
     _telemetry      = telemetry;
     _pipelineConfig = pipelineConfig;
     _httpClient     = clientFactory.GetClient <TestResultsHttpClient>();
 }
Beispiel #2
0
 /// <summary>
 /// Creates a timer with threshold. A perf message is logged only if
 /// the time elapsed is more than the threshold.
 /// </summary>
 public SimpleTimer(string telemetryArea, string telemetryEventName, ITelemetryDataCollector telemetryDataCollector)
 {
     _telemetryEventName = telemetryEventName;
     _telemetryArea      = telemetryArea;
     _telemetry          = telemetryDataCollector;
     _timer = Stopwatch.StartNew();
 }
Beispiel #3
0
 /// <summary>
 /// Constructor for a node parser state
 /// </summary>
 /// <param name="parserResetAndAttempPublish">Delegate sent by the parser to reset the parser and attempt publication of test results</param>
 /// <param name="logger"></param>
 /// <param name="telemetryDataCollector"></param>
 protected NodeParserStateBase(ParserResetAndAttemptPublish parserResetAndAttempPublish, ITraceLogger logger, ITelemetryDataCollector telemetryDataCollector, string parserName)
 {
     Logger     = logger;
     ParserName = parserName;
     StateName  = GetType().Name;
     Telemetry  = telemetryDataCollector;
     AttemptPublishAndResetParser = parserResetAndAttempPublish;
 }
Beispiel #4
0
        public HWUsageCollectorTask()
            : base("HWUsageCollector", true, new ScheduledTaskInterval(0, 0, 0, 1), false)
        {
            IServiceManager manager = ServiceManager.GetInstance();

            telemetry  = manager.GetService <ITelemetryDataCollector>();
            coreServer = manager.GetService <ICoreServerService>();
        }
 public void SetTelemetryDataCollector(ITelemetryDataCollector telemetry)
 {
     // only keep the first set value
     if (TelemetryDataCollector == null)
     {
         TelemetryDataCollector = telemetry;
     }
 }
        public TelemetryProcessorTask()
            : base("TelemetryProcessor", false, new ScheduledTaskInterval(0, 0, 0, 30), false)
        {
            IServiceManager manager = ServiceManager.GetInstance();

            telemetry = manager.GetService <ITelemetryServicesProvider>();
            collector = manager.GetService <ITelemetryDataCollector>();
            logging   = manager.GetService <ILoggingService>();
        }
Beispiel #7
0
 public TestFilePublisher(VssConnection vssConnection, PipelineConfig pipelineConfig, TraceListener traceListener,
                          ITraceLogger logger, ITelemetryDataCollector telemetry, ITestFileFinder testFileFinder,
                          ITestResultParser testResultParser, ITestRunPublisher testRunPublisher)
     : this(vssConnection, pipelineConfig, traceListener, logger, telemetry)
 {
     _testFileFinder   = testFileFinder;
     _testResultParser = testResultParser;
     _testRunPublisher = testRunPublisher;
 }
Beispiel #8
0
 public TestFilePublisher(VssConnection vssConnection, PipelineConfig pipelineConfig, TraceListener traceListener,
                          ITraceLogger logger, ITelemetryDataCollector telemetry)
 {
     _traceListener  = traceListener;
     _vssConnection  = vssConnection;
     _pipelineConfig = pipelineConfig;
     _logger         = logger;
     _telemetry      = telemetry;
 }
 /// <inheritdoc />
 public JasmineParserStateExpectingTestRunStart(ParserResetAndAttemptPublish parserResetAndAttemptPublish, ITraceLogger logger,
                                                ITelemetryDataCollector telemetryDataCollector, string parseName)
     : base(parserResetAndAttemptPublish, logger, telemetryDataCollector, parseName)
 {
     RegexesToMatch = new List <RegexActionPair>
     {
         new RegexActionPair(JasmineRegexes.TestRunStart, TestRunStartMatched),
     };
 }
        public Parser(PublisherConfiguration config, ITelemetryDataCollector telemetry)
        {
            _configuration = config;
            _telemetry     = telemetry;

            using (new SimpleTimer("Parser", "Parsing", _telemetry))
            {
                _coverageParserTool = new Lazy <ICoverageParserTool>(() => this.GetCoverageParserTool(_configuration));
            }
        }
Beispiel #11
0
 /// <inheritdoc />
 public JestParserStateExpectingTestRunSummary(ParserResetAndAttemptPublish parserResetAndAttemptPublish, ITraceLogger logger,
                                               ITelemetryDataCollector telemetryDataCollector, string parseName)
     : base(parserResetAndAttemptPublish, logger, telemetryDataCollector, parseName)
 {
     RegexesToMatch = new List <RegexActionPair>
     {
         new RegexActionPair(JestRegexs.TestsSummary, TestsSummaryMatched),
         new RegexActionPair(JestRegexs.TestRunTime, TestRunTimeMatched),
         new RegexActionPair(JestRegexs.TestRunStart, TestRunStartMatched)
     };
 }
Beispiel #12
0
 /// <inheritdoc />
 public JestParserStateExpectingStackTraces(ParserResetAndAttemptPublish parserResetAndAttemptPublish, ITraceLogger logger,
                                            ITelemetryDataCollector telemetryDataCollector, string parseName)
     : base(parserResetAndAttemptPublish, logger, telemetryDataCollector, parseName)
 {
     RegexesToMatch = new List <RegexActionPair>
     {
         new RegexActionPair(JestRegexs.StackTraceStart, StackTraceStartMatched),
         new RegexActionPair(JestRegexs.SummaryStart, SummaryStartMatched),
         new RegexActionPair(JestRegexs.TestRunStart, TestRunStartMatched),
         new RegexActionPair(JestRegexs.FailedTestsSummaryIndicator, FailedTestsSummaryIndicatorMatched)
     };
 }
 /// <inheritdoc />
 public MochaParserStateExpectingTestResults(ParserResetAndAttemptPublish parserResetAndAttemptPublish, ITraceLogger logger,
                                             ITelemetryDataCollector telemetryDataCollector, string parserName)
     : base(parserResetAndAttemptPublish, logger, telemetryDataCollector, parserName)
 {
     RegexesToMatch = new List <RegexActionPair>
     {
         new RegexActionPair(MochaRegexes.PassedTestCase, PassedTestCaseMatched),
         new RegexActionPair(MochaRegexes.FailedTestCase, FailedTestCaseMatched),
         new RegexActionPair(MochaRegexes.PendingTestCase, PendingTestCaseMatched),
         new RegexActionPair(MochaRegexes.PassedTestsSummary, PassedTestsSummaryMatched)
     };
 }
 /// <summary>
 /// Creates a timer with threshold. A perf message is logged only if
 /// the time elapsed is more than the threshold.
 /// </summary>
 public SimpleTimer(string timerName, string telemetryArea, string telemetryEventName, ITraceLogger logger,
                    ITelemetryDataCollector telemetryDataCollector, TimeSpan threshold, bool publishTelemetry = true)
 {
     _name = timerName;
     _telemetryEventName = telemetryEventName;
     _telemetryArea      = telemetryArea;
     _logger             = logger;
     _telemetry          = telemetryDataCollector;
     _threshold          = threshold;
     _timer            = Stopwatch.StartNew();
     _publishTelemetry = publishTelemetry;
 }
Beispiel #15
0
 /// <inheritdoc />
 public JasmineParserStateExpectingTestResults(ParserResetAndAttemptPublish parserResetAndAttemptPublish, ITraceLogger logger,
                                               ITelemetryDataCollector telemetryDataCollector, string parseName)
     : base(parserResetAndAttemptPublish, logger, telemetryDataCollector, parseName)
 {
     RegexesToMatch = new List <RegexActionPair>
     {
         new RegexActionPair(JasmineRegexes.FailedOrPendingTestCase, FailedOrPendingTestCaseMatched),
         new RegexActionPair(JasmineRegexes.FailuresStart, FailuresStartMatched),
         new RegexActionPair(JasmineRegexes.PendingStart, PendingStartMatched),
         new RegexActionPair(JasmineRegexes.TestsSummaryMatcher, SummaryMatched),
         new RegexActionPair(JasmineRegexes.TestRunStart, TestRunStartMatched),
         new RegexActionPair(JasmineRegexes.SuiteError, SuiteErrorMatched)
     };
 }
Beispiel #16
0
        internal RequestProcessor(ref string uriRequest, ref Socket clientSocket)
        {
            IServiceManager serviceManager = ServiceManager.GetInstance();

            logger             = serviceManager.GetService <ILoggingService>();
            controllerManager  = serviceManager.GetService <IControllerManager>();
            interceptorManager = serviceManager.GetService <IInterceptorManagerService>();
            telemetry          = serviceManager.GetService <ITelemetryDataCollector>();

            typedObjManager   = new TypedObjectsRequestManager();
            this.clientSocket = clientSocket;
            try
            {
                using (StringReader sr = new StringReader(uriRequest))
                {
                    using (JsonReader reader = new JsonTextReader(sr))
                    {
                        JsonSerializer ser = new JsonSerializer();
                        ser.ApplyCustomSettings();
                        requestBody = ser.Deserialize <RequestBody>(reader);
                    }
                }

                this.clientSocket = clientSocket;
                if (requestBody == null)
                {
                    return;
                }

                uriRequest = null;
            }
            catch (Exception ex)
            {
                string msg = ex.Message;
                if (ex.InnerException != null)
                {
                    msg += ex.InnerException.Message;
                    if (ex.InnerException.InnerException != null)
                    {
                        msg += ex.InnerException.InnerException.Message;
                    }
                }

                logger.WriteLog($@"A syntax error was detected while converting the request body to a server object. 
{msg}", ServerLogType.ERROR);
                new SocketRequest().ProcessResponse(ActionResult.Json("", ResponseStatus.ERROR,
                                                                      $@"A syntax error was detected while converting the request body to a server object. 
{msg}"), this.clientSocket, null);
            }
        }
        public override void OnPostExecute(object result)
        {
            clientSocket       = null;
            typedObjManager    = null;
            requestBody        = null;
            method             = null;
            logger             = null;
            controllerManager  = null;
            interceptorManager = null;
            telemetry          = null;
            controller         = null;


            DownThreadCount();
        }
        /// <inheritdoc />
        public async Task InitializeAsync(IClientFactory clientFactory, IPipelineConfig pipelineConfig, ITraceLogger traceLogger, ITelemetryDataCollector telemetry)
        {
            await Task.Run(() =>
            {
                _logger         = traceLogger;
                _telemetry      = telemetry;
                var publisher   = new PipelineTestRunPublisher(clientFactory, pipelineConfig, _logger, _telemetry);
                _testRunManager = new TestRunManager(publisher, _logger, _telemetry);
                var parsers     = ParserFactory.GetTestResultParsers(_testRunManager, traceLogger, _telemetry).ToList();

                _telemetry.AddOrUpdate(TelemetryConstants.ParserCount, parsers.Count);

                foreach (var parser in parsers)
                {
                    // Subscribe parsers to Pub-Sub model
                    Subscribe(parser.Parse);
                }
            });
        }
 public InterceptorManagementServiceImpl()
 {
     Interceptors = new List <IHandlerInterceptor>(10);
     telemetry    = ServiceManager.GetInstance().GetService <ITelemetryDataCollector>();
 }
Beispiel #20
0
 /// <inheritdoc />
 public JestExpectingTestResults(ParserResetAndAttemptPublish parserResetAndAttemptPublish, ITraceLogger logger, ITelemetryDataCollector telemetryDataCollector)
     : base(parserResetAndAttemptPublish, logger, telemetryDataCollector)
 {
     RegexsToMatch = new List <RegexActionPair>
     {
         new RegexActionPair(JestRegexs.PassedTestCase, PassedTestCaseMatched),
         new RegexActionPair(JestRegexs.FailedTestCase, FailedTestCaseMatched),
         new RegexActionPair(JestRegexs.StackTraceStart, StackTraceStartMatched),
         new RegexActionPair(JestRegexs.SummaryStart, SummaryStartMatched),
         new RegexActionPair(JestRegexs.TestRunStart, TestRunStartMatched),
         new RegexActionPair(JestRegexs.FailedTestsSummaryIndicator, FailedTestsSummaryIndicatorMatched)
     };
 }
Beispiel #21
0
 /// <summary>
 /// For UTs only
 /// </summary>
 public TestResultLogPlugin(ILogParserGateway inputDataParser, ITraceLogger logger, ITelemetryDataCollector telemetry)
 {
     _logger          = logger;
     _telemetry       = telemetry;
     _inputDataParser = inputDataParser;
 }
 /// <summary>
 /// Constructor for a mocha parser state
 /// </summary>
 /// <param name="parserResetAndAttempPublish">Delegate sent by the parser to reset the parser and attempt publication of test results</param>
 /// <param name="logger"></param>
 /// <param name="telemetryDataCollector"></param>
 protected MochaParserStateBase(ParserResetAndAttemptPublish parserResetAndAttempPublish, ITraceLogger logger, ITelemetryDataCollector telemetryDataCollector)
 {
     this.logger = logger;
     this.telemetryDataCollector       = telemetryDataCollector;
     this.attemptPublishAndResetParser = parserResetAndAttempPublish;
 }
 public TestParser(PublisherConfiguration config, ITelemetryDataCollector telemetryDataCollector, ICoverageParserTool tool) : base(config, telemetryDataCollector)
 {
     _tool = tool;
 }
 public TestParser(PublisherConfiguration config, ITelemetryDataCollector telemetryDataCollector) : base(config, telemetryDataCollector)
 {
 }
Beispiel #25
0
 internal PythonTestResultParser(ITelemetryDataCollector telemetryCollector, IDiagnosticDataCollector diagnosticsCollector)
 {
     this.telemetryDataCollector  = telemetryCollector;
     this.diagnosticDataCollector = diagnosticsCollector;
 }
        /// <summary>
        /// Default constructor accepting only test run manager instance, rest of the requirements assume default values
        /// </summary>
        public PythonTestResultParser(ITestRunManager testRunManager, ITraceLogger logger, ITelemetryDataCollector telemetry)
            : base(testRunManager, logger, telemetry)
        {
            Logger.Info("PythonTestResultParser : Starting python test result parser.");
            Telemetry.AddOrUpdate(PythonTelemetryConstants.Initialize, true, PythonTelemetryConstants.EventArea);

            _state          = ParserState.ExpectingTestResults;
            _currentTestRun = new TestRun($"{Name}/{Version}", "Python", _currentTestRunId);
        }
 /// <summary>
 /// For UTs only
 /// </summary>
 public TestFilePublisherLogPlugin(ITraceLogger logger, ITelemetryDataCollector telemetry, ITestFilePublisher testFilePublisher)
 {
     _logger            = logger;
     _telemetry         = telemetry;
     _testFilePublisher = testFilePublisher;
 }
Beispiel #28
0
        public static IEnumerable <AbstractTestResultParser> GetTestResultParsers(ITestRunManager testRunManager, ITraceLogger logger, ITelemetryDataCollector telemetry)
        {
            var currentDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            var dllFile    = new FileInfo(Path.Combine(currentDir, "Agent.Plugins.Log.TestResultParser.Parser.dll"));

            Assembly.LoadFrom(dllFile.FullName);

            var interfaceType = typeof(AbstractTestResultParser);

            return(AppDomain.CurrentDomain.GetAssemblies()
                   .SelectMany(x => x.GetTypes())
                   .Where(x => interfaceType.IsAssignableFrom(x) && !x.IsInterface && !x.IsAbstract)
                   .Select(x => (AbstractTestResultParser)Activator.CreateInstance(x, testRunManager, logger, telemetry)));
        }
        public static IEnumerable <AbstractTestResultParser> GetTestResultParsers(ITestRunManager testRunManager, ITraceLogger logger, ITelemetryDataCollector telemetry)
        {
            var currentDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            var dllFile    = new FileInfo(Path.Combine(currentDir, "Agent.Plugins.Log.TestResultParser.Parser.dll"));

            Assembly.LoadFrom(dllFile.FullName);

            var interfaceType = typeof(AbstractTestResultParser);

            return(AppDomain.CurrentDomain.GetAssemblies()
                   .SelectMany((x) =>
            {
                try
                {
                    return x.GetTypes();
                }
                catch
                {
                    // Skipping issues with assemblies load via reflection - since there are some issues with 'Microsoft.VisualStudio.Services.Agent', although this assembly is not relevant here
                    return new Type[0];
                }
            })
                   .Where(x => interfaceType.IsAssignableFrom(x) && !x.IsInterface && !x.IsAbstract)
                   .Select(x => (AbstractTestResultParser)Activator.CreateInstance(x, testRunManager, logger, telemetry)));
        }
 /// <inheritdoc />
 public JestExpectingTestRunStart(ParserResetAndAttemptPublish parserResetAndAttemptPublish, ITraceLogger logger, ITelemetryDataCollector telemetryDataCollector)
     : base(parserResetAndAttemptPublish, logger, telemetryDataCollector)
 {
     RegexsToMatch = new List <RegexActionPair>
     {
         new RegexActionPair(JestRegexs.TestRunStart, TestRunStartMatched),
     };
 }