Пример #1
0
        public void AddPollingQueueCopy()
        {
            ITaskProcessorRuntimeInfo processorInfo = new FakeTaskProcessorRuntimeInfo()
            {
                TaskProcessorId = Guid.NewGuid(),
                Configuration   = new FakeTaskProcessorConfiguration()
            };

            this.Repository.Add(processorInfo);

            processorInfo = this.Repository.GetById(processorInfo.TaskProcessorId);

            processorInfo.Configuration.PollingQueues.AddCopy(new FakePollingQueueConfiguration()
            {
                Key          = "A",
                PollInterval = TimeSpan.FromSeconds(1),
                IsActive     = true
            });

            processorInfo.Configuration.PollingQueues.AddCopy(new FakePollingQueueConfiguration()
            {
                Key          = "B",
                PollInterval = TimeSpan.FromSeconds(2),
                IsMaster     = true,
                MaxWorkers   = 0
            });

            processorInfo.Configuration.PollingQueues.AddCopy(new FakePollingQueueConfiguration()
            {
                Key          = "C",
                PollInterval = TimeSpan.FromSeconds(3),
                IsConcurrent = true,
                MaxWorkers   = 12
            });

            this.Repository.Update(processorInfo);

            processorInfo = this.Repository.GetById(processorInfo.TaskProcessorId);

            Assert.AreEqual("A", processorInfo.Configuration.PollingQueues["A"].Key);
            Assert.AreEqual(TimeSpan.FromSeconds(1), processorInfo.Configuration.PollingQueues["A"].PollInterval);
            Assert.IsTrue(processorInfo.Configuration.PollingQueues["A"].IsActive);
            Assert.IsFalse(processorInfo.Configuration.PollingQueues["A"].IsMaster);
            Assert.IsFalse(processorInfo.Configuration.PollingQueues["A"].IsConcurrent);
            Assert.AreEqual(0, processorInfo.Configuration.PollingQueues["A"].MaxWorkers);

            Assert.AreEqual("B", processorInfo.Configuration.PollingQueues["B"].Key);
            Assert.AreEqual(TimeSpan.FromSeconds(2), processorInfo.Configuration.PollingQueues["B"].PollInterval);
            Assert.IsFalse(processorInfo.Configuration.PollingQueues["B"].IsActive);
            Assert.IsTrue(processorInfo.Configuration.PollingQueues["B"].IsMaster);
            Assert.IsFalse(processorInfo.Configuration.PollingQueues["B"].IsConcurrent);
            Assert.AreEqual(0, processorInfo.Configuration.PollingQueues["B"].MaxWorkers);

            Assert.AreEqual("C", processorInfo.Configuration.PollingQueues["C"].Key);
            Assert.AreEqual(TimeSpan.FromSeconds(3), processorInfo.Configuration.PollingQueues["C"].PollInterval);
            Assert.IsFalse(processorInfo.Configuration.PollingQueues["C"].IsActive);
            Assert.IsFalse(processorInfo.Configuration.PollingQueues["C"].IsMaster);
            Assert.IsTrue(processorInfo.Configuration.PollingQueues["C"].IsConcurrent);
            Assert.AreEqual(12, processorInfo.Configuration.PollingQueues["C"].MaxWorkers);
        }
Пример #2
0
        public void RemoveTaskJobSystemConfiguration()
        {
            ITaskProcessorRuntimeInfo processorInfo = new FakeTaskProcessorRuntimeInfo()
            {
                TaskProcessorId = Guid.NewGuid(),

                Configuration = new FakeTaskProcessorConfiguration()
            };

            processorInfo.Configuration.Tasks.Add(typeof(IFakeTask));

            this.Repository.Add(processorInfo);

            processorInfo = this.Repository.GetById(processorInfo.TaskProcessorId);

            Assert.IsNotNull(processorInfo.Configuration.Tasks[typeof(IFakeTask)]);

            processorInfo.Configuration.Tasks.Remove(typeof(IFakeTask));

            Assert.IsNull(processorInfo.Configuration.Tasks[typeof(IFakeTask)]);

            this.Repository.Update(processorInfo);

            processorInfo = this.Repository.GetById(processorInfo.TaskProcessorId);

            Assert.IsNull(processorInfo.Configuration.Tasks[typeof(IFakeTask)]);
        }
