Ejemplo n.º 1
0
        private static TestFileRunResult GenerateStubTestFileResult(TestResultState resultState = TestResultState.Success, bool taskFails = false)
        {
            var runResult = new TestFileRunResult
            {
                ResultId       = taskFails ? (Guid?)null : Guid.NewGuid(),
                Finished       = !taskFails,
                HasFailedTests = resultState == TestResultState.Failed,
                ErrorMessage   = string.Empty,
                TestRunFailed  = taskFails,
                TimeTaken      = TimeSpan.FromDays(1),
                TestResults    = taskFails ? new LightweightResult[0] : new[]
                {
                    new LightweightResult
                    {
                        ResultState              = resultState,
                        ActualUrl                = "some-url",
                        AssertionsSuccess        = true,
                        ExceptionMessage         = "ExceptionMessage",
                        Message                  = "some=message",
                        ResponseCodeSuccess      = true,
                        ResponseTime             = TimeSpan.FromMinutes(4),
                        ScriptCompilationSuccess = true,
                        TestDescription          = "supa-init-test-blah-blink-bloom",
                        TestUrl                  = "♪ ♫ ♬ 'I can't dream anymore, since you leeeeeft' ♪ ♫ ♬"
                    }
                }
            };

            return(runResult);
        }
Ejemplo n.º 2
0
        public TestFileRunResult Create(TestFileRunnerTaskInfo runnerInfo, bool timedOut, TimeSpan timeTaken)
        {
            TestFileRunResult result;

            if (timedOut)
            {
                // Error
                result = new TestFileRunResult
                {
                    Finished     = false,
                    TimeTaken    = timeTaken,
                    ErrorMessage = "The runner timed out."
                };
            }
            else
            {
                if (!string.IsNullOrEmpty(runnerInfo.Errors))
                {
                    result = new TestFileRunResult
                    {
                        Finished     = false,
                        TimeTaken    = timeTaken,
                        ErrorMessage = runnerInfo.Errors
                    };
                }
                else
                {
                    int failCount = runnerInfo.TestFileResults?.TestResults?.Count(x => !x.Success) ?? 0;

                    result = new TestFileRunResult
                    {
                        ResultId       = runnerInfo.TestFileResults?.Id,
                        HasFailedTests = (failCount > 0),
                        ErrorMessage   = string.Empty,

                        Finished      = DetectIfTestHasFinished(runnerInfo),
                        TestRunFailed = DetectIfTestFailed(runnerInfo),
                        TimeTaken     = GetTimeTaken(runnerInfo, timeTaken),
                        TestResults   = GenerateTestResults(runnerInfo)
                    };
                }
            }

            return(result);
        }
Ejemplo n.º 3
0
        public BatchStatus GetBatchStatus(int batchId)
        {
            string key = $"{KeyPrefix}{batchId}";

            if (!_objectCache.Contains(key))
            {
                throw new KeyNotFoundException($"Unknown batch id: {batchId}");
            }

            var batchInfo      = (List <int>)_objectCache[key];
            var testFilesState = new List <TestFileRunResult>(batchInfo.Count);
            var failedTests    = new List <int>();

            foreach (int taskId in batchInfo)
            {
                TestFileRunnerTaskInfo taskInfo          = _testFileQueue.GetTestFileTaskInfo(taskId);
                TestFileRunResult      testFileRunResult = _testFileResultFactory.Create(taskInfo, false, TimeSpan.Zero);
                testFilesState.Add(testFileRunResult);

                if (testFileRunResult.TestRunFailed)
                {
                    failedTests.Add(taskId);
                }
            }

            bool batchFinished = testFilesState.TrueForAll(x => x.Finished);
            IEnumerable <Guid> testFilesResultIds = testFilesState
                                                    .Where(x => x.ResultId.HasValue)
                                                    .Select(x => x.ResultId.Value);

            return(new BatchStatus
            {
                BatchId = batchId,
                TestFilesResultIds = testFilesResultIds,
                BatchFinished = batchFinished,
                HasFailedTests = testFilesState.Any(x => x.TestRunFailed) || batchFinished && testFilesState.Any(x => x.HasFailedTests),
                TestFilesRunning = testFilesState.Count(x => !x.Finished),
                TestFilesFinished = testFilesState.Count(x => x.Finished),
                TestFilesWithFailedTests = testFilesState.Where(x => x.HasFailedTests && x.ResultId.HasValue).Select(x => x.ResultId.Value),
                TestFilesFailed = failedTests.Count,
                FailedTasks = failedTests,
            });
        }
Ejemplo n.º 4
0
        public void should_return_expected_batch_status_when_tests_pass()
        {
            // given
            const int batchId       = 8;
            var       testFileQueue = new Mock <ITestFileQueue>();
            var       memoryCache   = new MemoryCache("test");
            var       resultFactory = new Mock <ITestFileResultFactory>();

            memoryCache.Set($"{BatchManager.KeyPrefix}{batchId}", new List <int> {
                5
            }, DateTimeOffset.MaxValue);
            var testFileInfo = new TestFileRunnerTaskInfo(5);

            testFileQueue
            .Setup(x => x.GetTestFileTaskInfo(5))
            .Returns(testFileInfo);

            TestFileRunResult runResult = GenerateStubTestFileResult();

            resultFactory
            .Setup(x => x.Create(testFileInfo, false, TimeSpan.Zero))
            .Returns(runResult);

            // when
            var         batchManager = new BatchManager(testFileQueue.Object, memoryCache, resultFactory.Object);
            BatchStatus batchStatus  = batchManager.GetBatchStatus(batchId);

            // then
            Assert.That(batchStatus, Is.Not.Null);
            Assert.That(batchStatus.BatchId, Is.EqualTo(batchId));
            Assert.That(batchStatus.TestFilesResultIds.First(), Is.EqualTo(runResult.ResultId));
            Assert.That(batchStatus.BatchFinished, Is.True);
            Assert.That(batchStatus.HasFailedTests, Is.False);
            Assert.That(batchStatus.TestFilesRunning, Is.EqualTo(0));
            Assert.That(batchStatus.TestFilesFinished, Is.EqualTo(1));
            Assert.That(batchStatus.TestFilesWithFailedTests, Is.Empty);
            Assert.That(batchStatus.TestFilesFailed, Is.EqualTo(0));
            Assert.That(batchStatus.FailedTasks, Is.Empty);
        }