Ejemplo n.º 1
0
        private void CheckTestJobFinished(ITestJobManager testJobManager)
        {
            if (!testJobManager.IsFinished())
            {
                return;
            }

            _currentTestJobManagers.Remove(testJobManager);

            if (testJobManager.IsCanceled)
            {
                testJobManager.TestJob.ResultCode = TestState.Canceled;
            }
            else
            {
                testJobManager.TestJob.ResultCode = (testJobManager.Passed == testJobManager.Count)
                                        ? TestState.Success
                                        : TestState.Error;
            }
            testJobManager.TestJob.FinishedAt = DateTime.Now;
            _testJobRepository.Store(testJobManager.TestJob);

            if (IsEmailNecessary(testJobManager))
            {
                _testJobFinishedMail.Send(testJobManager);
            }
        }
Ejemplo n.º 2
0
        void ITestPool.PrioTestJob(int testjob)
        {
            lock (_lockWorkItems)
            {
                List <WorkItem> toPriorize     = new List <WorkItem>();
                ITestJobManager testJobManager = _currentTestJobManagers.SingleOrDefault(t => t.ID == testjob);
                if (testJobManager == null)
                {
                    return;
                }

                for (int waitingTasksIter = _waitingWorkItems.Count - 1; waitingTasksIter > -1; waitingTasksIter--)
                {
                    WorkItem waitingWorkItem = _waitingWorkItems[waitingTasksIter];
                    if (!waitingWorkItem.TestJobManagers.Contains(testJobManager))
                    {
                        continue;
                    }

                    _waitingWorkItems.Remove(waitingWorkItem);
                    toPriorize.Add(waitingWorkItem);
                }
                _waitingWorkItems.InsertRange(0, toPriorize);
                _currentTestJobManagers.Remove(testJobManager);
                _currentTestJobManagers.Insert(0, testJobManager);
            }
        }
		/// <summary>
		/// Fake implementation of send email. Logs on Console that no email is sent.
		/// </summary>
		/// <param name="testJobManager">A instance of a TestJobManager.</param>
		public void Send(ITestJobManager testJobManager)
		{
			Logger.Log("Test job finished. No success-mail send. Mailing-Service is running in test configuration.");
			
			List<Result> results = testJobManager.WorkItems.Select(t => t.Result).Where(t => t != null && t.Error != null).ToList();
			List<ErrorOccurrenceGroup> errorOccurrenceGroups = ErrorGrouping.GetErrorOccurrenceGroups(results);
			Logger.Log(testJobManager.Passed + " passed tests. " + testJobManager.Failured + " failed tests. ErrorOccurences from GetErrorOccurrenceGroups(): " + errorOccurrenceGroups.Count);
		}
Ejemplo n.º 4
0
        /// <summary>
        /// Fake implementation of send email. Logs on Console that no email is sent.
        /// </summary>
        /// <param name="testJobManager">A instance of a TestJobManager.</param>
        public void Send(ITestJobManager testJobManager)
        {
            Logger.Log("Test job finished. No success-mail send. Mailing-Service is running in test configuration.");

            List <Result> results = testJobManager.WorkItems.Select(t => t.Result).Where(t => t != null && t.Error != null).ToList();
            List <ErrorOccurrenceGroup> errorOccurrenceGroups = ErrorGrouping.GetErrorOccurrenceGroups(results);

            Logger.Log(testJobManager.Passed + " passed tests. " + testJobManager.Failured + " failed tests. ErrorOccurences from GetErrorOccurrenceGroups(): " + errorOccurrenceGroups.Count);
        }
Ejemplo n.º 5
0
        void ITestPool.AddTestJob(ITestJobManager testJobManager, ICollection<WorkItem> workItems)
        {
            if (testJobManager == null)
                throw new ArgumentNullException("testJobManager");

            if (workItems.Count == 0)
            {
                return;
            }

            AddTasksDelegate addTasksToWorkItemGroup = AddTestJobImpl;
            addTasksToWorkItemGroup.BeginInvoke(testJobManager, workItems, null, null);
        }
