Exemplo n.º 1
0
        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");
            }
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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");
            }
        }
Exemplo n.º 4
0
        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");
            }
        }
Exemplo n.º 5
0
 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");
     }
 }
Exemplo n.º 6
0
        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");
            }
        }