Пример #3
0
        public void AddPollingJobCopy()
        {
            ITaskProcessorRuntimeInfo processorInfo = new FakeTaskProcessorRuntimeInfo()
            {
                TaskProcessorId = Guid.NewGuid(),
                Configuration   = new FakeTaskProcessorConfiguration()
            };

            this.Repository.Add(processorInfo);

            processorInfo = this.Repository.GetById(processorInfo.TaskProcessorId);

            processorInfo.Configuration.PollingJobs.AddCopy(new FakePollingJobConfiguration()
            {
                ImplementationType = typeof(FakePollingJob),
                PollInterval       = TimeSpan.FromMinutes(1),
                IsMaster           = true,
                IsActive           = true
            });

            IPollingJobConfiguration result = processorInfo.Configuration.PollingJobs[typeof(FakePollingJob)];

            Assert.AreEqual(typeof(FakePollingJob), result.ImplementationType);
            Assert.AreEqual(TimeSpan.FromMinutes(1), result.PollInterval);
            Assert.IsTrue(result.IsMaster);
            Assert.IsTrue(result.IsActive);
        }
        private void ChooseNextTaskForProcessorOrder(TaskPriority higher, TaskPriority smaller)
        {
            FakeTaskProcessorRuntimeInfo taskProcessorInfo = new FakeTaskProcessorRuntimeInfo()
            {
                TaskProcessorId = Guid.NewGuid(),
                Configuration   = new FakeTaskProcessorConfiguration()
            };

            this.Repository.TaskProcessorRuntimeInfo.Add(taskProcessorInfo);

            FakeTaskRuntimeInfo pendingTaskInfo1 = this.Repository.TaskRuntimeInfo.Create <FakeTaskRuntimeInfo>();

            pendingTaskInfo1.Priority = smaller;

            this.Repository.TaskRuntimeInfo.Add(pendingTaskInfo1);

            FakeTaskRuntimeInfo pendingTaskInfo2 = this.Repository.TaskRuntimeInfo.Create <FakeTaskRuntimeInfo>();

            pendingTaskInfo1.Priority = higher;

            this.Repository.TaskRuntimeInfo.Add(pendingTaskInfo2);

            var result = this.TaskDistributor.ChooseNextTasksForProcessor(taskProcessorInfo.TaskProcessorId);

            Assert.AreEqual(2, result.Count());
            Assert.AreEqual(pendingTaskInfo2, result.First());
            Assert.AreEqual(pendingTaskInfo1, result.Last());
        }
        public void ChooseNextTaskForProcessorSkipProcessorTaskJob()
        {
            FakeTaskProcessorRuntimeInfo taskProcessorInfo = new FakeTaskProcessorRuntimeInfo()
            {
                TaskProcessorId = Guid.NewGuid(),
                Configuration   = new FakeTaskProcessorConfiguration()
            };

            taskProcessorInfo.Configuration.Tasks.Add(typeof(FakeTask)).MaxWorkers = 1;

            this.Repository.TaskProcessorRuntimeInfo.Add(taskProcessorInfo);

            FakeTaskRuntimeInfo pendingTaskToSkip = this.Repository.TaskRuntimeInfo.Create <FakeTaskRuntimeInfo>();

            pendingTaskToSkip.Priority = TaskPriority.Low;

            this.Repository.TaskRuntimeInfo.Add(pendingTaskToSkip);

            FakeTaskRuntimeInfo pendingTask = this.Repository.TaskRuntimeInfo.Create <FakeTaskRuntimeInfo>();

            pendingTask.Priority = TaskPriority.High;

            this.Repository.TaskRuntimeInfo.Add(pendingTask);

            IEnumerable <ITaskRuntimeInfo> result = this.TaskDistributor.ChooseNextTasksForProcessor(taskProcessorInfo.TaskProcessorId);

            Assert.AreEqual(pendingTask, result.Single());
        }
        public void ChooseProcessorForTask()
        {
            ITaskProcessorRuntimeInfo processorInfo1 = new FakeTaskProcessorRuntimeInfo()
            {
                TaskProcessorId = Guid.NewGuid()
            };

            this.Repository.TaskProcessorRuntimeInfo.Add(processorInfo1);

            ITaskProcessorRuntimeInfo processorInfo2 = new FakeTaskProcessorRuntimeInfo()
            {
                TaskProcessorId = Guid.NewGuid()
            };

            this.Repository.TaskProcessorRuntimeInfo.Add(processorInfo2);

            ITaskRuntimeInfo activeTaskInfo = this.Repository.TaskRuntimeInfo.Create();

            this.Repository.TaskRuntimeInfo.Add(activeTaskInfo);

            this.Repository.TaskRuntimeInfo.Start(activeTaskInfo.TaskId, processorInfo1.TaskProcessorId, DateTime.UtcNow);

            var result = this.TaskDistributor.ChooseProcessorForTask(new FakeTaskRuntimeInfo());

            Assert.AreEqual(processorInfo2, result.First());
            Assert.AreEqual(processorInfo1, result.Last());
        }
