Пример #1
0
        public void CriticalSectionsAwareQueueTest()
        {
            var queue = new CriticalSectionsAwareQueue <int>();

            queue.Enqueue(1, new[] { "a", "b" });
            queue.Enqueue(2, new[] { "b" });
            queue.Enqueue(3, Array.Empty <string>());

            TryAcquireAndAssert(queue, true, 1, 2);
            TryAcquireAndAssert(queue, true, 3, 1);
            TryAcquireAndAssert(queue, false, default, 1);
Пример #2
0
        public Task ExecuteAsync(IEnumerable <TestCase> testCases, int workerCount)
        {
            _logger.LogTrace("Scheduling tests");

            _customTestSession?.OnSessionStart(Options);

            var schedule = new CriticalSectionsAwareQueue <TestCase>();

            foreach (var testCase in testCases)
            {
                schedule.Enqueue(testCase, _criticalSectionTokensProvider?.GetTokens(testCase) ?? Array.Empty <string>());
            }

            for (int i = 0; i < workerCount; ++i)
            {
                _tasks.Add(WorkerActionAsync(this, schedule, _cancellationToken));
            }
            return(Task.WhenAll(_tasks));
        }