private void SendEmailsForEvents() { try { if (!_configuration.SendEmails) { return; } var eventSubs = _methodInfo.GetCustomAttributes <EventDurationSubscriptionAttribute>(); foreach (var sub in eventSubs) { var currentTestVersions = NunitGoTestHelper.GetTestsFromFolder(_nunitGoTest.AttachmentsPath); var subscription = _configuration.EventDurationSubscriptions.FirstOrDefault(x => x.Name.Equals(sub.Name)); if (currentTestVersions.Count > 1) { var previousTest = currentTestVersions .OrderByDescending(x => x.DateTimeFinish) .Skip(1) .First(x => x.Events.Any(e => e.Name.Equals(sub.EventName))); var previuosEvent = previousTest.Events.First(x => x.Name.Equals(sub.EventName)); var currentEvent = _nunitGoTest.Events.First(x => x.Name.Equals(sub.EventName)); if (currentEvent.Duration - previuosEvent.Duration > sub.MaxDifference) { if (subscription != null) { EmailHelper.Send(_configuration.SendFromList, subscription.TargetEmails, _nunitGoTest, _screenshotsPath, _configuration.AddLinksInsideEmail, true, sub.EventName, previuosEvent); } else if (sub.FullPath != null) { subscription = XmlHelper.Load <EventDurationSubscription>(sub.FullPath); EmailHelper.Send(_configuration.SendFromList, subscription.TargetEmails, _nunitGoTest, _screenshotsPath, _configuration.AddLinksInsideEmail, true, sub.EventName, previuosEvent); } else if (sub.Targets.Any()) { EmailHelper.Send(_configuration.SendFromList, sub.Targets, _nunitGoTest, _screenshotsPath, _configuration.AddLinksInsideEmail, true, sub.EventName, previuosEvent); } } } } } catch (Exception ex) { Log.Exception(ex, "Exception in SendEmailsForEvents"); } }
public static void Main(string[] args) { var config = NunitGoHelper.Configuration; var outputPath = config.LocalOutputPath; var attachmentsPath = outputPath + @"\Attachments\"; PageGenerator.GenerateStyleFile(outputPath); var tests = NunitGoTestHelper.GetNewestTests(attachmentsPath).OrderBy(x => x.DateTimeFinish).ToList(); var stats = new MainStatistics(tests); var statsChart = new MainInfoChart(stats, Output.GetStatsPieId()); statsChart.SaveScript(outputPath); tests.GenerateTimelinePage(Path.Combine(outputPath, Output.Files.TimelineFile)); stats.GenerateMainStatisticsPage(Path.Combine(outputPath, Output.Files.TestStatisticsFile)); tests.GenerateTestListPage(Path.Combine(outputPath, Output.Files.TestListFile)); tests.GenerateReportMainPage(outputPath, stats); }
private void SaveTestFiles() { try { Directory.CreateDirectory(_nunitGoTest.AttachmentsPath); _nunitGoTest.SaveAsXml(_nunitGoTest.AttachmentsPath + Output.Files.GetTestXmlName(_nunitGoTest.DateTimeFinish)); var testVersions = NunitGoTestHelper.GetTestsFromFolder(_nunitGoTest.AttachmentsPath); var testRemarks = GetTestRemarks(); var chartId = Output.GetHistoryChartId(_nunitGoTest.Guid, _nunitGoTest.DateTimeFinish); var highstockHistory = new NunitGoJsHighstock(testVersions, testRemarks, chartId); highstockHistory.SaveScript(_nunitGoTest.AttachmentsPath); var testPath = _nunitGoTest.AttachmentsPath + Output.Files.GetTestHtmlName(_nunitGoTest.DateTimeFinish); _nunitGoTest.GenerateTestPage(testPath, _testOutput, Output.Files.GetTestHistoryScriptName(_nunitGoTest.DateTimeFinish)); } catch (Exception ex) { Log.Exception(ex, "Exception in SaveTestFiles"); } }
public void GenerateReport() { try { if (!_configuration.GenerateReport) { return; } const string cssPageName = Output.Files.ReportStyleFile; var cssFullPath = Path.Combine(_outputPath, cssPageName); if (!File.Exists(cssFullPath)) { PageGenerator.GenerateStyleFile(cssFullPath); } var primerName = Output.Files.PrimerStyleFile; ExtractResource(primerName, _outputPath); var octiconsName = Output.Files.OcticonsStyleFiles; ExtractResources(octiconsName, _outputPath); //jquery - 1.11.0.min.js var jqueryName = Output.Files.JQueryScriptFile; ExtractResource(jqueryName, _outputPath); var tests = NunitGoTestHelper.GetNewestTests(_attachmentsPath).OrderBy(x => x.DateTimeFinish).ToList(); var stats = new MainStatistics(tests); var statsChart = new MainInfoChart(stats, Output.GetStatsPieId()); statsChart.SaveScript(_outputPath); tests.GenerateTimelinePage(Path.Combine(_outputPath, Output.Files.TimelineFile)); stats.GenerateMainStatisticsPage(Path.Combine(_outputPath, Output.Files.TestStatisticsFile)); tests.GenerateTestListPage(Path.Combine(_outputPath, Output.Files.TestListFile)); tests.GenerateReportMainPage(_outputPath, stats); } catch (Exception ex) { Log.Exception(ex, "Exception in GenerateReport"); } }
private void CleanUpTestFiles() { try { var maxDate = DateTime.Now.AddDays(-_configuration.TestHistoryDaysLength); var folders = Directory.GetDirectories(_attachmentsPath); foreach (var folder in folders) { var dirInfo = new DirectoryInfo(folder); var allFiles = dirInfo.GetFiles("*.xml").OrderByDescending(x => x.CreationTime); if (dirInfo.LastWriteTime < maxDate || dirInfo.CreationTime < maxDate || !allFiles.Any()) { Directory.Delete(dirInfo.FullName, true); } else { var folderTestVersions = NunitGoTestHelper.GetTestsFromFolder(folder); var folderTestVersionsNumber = folderTestVersions.Count; if (folderTestVersionsNumber >= _configuration.MaxTestVersionsNumber) { folderTestVersions.OrderByDescending(x => x.DateTimeFinish) .Skip(_configuration.MaxTestVersionsNumber) .ToList() .ForEach(x => x.DeleteTestFiles(_screenshotsPath)); } NunitGoTestHelper .GetTestsFromFolder(folder) .Where(x => x.DateTimeFinish < maxDate) .ToList() .ForEach(x => x.DeleteTestFiles(_screenshotsPath)); } } } catch (Exception ex) { Log.Exception(ex, "Exception in CleanUpTestFiles"); } }
private void SendEmails(bool isSuccess) { try { if (!_configuration.SendEmails) { return; } var subs = _methodInfo.GetCustomAttributes <SubscriptionAttribute>(); foreach (var sub in subs) { var sendCondition = (sub.UnsuccessfulOnly && !isSuccess) || (!sub.UnsuccessfulOnly); if (!sendCondition) { continue; } var subscription = _configuration.Subsciptions.FirstOrDefault(x => x.Name.Equals(sub.Name)); if (subscription != null) { EmailHelper.Send(_configuration.SendFromList, subscription.TargetEmails, _nunitGoTest, _screenshotsPath, _configuration.AddLinksInsideEmail); } else if (sub.FullPath != null) { subscription = XmlHelper.Load <Subsciption>(sub.FullPath); EmailHelper.Send(_configuration.SendFromList, subscription.TargetEmails, _nunitGoTest, _screenshotsPath, _configuration.AddLinksInsideEmail); } else if (sub.Targets.Any()) { EmailHelper.Send(_configuration.SendFromList, sub.Targets, _nunitGoTest, _screenshotsPath, _configuration.AddLinksInsideEmail); } } var singleSubs = _methodInfo.GetCustomAttributes <SingleTestSubscriptionAttribute>(); foreach (var singleSub in singleSubs) { var sendCondition = (singleSub.UnsuccessfulOnly && !isSuccess) || (!singleSub.UnsuccessfulOnly); if (!sendCondition) { continue; } var singleTestSubscription = _configuration.SingleTestSubscriptions.FirstOrDefault(x => x.TestGuid.Equals(_nunitGoTest.Guid)); if (singleTestSubscription != null) { EmailHelper.Send(_configuration.SendFromList, singleTestSubscription.TargetEmails, _nunitGoTest, _screenshotsPath, _configuration.AddLinksInsideEmail); } else if (singleSub.FullPath != null) { var singleSubFromXml = XmlHelper.Load <SingleTestSubscription>(singleSub.FullPath); EmailHelper.Send(_configuration.SendFromList, singleSubFromXml.TargetEmails, _nunitGoTest, _screenshotsPath, _configuration.AddLinksInsideEmail); } else if (singleSub.Targets.Any()) { EmailHelper.Send(_configuration.SendFromList, singleSub.Targets, _nunitGoTest, _screenshotsPath, _configuration.AddLinksInsideEmail); } } var eventSubs = _methodInfo.GetCustomAttributes <EventDurationSubscriptionAttribute>(); foreach (var sub in eventSubs) { var currentTestVersions = NunitGoTestHelper.GetTestsFromFolder(_nunitGoTest.AttachmentsPath); if (currentTestVersions.Count <= 1) { continue; } var previousTest = currentTestVersions .OrderByDescending(x => x.DateTimeFinish) .Skip(1) .First(x => x.Events.Any(e => e.Name.Equals(sub.EventName))); var previuosEvent = previousTest.Events.First(x => x.Name.Equals(sub.EventName)); var currentEvent = _nunitGoTest.Events.First(x => x.Name.Equals(sub.EventName)); if (Math.Abs(currentEvent.Duration - previuosEvent.Duration) > sub.MaxDifference) { var subscription = _configuration.EventDurationSubscriptions.FirstOrDefault(x => x.Name.Equals(sub.Name)); if (subscription != null) { EmailHelper.Send(_configuration.SendFromList, subscription.TargetEmails, _nunitGoTest, _screenshotsPath, _configuration.AddLinksInsideEmail, true, sub.EventName, previuosEvent); } else if (sub.FullPath != null) { subscription = XmlHelper.Load <EventDurationSubscription>(sub.FullPath); EmailHelper.Send(_configuration.SendFromList, subscription.TargetEmails, _nunitGoTest, _screenshotsPath, _configuration.AddLinksInsideEmail, true, sub.EventName, previuosEvent); } else if (sub.Targets.Any()) { EmailHelper.Send(_configuration.SendFromList, sub.Targets, _nunitGoTest, _screenshotsPath, _configuration.AddLinksInsideEmail, true, sub.EventName, previuosEvent); } } } } catch (Exception ex) { Log.Exception(ex, "Exception in SendEmail"); } }