Пример #7
0
        public void PollingJobsConfiguration()
        {
            FakeTaskProcessorRuntimeInfo processorInfo1 = new FakeTaskProcessorRuntimeInfo()
            {
                TaskProcessorId = Guid.NewGuid(),

                Configuration = new FakeTaskProcessorConfiguration()
            };

            processorInfo1.Configuration.PollingJobs.Add(new FakePollingJobConfiguration()
            {
                ImplementationType = typeof(FakePollingJob),
                PollInterval       = TimeSpan.FromMinutes(1),
                IsMaster           = true
            });

            processorInfo1.Configuration.PollingJobs.Add(new FakePollingJobConfiguration()
            {
                ImplementationType = typeof(FakePollingJob2),
                PollInterval       = TimeSpan.FromMinutes(2),
                IsActive           = true
            });

            processorInfo1.Configuration.PollingJobs.Add(new FakePollingJobConfiguration()
            {
                ImplementationType = typeof(FakePollingJob3),
                PollInterval       = TimeSpan.FromMinutes(3),
                IsConcurrent       = true
            });

            this.Repository.Add(processorInfo1);

            ITaskProcessorRuntimeInfo processorInfo2 = this.Repository.GetById(processorInfo1.TaskProcessorId);

            Assert.AreEqual(3, processorInfo2.Configuration.PollingJobs.Count());

            IPollingJobConfiguration queue1 = processorInfo2.Configuration.PollingJobs.First(q => q.ImplementationType == typeof(FakePollingJob));

            Assert.AreEqual(TimeSpan.FromMinutes(1), queue1.PollInterval);
            Assert.IsTrue(queue1.IsMaster);
            Assert.IsFalse(queue1.IsActive);
            Assert.IsFalse(queue1.IsConcurrent);

            IPollingJobConfiguration queue2 = processorInfo2.Configuration.PollingJobs.First(q => q.ImplementationType == typeof(FakePollingJob2));

            Assert.AreEqual(TimeSpan.FromMinutes(2), queue2.PollInterval);
            Assert.IsFalse(queue2.IsMaster);
            Assert.IsTrue(queue2.IsActive);
            Assert.IsFalse(queue2.IsConcurrent);

            IPollingJobConfiguration queue3 = processorInfo2.Configuration.PollingJobs.First(q => q.ImplementationType == typeof(FakePollingJob3));

            Assert.AreEqual(TimeSpan.FromMinutes(3), queue3.PollInterval);
            Assert.IsFalse(queue3.IsMaster);
            Assert.IsFalse(queue3.IsActive);
            Assert.IsTrue(queue3.IsConcurrent);
        }
