public void TasksConsistencyTest(int threadCount,int taskCount,Func<Action> taskPayloadProvider)
        {
            var pool = new ThreadPool.ThreadPool(threadCount);
            var random = new Random();
            int completedTasksCount = 0;

            for (int i = 0; i < taskCount;i++)
            {
                pool.Execute(new Task(()=>{
                                              completedTasksCount++;
                                              taskPayloadProvider.Invoke().Invoke();
                                          }),
                             (Priority) random.Next(0, 2));
            }

            pool.Stop();

            Assert.AreEqual(taskCount,completedTasksCount);
        }
示例#2
0
        public void TasksConsistencyTest(int threadCount, int taskCount, Func <Action> taskPayloadProvider)
        {
            var pool   = new ThreadPool.ThreadPool(threadCount);
            var random = new Random();
            int completedTasksCount = 0;

            for (int i = 0; i < taskCount; i++)
            {
                pool.Execute(new Task(() => {
                    completedTasksCount++;
                    taskPayloadProvider.Invoke().Invoke();
                }),
                             (Priority)random.Next(0, 2));
            }

            pool.Stop();

            Assert.AreEqual(taskCount, completedTasksCount);
        }
        public void TasksPriorityTest()
        {
            var pool = new ThreadPool.ThreadPool(2);
            var random = new Random();
            var priorityChecker = new PrioritySequenceChecker();

            for (int i = 0; i < 100; i++)
            {
                var priority = (Priority)random.Next(0, 2);
                priorityChecker.BuildSequence(priority);

                var task = new Task(() =>
                                        {
                                            Thread.Sleep(random.Next(10,20));
                                            Assert.AreEqual(true, priorityChecker.CheckSequence(priority));
                                        });

                pool.Execute(task, priority);
            }

            pool.Stop();
        }
示例#4
0
        public void TasksPriorityTest()
        {
            var pool            = new ThreadPool.ThreadPool(2);
            var random          = new Random();
            var priorityChecker = new PrioritySequenceChecker();

            for (int i = 0; i < 100; i++)
            {
                var priority = (Priority)random.Next(0, 2);
                priorityChecker.BuildSequence(priority);

                var task = new Task(() =>
                {
                    Thread.Sleep(random.Next(10, 20));
                    Assert.AreEqual(true, priorityChecker.CheckSequence(priority));
                });

                pool.Execute(task, priority);
            }

            pool.Stop();
        }