Ejemplo n.º 6
0
        private void CheckTestJobFinished(ITestJobManager testJobManager)
        {
            if (!testJobManager.IsFinished())
            {
                return;
            }

            if (IsEmailNecessary(testJobManager))
            {
                _testJobFinishedMail.Send(testJobManager);
            }

            _currentTestJobManagers.Remove(testJobManager);
        }
Ejemplo n.º 7
0
        void ITestPool.AddTestJob(ITestJobManager testJobManager, ICollection <WorkItem> workItems)
        {
            if (testJobManager == null)
            {
                throw new ArgumentNullException("testJobManager");
            }

            if (workItems.Count == 0)
            {
                return;
            }

            AddTasksDelegate addTasksToWorkItemGroup = AddTestJobImpl;

            addTasksToWorkItemGroup.BeginInvoke(testJobManager, workItems, null, null);
        }
Ejemplo n.º 8
0
        private void CancelTestJobImpl(int testjob)
        {
            lock (_lockWorkItems)
            {
                ITestJobManager testJobManager = _currentTestJobManagers.SingleOrDefault(t => t.ID == testjob);
                if (testJobManager == null)
                {
                    return;
                }

                testJobManager.IsCanceled = true;

                foreach (WorkItem workItem in testJobManager.WorkItems.Where(objWorkItem =>
                                                                             !objWorkItem.IsCanceled &&
                                                                             objWorkItem.TestJobManagers.All(t => t.IsCanceled)))
                {
                    CancelWorkItem(workItem);
                }
                CheckTestJobFinished(testJobManager);
            }
        }
		/// <summary>
		/// Send the mail
		/// </summary>
		void ITestJobFinishedMail.Send(ITestJobManager testJobManager)
		{
			if (testJobManager == null)
				throw new ArgumentNullException("testJobManager");


			
			if (String.IsNullOrEmpty(testJobManager.TestJob.Tester.Mail)) return;

			List<Result> results = testJobManager.WorkItems.Select(t => t.Result).Where(t=>t!= null && t.Error!=null).ToList();
			List<ErrorOccurrenceGroup> errorOccurrenceGroups = ErrorGrouping.GetErrorOccurrenceGroups(results);

			string backgroundcolor;
			string bordercolor;
			string resultHeaderStatus;

			if (testJobManager.Passed == testJobManager.Count)
			{
				backgroundcolor = "#B6DAB8";
				bordercolor = "#5CB85C";
				resultHeaderStatus = "succeeded";
			}
			else
			{
				backgroundcolor = "#DF8A8A";
				bordercolor = "#D9534F";
				resultHeaderStatus = "failed";
			}
			string errorOccurrences = "";

			if(errorOccurrenceGroups.Count!=0) 
				errorOccurrences += "<h3>These tests have failed:</h3>";
			foreach (ErrorOccurrenceGroup errorOccurrenceGroup in errorOccurrenceGroups)
			{
				errorOccurrences += "<div><b>" + errorOccurrenceGroup.Testcase.Name + "</b><br>(" + errorOccurrenceGroup.Testcase.Type + ")<br><ul>";

				foreach (ErrorOccurrence errorOccurrence in errorOccurrenceGroup.LstErrorOccurence)
				{
					errorOccurrences += "<li>" + errorOccurrence.Error.Message + " (" +  errorOccurrence.LstOccurence.Count +  "x)</li>";
				}
				errorOccurrences += "</ul></div><br>";
			}

			String subject = "UI-Tests " + resultHeaderStatus + " - " +  testJobManager.TestJob.Name;
			String header;
			if (!String.IsNullOrEmpty(testJobManager.TestJob.Description))
			{
				header = testJobManager.TestJob.Description.Replace(";", "<br>");
			}
			else
			{
				header = testJobManager.TestJob.Name;
			}


			string url = !string.IsNullOrEmpty(RegtestingServerConfiguration.Webportal) ? "<a href=\"" + RegtestingServerConfiguration.Webportal + "?testjob=" + testJobManager.TestJob.ID + "\">Show results in browser</a>": "";
			String body = "<html><body>" +
							 "<div style=\"border-left: 10px solid;border-color: " + bordercolor +";background-color: " + backgroundcolor + ";font-size:1.2em;\">" + header + "</div>" 
							 + "<p>"

							 
							 + "Started by: "  +testJobManager.TestJob.Tester.Name + " (" + testJobManager.TestJob.JobType + ")<br>"
							 + "Started at: " + testJobManager.TestJob.StartedAt + "<br>"
							 + testJobManager.Passed + " passed tests.<br>"
							 + testJobManager.Failured + " failed tests.<br>" 
							 + url
							 + "</p><br>"
							 + errorOccurrences 
							 + "</body></html>";

			SendMail(testJobManager.TestJob.Tester.Mail, subject, body, true);
			if (testJobManager.TestJob.JobType == JobType.Buildtask)
			{
				SendMail(RegtestingServerConfiguration.NotifyAutomatedTestResultsMail, subject, body, true);
			}

		}