Пример #8
0
        public void PollingQueuesConfiguration()
        {
            FakeTaskProcessorRuntimeInfo processorInfo1 = new FakeTaskProcessorRuntimeInfo()
            {
                TaskProcessorId = Guid.NewGuid(),
                Configuration   = new FakeTaskProcessorConfiguration()
            };

            processorInfo1.Configuration.PollingQueues.Add(new FakePollingQueueConfiguration()
            {
                Key          = "A",
                PollInterval = TimeSpan.FromMinutes(1),
                IsMaster     = true
            });

            processorInfo1.Configuration.PollingQueues.Add(new FakePollingQueueConfiguration()
            {
                Key          = "B",
                PollInterval = TimeSpan.FromMinutes(2),
                IsActive     = true
            });

            processorInfo1.Configuration.PollingQueues.Add(new FakePollingQueueConfiguration()
            {
                Key          = "C",
                PollInterval = TimeSpan.FromMinutes(3),
                IsConcurrent = true
            });

            this.Repository.Add(processorInfo1);

            ITaskProcessorRuntimeInfo processorInfo2 = this.Repository.GetById(processorInfo1.TaskProcessorId);

            Assert.AreEqual(3, processorInfo2.Configuration.PollingQueues.Count());

            ITaskProcessorPollingQueueConfiguration queue = processorInfo2.Configuration.PollingQueues.First(q => q.Key == "A");

            Assert.AreEqual(TimeSpan.FromMinutes(1), queue.PollInterval);
            Assert.IsTrue(queue.IsMaster);
            Assert.IsFalse(queue.IsActive);
            Assert.IsFalse(queue.IsConcurrent);

            queue = processorInfo2.Configuration.PollingQueues.First(q => q.Key == "B");

            Assert.AreEqual(TimeSpan.FromMinutes(2), queue.PollInterval);
            Assert.IsFalse(queue.IsMaster);
            Assert.IsTrue(queue.IsActive);
            Assert.IsFalse(queue.IsConcurrent);

            queue = processorInfo2.Configuration.PollingQueues.First(q => q.Key == "C");

            Assert.AreEqual(TimeSpan.FromMinutes(3), queue.PollInterval);
            Assert.IsFalse(queue.IsMaster);
            Assert.IsFalse(queue.IsActive);
            Assert.IsTrue(queue.IsConcurrent);
        }
        public void ChooseProcessorForTaskExceedProcessorMaxWorkers()
        {
            ITaskProcessorRuntimeInfo processorInfo = new FakeTaskProcessorRuntimeInfo()
            {
                Configuration = new FakeTaskProcessorConfiguration()
            };

            processorInfo.Configuration.Tasks.MaxWorkers = 0;

            this.Repository.TaskProcessorRuntimeInfo.Add(processorInfo);

            Assert.IsFalse(this.TaskDistributor.ChooseProcessorForTask(new FakeTaskRuntimeInfo()).Any());
        }
Пример #10
0
        public void AddPollingQueueCopyNull()
        {
            ITaskProcessorRuntimeInfo processorInfo = new FakeTaskProcessorRuntimeInfo()
            {
                TaskProcessorId = Guid.NewGuid(),
                Configuration   = new FakeTaskProcessorConfiguration()
            };

            this.Repository.Add(processorInfo);

            processorInfo = this.Repository.GetById(processorInfo.TaskProcessorId);

            processorInfo.Configuration.PollingQueues.AddCopy(null);
        }
Пример #11
0
        public void AddNullTaskJobCopy()
        {
            ITaskProcessorRuntimeInfo processorInfo = new FakeTaskProcessorRuntimeInfo()
            {
                TaskProcessorId = Guid.NewGuid(),
                Configuration   = new FakeTaskProcessorConfiguration()
            };

            this.Repository.Add(processorInfo);

            processorInfo = this.Repository.GetById(processorInfo.TaskProcessorId);

            processorInfo.Configuration.Tasks.AddCopy(default(ITaskJobConfiguration));
        }
Пример #12
0
        public void NegativeTaskJobsMaxWorkers()
        {
            ITaskProcessorRuntimeInfo processorInfo = new FakeTaskProcessorRuntimeInfo()
            {
                TaskProcessorId = Guid.NewGuid(),
                Configuration   = new FakeTaskProcessorConfiguration()
            };

            this.Repository.Add(processorInfo);

            processorInfo = this.Repository.GetById(processorInfo.TaskProcessorId);

            processorInfo.Configuration.Tasks.MaxWorkers = -1;
        }
Пример #13
0
        public void RemovePollingJobConfigurationNullImplementationType()
        {
            ITaskProcessorRuntimeInfo processorInfo = new FakeTaskProcessorRuntimeInfo()
            {
                TaskProcessorId = Guid.NewGuid(),
                Configuration   = new FakeTaskProcessorConfiguration()
            };

            this.Repository.Add(processorInfo);

            processorInfo = this.Repository.GetById(processorInfo.TaskProcessorId);

            processorInfo.Configuration.PollingJobs.Remove(null);
        }
