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); }