Ejemplo n.º 10
0
 private bool IsEmailNecessary(ITestJobManager testJobManager)
 {
     return testJobManager.Count != 0 &&
         !testJobManager.IsCanceled &&
         !(testJobManager.Failured == 0 && testJobManager.TestJob.JobType == JobType.Buildtask);
 }
Ejemplo n.º 11
0
		/// <summary>
		/// Create a workItem with an initial testjob
		/// </summary>
		/// <param name="initialTestJob">the first assigned testJob</param>
		public WorkItem(ITestJobManager initialTestJob)
			: this()
		{
			AddTestJobManager(initialTestJob);
		}
Ejemplo n.º 12
0
        private void AddTestJobImpl(ITestJobManager testJobManager, ICollection<WorkItem> workItems)
        {
            TestcaseProvider testcaseProvider;

            object branchSpecificFileLock = _testFileLocker.GetLock(testJobManager.TestJob.Testsystem.Name);
            lock (branchSpecificFileLock)
            {
                testcaseProvider =
                    new TestcaseProvider(RegtestingServerConfiguration.Testsfolder + testJobManager.TestJob.Testsystem.Filename);
                testcaseProvider.CreateAppDomain();
            }

            _testJobRepository.Store(testJobManager.TestJob);

            lock (_lockWorkItems)
            {
                List<WorkItem> alreadyFoundWorkItems = new List<WorkItem>();
                List<Result> updatedResults = new List<Result>();

                foreach (WorkItem workItem in workItems)
                {

                    ITestable testable = GetTestable(workItem, testcaseProvider);
                    if (testable==null)
                    {
                        updatedResults.Add(UpdateResultInfos(workItem, testJobManager.TestJob, TestState.NotAvailable));
                        continue;
                    }

                    if (!IsWorkItemSupported(workItem, testable))
                    {
                        updatedResults.Add(UpdateResultInfos(workItem, testJobManager.TestJob, TestState.NotSupported));
                        continue;
                    }

                    WorkItem existingWorkItem = CheckForAlreadyQueyedWorkItems(workItem);
                    if (existingWorkItem != null)
                    {
                        existingWorkItem.AddTestJobManager(testJobManager);
                        alreadyFoundWorkItems.Add(existingWorkItem);
                    }
                    else
                    {
                        testJobManager.AddWorkItem(workItem);
                        updatedResults.Add(UpdateResultInfos(workItem, testJobManager.TestJob, TestState.Pending));
                    }
                }

                //If there is nothing to test, don't add a testsuite
                if (testJobManager.Count == 0 &&
                    alreadyFoundWorkItems.Count == 0)
                    return;

                _currentTestJobManagers.Add(testJobManager);

                //Add new workItems to waiting list
                testJobManager.WorkItems.ForEach(_waitingWorkItems.Add);

                //Add already found workItems back to
                alreadyFoundWorkItems.ForEach(testJobManager.AddWorkItem);
                _resultRepository.Store(updatedResults);
            }
        }