Пример #14
0
        public void RemovePollingJobConfigurationNotDescendant2()
        {
            ITaskProcessorRuntimeInfo processorInfo = new FakeTaskProcessorRuntimeInfo()
            {
                TaskProcessorId = Guid.NewGuid(),
                Configuration   = new FakeTaskProcessorConfiguration()
            };

            this.Repository.Add(processorInfo);

            processorInfo = this.Repository.GetById(processorInfo.TaskProcessorId);

            processorInfo.Configuration.PollingJobs.Remove(typeof(ICloneable));
        }
Пример #15
0
        public void RemoveTaskJobNull()
        {
            ITaskProcessorRuntimeInfo processorInfo = new FakeTaskProcessorRuntimeInfo()
            {
                TaskProcessorId = Guid.NewGuid(),
                Configuration   = new FakeTaskProcessorConfiguration()
            };

            this.Repository.Add(processorInfo);

            processorInfo = this.Repository.GetById(processorInfo.TaskProcessorId);

            processorInfo.Configuration.Tasks.Remove(null);
        }
Пример #16
0
        public void AddPollingJobImplementationTypeNotDescendant1()
        {
            ITaskProcessorRuntimeInfo processorInfo = new FakeTaskProcessorRuntimeInfo()
            {
                TaskProcessorId = Guid.NewGuid(),

                Configuration = new FakeTaskProcessorConfiguration()
            };

            this.Repository.Add(processorInfo);

            processorInfo = this.Repository.GetById(processorInfo.TaskProcessorId);

            processorInfo.Configuration.PollingJobs.Add(typeof(IPollingJob));
        }
        public void Add(ITaskProcessorRuntimeInfo taskProcessorInfo)
        {
            if (taskProcessorInfo == null)
            {
                throw new ArgumentNullException("taskProcessorInfo");
            }

            this.RecordMethodCall(taskProcessorInfo);

            FakeTaskProcessorRuntimeInfo fakeProcessor = (FakeTaskProcessorRuntimeInfo)taskProcessorInfo;

            fakeProcessor.ExpireAt = DateTime.Now + this.Expiration;

            this.taskProcessors.Add(taskProcessorInfo.TaskProcessorId, fakeProcessor);
        }
Пример #18
0
        public void AddPollingJobDuplicate()
        {
            ITaskProcessorRuntimeInfo processorInfo = new FakeTaskProcessorRuntimeInfo()
            {
                TaskProcessorId = Guid.NewGuid(),
                Configuration   = new FakeTaskProcessorConfiguration()
            };

            this.Repository.Add(processorInfo);

            processorInfo = this.Repository.GetById(processorInfo.TaskProcessorId);

            processorInfo.Configuration.PollingJobs.Add(typeof(FakePollingJob));
            processorInfo.Configuration.PollingJobs.Add(typeof(FakePollingJob));
        }
        public void ChooseProcessorForTaskEmptyConfiguration()
        {
            FakeTaskProcessorRuntimeInfo taskProcessorInfo = new FakeTaskProcessorRuntimeInfo()
            {
                Configuration = new FakeTaskProcessorConfiguration()
            };

            this.Repository.TaskProcessorRuntimeInfo.Add(taskProcessorInfo);

            var result = this.TaskDistributor.ChooseProcessorForTask(new FakeTaskRuntimeInfo()
            {
                TaskType = typeof(FakeTask)
            });

            Assert.AreEqual(taskProcessorInfo, result.Single());
        }
Пример #20
0
        public void GetPollingJobImplementationTypeNotDescendant2()
        {
            ITaskProcessorRuntimeInfo processorInfo = new FakeTaskProcessorRuntimeInfo()
            {
                TaskProcessorId = Guid.NewGuid(),

                Configuration = new FakeTaskProcessorConfiguration()
            };

            this.Repository.Add(processorInfo);

            processorInfo = this.Repository.GetById(processorInfo.TaskProcessorId);

            if (processorInfo.Configuration.PollingJobs[typeof(ICloneable)] != null)
            {
            }
        }
        public void ChooseProcessorForTask()
        {
            ITaskProcessorRuntimeInfo processorInfo = new FakeTaskProcessorRuntimeInfo()
            {
                Configuration = new FakeTaskProcessorConfiguration()
            };

            processorInfo.Configuration.Tasks.MaxWorkers = 1;
            processorInfo.Configuration.Tasks.Add(typeof(FakeTask)).MaxWorkers = 1;

            this.Repository.TaskProcessorRuntimeInfo.Add(processorInfo);

            Assert.AreEqual(processorInfo, this.TaskDistributor.ChooseProcessorForTask(new FakeTaskRuntimeInfo()
            {
                TaskType = typeof(FakeTask)
            }).Single());
        }
        public void ChooseProcessorForTaskExceedProcessorTaskJobMaxWorkers()
        {
            ITaskProcessorRuntimeInfo processorInfo = new FakeTaskProcessorRuntimeInfo()
            {
                TaskProcessorId = Guid.NewGuid(),
                Configuration   = new FakeTaskProcessorConfiguration()
            };

            processorInfo.Configuration.Tasks.Add(typeof(FakeTask)).MaxWorkers = 0;

            this.Repository.TaskProcessorRuntimeInfo.Add(processorInfo);

            Assert.IsFalse(this.TaskDistributor.ChooseProcessorForTask(new FakeTaskRuntimeInfo()
            {
                TaskType = typeof(FakeTask)
            }).Any());
        }
