private ITestsSplitter GetTestsSplitter(TestCase[] testCasesToRun)
        {
            var serializer = new TestDurationSerializer();
            IDictionary <TestCase, int> durations = serializer.ReadTestDurations(testCasesToRun);

            foreach (KeyValuePair <TestCase, int> duration in durations)
            {
                if (!_schedulingAnalyzer.AddExpectedDuration(duration.Key, duration.Value))
                {
                    _logger.DebugWarning("TestCase already in analyzer: " + duration.Key.FullyQualifiedName);
                }
            }

            ITestsSplitter splitter;

            if (durations.Count < testCasesToRun.Length)
            {
                splitter = new NumberBasedTestsSplitter(testCasesToRun, _settings);
                _logger.DebugInfo("Using splitter based on number of tests");
            }
            else
            {
                splitter = new DurationBasedTestsSplitter(durations, _settings);
                _logger.DebugInfo("Using splitter based on test durations");
            }

            return(splitter);
        }
        private ITestsSplitter GetTestsSplitter(TestCase[] testCasesToRun)
        {
            var serializer = new TestDurationSerializer();
            IDictionary <TestCase, int> durations = serializer.ReadTestDurations(testCasesToRun);

            ITestsSplitter splitter;

            if (durations.Count < testCasesToRun.Length)
            {
                splitter = new NumberBasedTestsSplitter(testCasesToRun, TestEnvironment);
                TestEnvironment.DebugInfo("Using splitter based on number of tests");
            }
            else
            {
                splitter = new DurationBasedTestsSplitter(durations, TestEnvironment);
                TestEnvironment.DebugInfo("Using splitter based on test durations");
            }

            return(splitter);
        }
Beispiel #3
0
        private ITestsSplitter GetTestsSplitter(TestCase[] testCasesToRun)
        {
            IDictionary <TestCase, int> durations = null;

            try
            {
                var serializer = new TestDurationSerializer();
                durations = serializer.ReadTestDurations(testCasesToRun);
                foreach (KeyValuePair <TestCase, int> duration in durations)
                {
                    if (!_schedulingAnalyzer.AddExpectedDuration(duration.Key, duration.Value))
                    {
                        _logger.DebugWarning(String.Format(Resources.TestCaseInAnalyzer, duration.Key.FullyQualifiedName));
                    }
                }
            }
            catch (InvalidTestDurationsException e)
            {
                _logger.LogWarning(string.Format(Resources.ReadTestDurationError, e.Message));
            }

            ITestsSplitter splitter;

            if (durations == null || durations.Count < testCasesToRun.Length)
            {
                splitter = new NumberBasedTestsSplitter(testCasesToRun, _settings);
                _logger.DebugInfo(Resources.UsingSplitterOnNumber);
            }
            else
            {
                splitter = new DurationBasedTestsSplitter(durations, _settings);
                _logger.DebugInfo(Resources.UsingSplitterOnDuration);
            }

            return(splitter);
        }