Ejemplo n.º 13
0
        private void CheckTestJobFinished(ITestJobManager testJobManager)
        {
            if (!testJobManager.IsFinished())
                return;

            _currentTestJobManagers.Remove(testJobManager);

            if (testJobManager.IsCanceled)
            {
                testJobManager.TestJob.ResultCode = TestState.Canceled;
            }
            else
            {
                testJobManager.TestJob.ResultCode = (testJobManager.Passed == testJobManager.Count)
                    ? TestState.Success
                    : TestState.Error;

            }
            testJobManager.TestJob.FinishedAt = DateTime.Now;
            _testJobRepository.Store(testJobManager.TestJob);

            if (IsEmailNecessary(testJobManager))
                _testJobFinishedMail.Send(testJobManager);
        }
Ejemplo n.º 14
0
        private void AddTestJobImpl(ITestJobManager testJobManager, ICollection <WorkItem> workItems)
        {
            TestcaseProvider testcaseProvider;

            object branchSpecificFileLock = _testFileLocker.GetLock(testJobManager.TestJob.Testsystem.Name);

            lock (branchSpecificFileLock)
            {
                testcaseProvider =
                    new TestcaseProvider(RegtestingServerConfiguration.Testsfolder + testJobManager.TestJob.Testsystem.Filename);
                testcaseProvider.CreateAppDomain();
            }

            _testJobRepository.Store(testJobManager.TestJob);

            lock (_lockWorkItems)
            {
                List <WorkItem> alreadyFoundWorkItems = new List <WorkItem>();
                List <Result>   updatedResults        = new List <Result>();

                foreach (WorkItem workItem in workItems)
                {
                    ITestable testable = GetTestable(workItem, testcaseProvider);
                    if (testable == null)
                    {
                        updatedResults.Add(UpdateResultInfos(workItem, testJobManager.TestJob, TestState.NotAvailable));
                        continue;
                    }

                    if (!IsWorkItemSupported(workItem, testable))
                    {
                        updatedResults.Add(UpdateResultInfos(workItem, testJobManager.TestJob, TestState.NotSupported));
                        continue;
                    }

                    WorkItem existingWorkItem = CheckForAlreadyQueyedWorkItems(workItem);
                    if (existingWorkItem != null)
                    {
                        existingWorkItem.AddTestJobManager(testJobManager);
                        alreadyFoundWorkItems.Add(existingWorkItem);
                    }
                    else
                    {
                        testJobManager.AddWorkItem(workItem);
                        updatedResults.Add(UpdateResultInfos(workItem, testJobManager.TestJob, TestState.Pending));
                    }
                }

                //If there is nothing to test, don't add a testsuite
                if (testJobManager.Count == 0 &&
                    alreadyFoundWorkItems.Count == 0)
                {
                    return;
                }


                _currentTestJobManagers.Add(testJobManager);

                //Add new workItems to waiting list
                testJobManager.WorkItems.ForEach(_waitingWorkItems.Add);

                //Add already found workItems back to
                alreadyFoundWorkItems.ForEach(testJobManager.AddWorkItem);
                _resultRepository.Store(updatedResults);
            }
        }
Ejemplo n.º 15
0
		/// <summary>
		/// Add a testJob to TestJobs list
		/// </summary>
		/// <param name="testJobManager">the testJob</param>
		public void AddTestJobManager(ITestJobManager testJobManager)
		{
			TestJobManagers.Add(testJobManager);
		}