Пример #23
0
        public void GetTaskJobNull()
        {
            ITaskProcessorRuntimeInfo processorInfo = new FakeTaskProcessorRuntimeInfo()
            {
                TaskProcessorId = Guid.NewGuid(),
                Configuration   = new FakeTaskProcessorConfiguration()
            };

            processorInfo.Configuration.Tasks.Add(typeof(IFakeTask));

            this.Repository.Add(processorInfo);

            processorInfo = this.Repository.GetById(processorInfo.TaskProcessorId);

            if (processorInfo.Configuration.Tasks[null] == null)
            {
            }
        }
Пример #24
0
        public void AddDuplicateTaskJob2()
        {
            ITaskProcessorRuntimeInfo processorInfo = new FakeTaskProcessorRuntimeInfo()
            {
                TaskProcessorId = Guid.NewGuid(),
                Configuration   = new FakeTaskProcessorConfiguration()
            };

            processorInfo.Configuration.Tasks.Add(typeof(FakeTask));

            this.Repository.Add(processorInfo);

            processorInfo = this.Repository.GetById(processorInfo.TaskProcessorId);

            processorInfo.Configuration.Tasks.AddCopy(new FakeTaskJobConfiguration()
            {
                TaskType = typeof(FakeTask)
            });
        }
Пример #25
0
        public void RemovePollingJobConfiguration()
        {
            ITaskProcessorRuntimeInfo processorInfo = new FakeTaskProcessorRuntimeInfo()
            {
                TaskProcessorId = Guid.NewGuid(),
                Configuration   = new FakeTaskProcessorConfiguration()
            };

            processorInfo.Configuration.PollingJobs.Add(typeof(FakePollingJob)).PollInterval = TimeSpan.FromMinutes(1);

            this.Repository.Add(processorInfo);

            processorInfo = this.Repository.GetById(processorInfo.TaskProcessorId);

            Assert.IsNotNull(processorInfo.Configuration.PollingJobs[typeof(FakePollingJob)]);

            processorInfo.Configuration.PollingJobs.Remove(typeof(FakePollingJob));

            Assert.IsNull(processorInfo.Configuration.PollingJobs[typeof(FakePollingJob)]);
        }
Пример #26
0
        public void ZeroTaskJobsMaxWorkers()
        {
            ITaskProcessorRuntimeInfo processorInfo = new FakeTaskProcessorRuntimeInfo()
            {
                TaskProcessorId = Guid.NewGuid(),
                Configuration   = new FakeTaskProcessorConfiguration()
            };

            this.Repository.Add(processorInfo);

            processorInfo = this.Repository.GetById(processorInfo.TaskProcessorId);

            processorInfo.Configuration.Tasks.MaxWorkers = 0;

            this.Repository.Update(processorInfo);

            processorInfo = this.Repository.GetById(processorInfo.TaskProcessorId);

            Assert.AreEqual(0, processorInfo.Configuration.Tasks.MaxWorkers);
        }
Пример #27
0
        public void AddPollingQueueCopyDuplicate()
        {
            ITaskProcessorRuntimeInfo processorInfo = new FakeTaskProcessorRuntimeInfo()
            {
                TaskProcessorId = Guid.NewGuid(),
                Configuration   = new FakeTaskProcessorConfiguration()
            };

            this.Repository.Add(processorInfo);

            processorInfo = this.Repository.GetById(processorInfo.TaskProcessorId);

            processorInfo.Configuration.PollingQueues.Add("A");

            processorInfo.Configuration.PollingQueues.AddCopy(new FakePollingQueueConfiguration()
            {
                Key          = "A",
                PollInterval = TimeSpan.FromSeconds(1)
            });
        }
