public virtual void ReportPerformance()
        {
            this.Receiver.SubscribeForChannels(MessageBusChannel.PerformanceReport);

            TaskProcessorPerformanceReport performance = new TaskProcessorPerformanceReport(Guid.NewGuid())
            {
                CpuPercent = 23,
                RamPercent = 31
            };

            performance.TasksPerformance.Add(new TaskPerformanceReport(Guid.NewGuid())
            {
                CpuPercent = 45,
                RamPercent = 46
            });

            performance.TasksPerformance.Add(new TaskPerformanceReport(Guid.NewGuid())
            {
                CpuPercent = 76,
                RamPercent = 84
            });

            TaskProcessorPerformanceEventArgs args = Helpers.WaitForEvent <TaskProcessorPerformanceEventArgs>(
                this.Timeout,
                handler => this.Receiver.PerformanceReportReceived += handler,
                () => this.Sender.NotifyPerformanceReport(performance));

            UnitTestHelpers.AssertEqualByPublicScalarProperties(performance, args.PerformanceInfo);

            Assert.IsTrue(performance.TasksPerformance.IsEquivalentTo(
                              args.PerformanceInfo.TasksPerformance,
                              (a, b) => UnitTestHelpers.AreEqualByPublicScalarProperties(a, b)));
        }
Example #2
0
        public void SerializeAndDeserializeWithType()
        {
            FakeEntity entity1 = new FakeEntity()
            {
                StringValue = "A",
                IntValue    = 19
            };

            byte[] content = this.Serializer.Serialize(entity1);

            FakeEntity entity2 = (FakeEntity)this.Serializer.Deserialize(content, entity1.GetType());

            UnitTestHelpers.AssertEqualByPublicScalarProperties(entity1, entity2);
        }
        private void SerializeAndDeserialize(Func <byte[], object> deserializeCallback)
        {
            FakeEntity entity1 = new FakeEntity()
            {
                StringValue = "A",
                IntValue    = 19
            };

            byte[] content = this.Serializer.Serialize(entity1);

            FakeEntity entity2 = (FakeEntity)this.Serializer.Deserialize(content);

            UnitTestHelpers.AssertEqualByPublicScalarProperties(entity1, entity2);
        }
        public void AddTask()
        {
            Guid taskId = Guid.NewGuid();

            FakeTask task1 = new FakeTask()
            {
                StringValue = "Hello World",
                NumberValue = DateTime.UtcNow.Millisecond
            };

            this.Repository.Add(taskId, task1);

            FakeTask task2 = (FakeTask)this.Repository.GetById(taskId);

            UnitTestHelpers.AssertEqualByPublicScalarProperties(task1, task2);
        }
        public void AddPollingQueueTask()
        {
            ITaskRuntimeInfo taskInfo1 = this.Repository.Add("Test");
            ITaskRuntimeInfo taskInfo2 = this.Repository.GetById(taskInfo1.TaskId);

            UnitTestHelpers.AssertEqualByPublicScalarProperties(taskInfo1, taskInfo2);

            Assert.IsTrue(this.Repository.CheckIsPendingOrActive(taskInfo1.TaskId));
            Assert.IsFalse(this.Repository.GetPending(false).Any(t => t.TaskId == taskInfo1.TaskId));
            Assert.IsTrue(this.Repository.GetPending(true).Any(t => t.TaskId == taskInfo1.TaskId));
            Assert.IsFalse(this.Repository.GetPendingAndActive()[TaskStatus.Pending].Any(t => t.TaskId == taskInfo1.TaskId));
            Assert.IsFalse(this.Repository.GetPendingAndActive()[TaskStatus.InProgress].Any(t => t.TaskId == taskInfo1.TaskId));
            Assert.IsFalse(this.Repository.GetActive().Any(t => t.TaskId == taskInfo1.TaskId));
            Assert.IsFalse(this.Repository.GetFailed().Any(t => t.TaskId == taskInfo1.TaskId));
            Assert.IsFalse(this.Repository.GetArchive().Any(t => t.TaskId == taskInfo1.TaskId));
            Assert.IsTrue(this.Repository.ReservePollingQueueTasks("Test", 1).Any(t => t.TaskId == taskInfo1.TaskId));
        }
Example #6
0
        private void SubmitTask(bool isPollingQueueTask, bool hasSummary, TaskPriority expectedPriority, Func <ITask, ITaskSummary, Guid> submitCallback)
        {
            this.DateTimeProvider.UtcNow = DateTime.UtcNow.AddMinutes(-1);

            FakeTask task1 = new FakeTask()
            {
                StringValue = "Hello Submit Task",
                NumberValue = 1234567
            };

            StringTaskSummary summary1;

            if (hasSummary)
            {
                summary1 = new StringTaskSummary("Hello World");
            }

            this.Configuration.PredefineResult(isPollingQueueTask ? "Test" : null, c => c.GetPollingQueueKey(task1.GetType()));

            Guid taskId = submitCallback(task1, summary1);

            Assert.IsNotNull(this.TaskProcessorFacade.GetTask(taskId));

            ITaskRuntimeInfo taskInfo = this.TaskProcessorFacade.GetTaskRuntimeInfo(taskId);

            Assert.IsNotNull(taskInfo);

            Assert.AreEqual(taskId, taskInfo.TaskId);
            Assert.AreEqual(expectedPriority, taskInfo.Priority);
            Assert.AreEqual(TaskStatus.Pending, taskInfo.Status);
            Assert.AreEqual(this.DateTimeProvider.UtcNow, taskInfo.SubmittedUtc);

            FakeTask task2 = (FakeTask)this.Repository.Tasks.GetById(taskId);

            UnitTestHelpers.AssertEqualByPublicScalarProperties(task1, task2);

            if (hasSummary)
            {
                StringTaskSummary summary2 = (StringTaskSummary)this.Repository.TaskSummary.GetById(taskId);

                Assert.AreEqual(summary1.Summary, summary2.Summary);
            }

            TaskSubmittedMasterCommand message = this.TaskProcessorFacade.MessageBus.MasterCommands
                                                 .OfType <TaskSubmittedMasterCommand>()
                                                 .SingleOrDefault(m => m.TaskId == taskId);

            if (isPollingQueueTask)
            {
                Assert.IsNull(message);

                Assert.IsTrue(this.Repository.TaskRuntimeInfo.GetPending(true).Any(p => p.TaskId == taskId));
                Assert.IsTrue(this.Repository.TaskRuntimeInfo.ReservePollingQueueTasks("Test", int.MaxValue).Any(p => p.TaskId == taskId));
            }
            else
            {
                Assert.IsNotNull(message);

                Assert.AreNotEqual(Guid.Empty, message.MessageUniqueId);
                Assert.AreEqual(taskId, message.TaskId);

                Assert.IsTrue(this.Repository.TaskRuntimeInfo.GetPending(false).Any(p => p.TaskId == taskId));
            }
        }