Ejemplo n.º 16
0
 /// <summary>
 /// Create a workItem with an initial testjob
 /// </summary>
 /// <param name="initialTestJob">the first assigned testJob</param>
 public WorkItem(ITestJobManager initialTestJob)
     : this()
 {
     AddTestJobManager(initialTestJob);
 }
Ejemplo n.º 17
0
        /// <summary>
        /// Send the mail
        /// </summary>
        void ITestJobFinishedMail.Send(ITestJobManager testJobManager)
        {
            if (testJobManager == null)
            {
                throw new ArgumentNullException("testJobManager");
            }



            if (String.IsNullOrEmpty(testJobManager.TestJob.Tester.Mail))
            {
                return;
            }

            List <Result> results = testJobManager.WorkItems.Select(t => t.Result).Where(t => t != null && t.Error != null).ToList();
            List <ErrorOccurrenceGroup> errorOccurrenceGroups = ErrorGrouping.GetErrorOccurrenceGroups(results);

            string backgroundcolor;
            string bordercolor;
            string resultHeaderStatus;

            if (testJobManager.Passed == testJobManager.Count)
            {
                backgroundcolor    = "#B6DAB8";
                bordercolor        = "#5CB85C";
                resultHeaderStatus = "succeeded";
            }
            else
            {
                backgroundcolor    = "#DF8A8A";
                bordercolor        = "#D9534F";
                resultHeaderStatus = "failed";
            }
            string errorOccurrences = "";

            if (errorOccurrenceGroups.Count != 0)
            {
                errorOccurrences += "<h3>These tests have failed:</h3>";
            }
            foreach (ErrorOccurrenceGroup errorOccurrenceGroup in errorOccurrenceGroups)
            {
                errorOccurrences += "<div><b>" + errorOccurrenceGroup.Testcase.Name + "</b><br>(" + errorOccurrenceGroup.Testcase.Type + ")<br><ul>";

                foreach (ErrorOccurrence errorOccurrence in errorOccurrenceGroup.LstErrorOccurence)
                {
                    errorOccurrences += "<li>" + errorOccurrence.Error.Message + " (" + errorOccurrence.LstOccurence.Count + "x)</li>";
                }
                errorOccurrences += "</ul></div><br>";
            }

            String subject = "UI-Tests " + resultHeaderStatus + " - " + testJobManager.TestJob.Name;
            String header;

            if (!String.IsNullOrEmpty(testJobManager.TestJob.Description))
            {
                header = testJobManager.TestJob.Description.Replace(";", "<br>");
            }
            else
            {
                header = testJobManager.TestJob.Name;
            }


            string url  = !string.IsNullOrEmpty(RegtestingServerConfiguration.Webportal) ? "<a href=\"" + RegtestingServerConfiguration.Webportal + "?testjob=" + testJobManager.TestJob.ID + "\">Show results in browser</a>": "";
            String body = "<html><body>" +
                          "<div style=\"border-left: 10px solid;border-color: " + bordercolor + ";background-color: " + backgroundcolor + ";font-size:1.2em;\">" + header + "</div>"
                          + "<p>"


                          + "Started by: " + testJobManager.TestJob.Tester.Name + " (" + testJobManager.TestJob.JobType + ")<br>"
                          + "Started at: " + testJobManager.TestJob.StartedAt + "<br>"
                          + testJobManager.Passed + " passed tests.<br>"
                          + testJobManager.Failured + " failed tests.<br>"
                          + url
                          + "</p><br>"
                          + errorOccurrences
                          + "</body></html>";

            SendMail(testJobManager.TestJob.Tester.Mail, subject, body, true);
            if (testJobManager.TestJob.JobType == JobType.Buildtask)
            {
                SendMail(RegtestingServerConfiguration.NotifyAutomatedTestResultsMail, subject, body, true);
            }
        }