Пример #28
0
        public void AddPollingJobCopyDuplicate()
        {
            ITaskProcessorRuntimeInfo processorInfo = new FakeTaskProcessorRuntimeInfo()
            {
                TaskProcessorId = Guid.NewGuid(),
                Configuration   = new FakeTaskProcessorConfiguration()
            };

            this.Repository.Add(processorInfo);

            processorInfo = this.Repository.GetById(processorInfo.TaskProcessorId);

            processorInfo.Configuration.PollingJobs.Add(typeof(FakePollingJob));

            processorInfo.Configuration.PollingJobs.AddCopy(new FakePollingJobConfiguration()
            {
                ImplementationType = typeof(FakePollingJob),
                PollInterval       = TimeSpan.FromMinutes(1)
            });
        }
Пример #29
0
        public void AddPollingJob()
        {
            ITaskProcessorRuntimeInfo processorInfo = new FakeTaskProcessorRuntimeInfo()
            {
                TaskProcessorId = Guid.NewGuid(),
                Configuration   = new FakeTaskProcessorConfiguration()
            };

            this.Repository.Add(processorInfo);

            processorInfo = this.Repository.GetById(processorInfo.TaskProcessorId);

            IPollingJobConfiguration result = processorInfo.Configuration.PollingJobs.Add(typeof(FakePollingJob));

            Assert.AreEqual(typeof(FakePollingJob), result.ImplementationType);

            result = processorInfo.Configuration.PollingJobs[typeof(FakePollingJob)];

            Assert.AreEqual(typeof(FakePollingJob), result.ImplementationType);
        }
        public void ChooseNextTaskForProcessor()
        {
            ITaskProcessorRuntimeInfo processorInfo1 = new FakeTaskProcessorRuntimeInfo()
            {
                TaskProcessorId = Guid.NewGuid(),
                Configuration   = new FakeTaskProcessorConfiguration()
            };

            processorInfo1.Configuration.Tasks.MaxWorkers = 4;
            processorInfo1.Configuration.Tasks.Add(typeof(IFakeTask)).MaxWorkers = 2;

            this.Repository.TaskProcessorRuntimeInfo.Add(processorInfo1);

            ITaskProcessorRuntimeInfo processorInfo2 = new FakeTaskProcessorRuntimeInfo()
            {
                TaskProcessorId = Guid.NewGuid(),
                Configuration   = new FakeTaskProcessorConfiguration()
            };

            processorInfo2.Configuration.Tasks.MaxWorkers = 1;

            this.Repository.TaskProcessorRuntimeInfo.Add(processorInfo2);

            ITaskRuntimeInfo pendingTaskInfo1 = this.Repository.TaskRuntimeInfo.Add(TaskPriority.High);
            ITaskRuntimeInfo pendingTaskInfo2 = this.Repository.TaskRuntimeInfo.Add(TaskPriority.VeryHigh);

            ITaskRuntimeInfo activeTaskInfo1 = this.Repository.TaskRuntimeInfo.Add();
            ITaskRuntimeInfo activeTaskInfo2 = this.Repository.TaskRuntimeInfo.Add();
            ITaskRuntimeInfo activeTaskInfo3 = this.Repository.TaskRuntimeInfo.Add();

            this.Repository.TaskRuntimeInfo.Start(activeTaskInfo1.TaskId, Guid.NewGuid(), DateTime.UtcNow);
            this.Repository.TaskRuntimeInfo.Start(activeTaskInfo2.TaskId, processorInfo1.TaskProcessorId, DateTime.UtcNow);
            this.Repository.TaskRuntimeInfo.Start(activeTaskInfo3.TaskId, processorInfo1.TaskProcessorId, DateTime.UtcNow);

            IEnumerable <ITaskRuntimeInfo> result = this.TaskDistributor.ChooseNextTasksForProcessor(processorInfo1.TaskProcessorId);

            Assert.AreEqual(2, result.Count());
            Assert.AreEqual(pendingTaskInfo2, result.First());
            Assert.AreEqual(pendingTaskInfo1, result.Last());
        }