Exemplo n.º 1
0
 public void Create_InvalidArgs_Exception()
 {
     Assert.Catch <ArgumentException>(() =>
     {
         TaskManagerOptions.Create("Test: ", new string[] { "-eventLog", "xpto" });
     });
 }
Exemplo n.º 2
0
        public void Create_OnlyStatsStrategy_Instance()
        {
            var actual = TaskManagerOptions.Create("Test: ", new string[] { "-s", "Memory" });

            Assert.IsInstanceOf <WindowsEventLog>(actual.EventLog);
            Assert.IsInstanceOf <MemoryStatsStrategy>(actual.StatsStrategy);
            Assert.IsFalse(actual.NonStop);
            Assert.AreEqual(0, actual.NonStopWait);
        }
Exemplo n.º 3
0
        public void Create_OnlyEventLog_Instance()
        {
            var actual = TaskManagerOptions.Create("Test: ", new string[] { "-e", "Console" });

            Assert.IsInstanceOf <ConsoleEventLog>(actual.EventLog);
            Assert.IsInstanceOf <PerformanceCounterStatsStrategy>(actual.StatsStrategy);
            Assert.IsFalse(actual.NonStop);
            Assert.AreEqual(0, actual.NonStopWait);
        }
Exemplo n.º 4
0
        public void Create_NoArgs_Instance()
        {
            var actual = TaskManagerOptions.Create("Test: ", new string[0]);

            Assert.IsInstanceOf <WindowsEventLog>(actual.EventLog);
            Assert.IsInstanceOf <PerformanceCounterStatsStrategy>(actual.StatsStrategy);
            Assert.IsFalse(actual.NonStop);
            Assert.AreEqual(0, actual.NonStopWait);
        }
Exemplo n.º 5
0
        public void Create_Help_Instance()
        {
            var actual = TaskManagerOptions.Create("Test: ", new string[] { "-h" });

            Assert.IsTrue(actual.ShowHelp);
            StringAssert.Contains("Test: ", actual.HelpText);
            Assert.IsNull(actual.EventLog);
            Assert.IsNull(actual.StatsStrategy);
            Assert.IsFalse(actual.NonStop);
            Assert.AreEqual(0, actual.NonStopWait);
        }
Exemplo n.º 6
0
        private TaskManager GetTaskManager()
        {
            // Task registration bus
            var taskRegistrationSyncBus =
                _services.GetRequiredService <ISynchronizedMessageBusContext <IMessageBus <TaskRegistrationProducer> > >();

            // Task progress bus
            var taskProgressSyncBus =
                _services.GetRequiredService <ISynchronizedMessageBusContext <IMessageBus <TaskProgressProducer> > >();

            var options     = new TaskManagerOptions(TimeSpan.FromSeconds(60), TimeSpan.FromSeconds(60));
            var taskManager = new TaskManager(options, taskRegistrationSyncBus, taskProgressSyncBus);

            return(taskManager);
        }
Exemplo n.º 7
0
        public void Create_AllArgs_Instance()
        {
            var actual = TaskManagerOptions.Create("Test: ", new string[] { "-e", "Console", "-s", "Memory", "-non-stop", "-non-stop-wait", "5000" });

            Assert.IsInstanceOf <ConsoleEventLog>(actual.EventLog);
            Assert.IsInstanceOf <MemoryStatsStrategy>(actual.StatsStrategy);
            Assert.IsTrue(actual.NonStop);
            Assert.AreEqual(5000, actual.NonStopWait);

            actual = TaskManagerOptions.Create("Test: ", new string[] { "-e", "Windows", "-s", "PerformanceCounter", "-non-stop", "-non-stop-wait", "1000" });
            Assert.IsInstanceOf <WindowsEventLog>(actual.EventLog);
            Assert.IsInstanceOf <PerformanceCounterStatsStrategy>(actual.StatsStrategy);
            Assert.IsTrue(actual.NonStop);
            Assert.AreEqual(1000, actual.NonStopWait);
        }
        public void TestForceCancelTaskAndRecovery()
        {
            // MyTaskAutoCancelTask
            // AliveCycle = 1 sec
            // LockCycle - 2 secs
            // Runs for - 1 hours (till force cancelled)

            var options = new TaskManagerOptions()
            {
                MainLoopWait = 100, MaxWorkerThreads = 1
            };

            using (var manager = TaskManagerFactory.Create(() => TestDbContext.Create(), options))
            {
                manager.RegisterTaskType(typeof(MyTaskLongTask),
                                         new TaskSettings("CBC68EFE-532D-44C7-87D8-3443636F6425")
                {
                    AliveCycle = new TimeSpan(TimeSpan.TicksPerSecond)
                });

                var longTaskId = manager.EnqueueSingleTask <MyTaskLongTask>();

                manager.StartListener();
                Thread.Sleep(500);

                manager.RegisterTaskType(typeof(MyTask), new TaskSettings("BC54E6F5-9EDF-48C2-8765-269BCC472DDF"));
                var taskId = manager.EnqueueSingleTask <MyTask>();

                int tickCount = 0;
                manager.SubscribeToListener(() => { if (tickCount++ > 2)
                                                    {
                                                        manager.StopListener();
                                                    }
                                            });
                manager.WaitTillListenerStops();

                Assert.True(manager.LatestListenerException == null);

                using (var db = TestDbContext.Create())
                {
                    var longTask = db.SingleTasks.Where(t => t.Id == longTaskId).FirstOrDefault();
                    Assert.True(longTask.Status == SingleTaskStatus.CompletedAborted);

                    var task = db.SingleTasks.Where(t => t.Id == taskId).FirstOrDefault();
                    Assert.True(task.Status == SingleTaskStatus.Completed);
                }
            }
        }