Ejemplo n.º 18
0
 private bool IsEmailNecessary(ITestJobManager testJobManager)
 {
     return(testJobManager.Count != 0 &&
            !testJobManager.IsCanceled &&
            !(testJobManager.Failured == 0 && testJobManager.TestJob.JobType == JobType.Buildtask));
 }
Ejemplo n.º 19
0
        /// <summary>
        /// Send the mail
        /// </summary>
        void ITestJobFinishedMail.Send(ITestJobManager testJobManager)
        {
            if (testJobManager == null)
            {
                throw new ArgumentNullException("testJobManager");
            }



            if (String.IsNullOrEmpty(testJobManager.TestJob.Tester.Mail))
            {
                return;
            }

            List <Result> results = testJobManager.WorkItems.Select(t => t.Result).Where(t => t != null && t.Error != null).ToList();
            List <ErrorOccurrenceGroup> errorOccurrenceGroups = ErrorGrouping.GetErrorOccurrenceGroups(results);

            int    percent = (100 * testJobManager.Passed) / (testJobManager.Count);
            string color;
            string resultHeader;

            if (testJobManager.Passed == testJobManager.Count)
            {
                color        = "#5cb85c";
                resultHeader = "Success";
            }
            else
            {
                color        = "#d9534f";
                resultHeader = "Failed";
            }

            string errorOccurrences = "";

            if (errorOccurrenceGroups.Count != 0)
            {
                errorOccurrences += "<h3>These tests have failed:</h3>";
            }
            foreach (ErrorOccurrenceGroup errorOccurrenceGroup in errorOccurrenceGroups)
            {
                errorOccurrences += "<div><b>" + errorOccurrenceGroup.Testcase.Name + "</b><br>(" + errorOccurrenceGroup.Testcase.Type + ")<br><ul>";

                foreach (ErrorOccurrence errorOccurrence in errorOccurrenceGroup.LstErrorOccurence)
                {
                    errorOccurrences += "<li>" + errorOccurrence.Error.Message + " (" + errorOccurrence.LstOccurence.Count + "x)</li>";
                }
                errorOccurrences += "</ul></div><br>";
            }

            String subject = testJobManager.TestJob.Testsystem.Name + ", " + testJobManager.TestJob.Name + ": " + percent + "%";
            string url     = !string.IsNullOrEmpty(RegtestingServerConfiguration.Webportal) ? "<a href=\"" + RegtestingServerConfiguration.Webportal + "/testing?testsuite=" + testJobManager.TestJob.Testsuite.ID + "&testsystem=" + testJobManager.TestJob.Testsystem.ID + "\">Show results page in browser</a>": "";
            String body    = "<html><body>" +
                             "<div style=\"background-color:" + color + " ;padding:20px;font-size:1.7em;text-align:center;color:#ffffff;\"><b>" + testJobManager.TestJob.Testsystem.Name + "</b> - " + testJobManager.TestJob.Name + ": <b>" + resultHeader + "</b></div>"
                             + "<p>"

                             + "Started by: " + testJobManager.TestJob.Tester.Name + " (" + testJobManager.TestJob.JobType + ")<br>"
                             + "Started at: " + testJobManager.TestJob.StartedAt + "<br>"
                             + testJobManager.Passed + " passed tests.<br>"
                             + testJobManager.Failured + " failed tests.<br>"
                             + url
                             + "</p><br>"
                             + errorOccurrences
                             + "</body></html>";

            SendMail(testJobManager.TestJob.Tester.Mail, subject, body, true);
            if (testJobManager.TestJob.JobType == JobType.Buildtask)
            {
                SendMail(RegtestingServerConfiguration.NotifyAutomatedTestResultsMail, subject, body, true);
            }
        }
Ejemplo n.º 20
0
 /// <summary>
 /// Add a testJob to TestJobs list
 /// </summary>
 /// <param name="testJobManager">the testJob</param>
 public void AddTestJobManager(ITestJobManager testJobManager)
 {
     TestJobManagers.Add(testJobManager);
 }