Exemple #1
0
        private void HandleResult(ITestWorker testWorker, TestResult testResult)
        {
            if (testWorker.WorkItem != null &&
                (testResult.TestState == TestState.Error || testResult.TestState == TestState.ErrorRepeat) &&
                testWorker.WorkItem.RunCount < RegtestingServerConfiguration.MaxRunCount)
            {
                _testPool.ReAddWorkItem(testWorker.WorkItem);
                testWorker.WorkItem = null;
                return;
            }

            WorkItem workItem = testWorker.WorkItem;

            workItem.TestState = testResult.TestState;

            string imagefile = null;

            if (!String.IsNullOrEmpty(testResult.Screenshot))
            {
                string folder    = RegtestingServerConfiguration.Screenshotsfolder;
                string subFolder = DateTime.Now.Year + "-" + DateTime.Now.Month + "\\";
                string fileName  = "screen" + Helper.GetScreenshotString() + ".png";
                Directory.CreateDirectory(folder + subFolder);
                imagefile = subFolder + fileName;
                Screenshot screenshot = new Screenshot(testResult.Screenshot);
                screenshot.SaveAsFile(folder + imagefile, ImageFormat.Png);
            }

            Result result = _resultRepository.Get(workItem.Testsystem, workItem.Testcase, workItem.Browser,
                                                  workItem.Language);

            result.ResultCode     = testResult.TestState;
            result.DetailLog      = CreateLog(testResult.Log);
            result.Error          = testResult.Error;
            result.Testtime       = DateTime.Now;
            result.ScreenshotFile = imagefile;
            if (result.ResultCode == TestState.Error || result.ResultCode == TestState.ErrorRepeat ||
                result.ResultCode == TestState.KnownError)
            {
                if (result.ErrorCount == null)
                {
                    result.ErrorCount = 1;
                    result.ErrorSince = result.Testtime;
                }
                else
                {
                    result.ErrorCount = result.ErrorCount + 1;
                }
            }
            else
            {
                result.ErrorSince = null;
                result.ErrorCount = null;
            }
            _resultRepository.Store(result);
            workItem.Result = result;


            foreach (ITestJobManager testJobManager in workItem.TestJobManagers)
            {
                HistoryResult historyResult = Mapper.Map <HistoryResult>(workItem);
                historyResult.DetailLog      = CreateLog(testResult.Log);
                historyResult.ResultCode     = testResult.TestState;
                historyResult.Error          = testResult.Error;
                historyResult.Testtime       = DateTime.Now;
                historyResult.TestJob        = testJobManager.TestJob;
                historyResult.ScreenshotFile = imagefile;
                _historyResultRepository.Store(historyResult);
            }
            lock (TestsystemSummariesCache.Cache.GetLock(workItem.Testsystem.ID))
            {
                TestsystemSummariesCache.Cache.Set(workItem.Testsystem.ID, null);
            }
            testWorker.WorkItem = null;

            _testPool.WorkItemFinished(workItem);
        }