public JenkinsStatsPollingUpdater ( ILogger logger, ITimeService timeService, IGherkinStatsRepository statsRepository, IJenkinsStatsPluginConfiguration configuration ) : base(timeService, configuration) { this.logger = logger; this.statsRepository = statsRepository; this.pluginConfiguration = configuration; }
public static IEnumerable <TestCase> GetTestResults(IJenkinsStatsPluginConfiguration config, DateTime?since) { var password = CryptoService.Decrypt(config.Password); var auth = string.IsNullOrEmpty(config.Username) ? null : new NetworkCredential(config.Username, password); var projectRoot = new Uri(config.JenkinsRoot.TrimEnd('/') + "/job/" + config.ProjectName.Trim('/') + "/"); return(GetObject <BuildList>(projectRoot, "api/json", auth).builds.OrderByDescending(b => b.number) .Select(b => GetObject <Build>(b.url, "api/json", auth)).TakeWhile(b => since == null || b.buildTime > since) .Select(b => new { Build = b, TestReport = GetObject <TestReport>(b.url, "testReport/api/json?depth=2", auth) }) .SelectMany(e => e.TestReport.suites.SelectMany(s => s.cases).Update(t => t.executed = e.Build.buildTime)) .Update(t => t.classOnly = t.className.Substring(t.className.LastIndexOf('.') + 1)) .OrderBy(t => t.executed).ThenBy(t => t.className).ThenBy(t => t.name).ToArray()); }
public JenkinsTestStatsProvider(ILogger logger, ITimeService timeService, IGherkinStatsRepository statsRepository, IJenkinsStatsPluginConfiguration configuration) { this.statsRepository = statsRepository; statsRepository.StatisticsUpdated += OnStatisticsRepositoryUpdated; statsRepository.RequirementStatisticsChanged += OnRequirementStatisticsChanged; this.statsUpdater = new JenkinsStatsPollingUpdater(logger, timeService, statsRepository, configuration); this.statsUpdater.Start(); }