FetchTaskForId() 공개 정적인 메소드

public static FetchTaskForId ( string id, TaskType type ) : Task
id string
type TaskType
리턴 Task
예제 #1
0
        public void ExistingTaskExists()
        {
            Scheduler.InitTaskForId(testid, test_task_type);
            var task = Scheduler.FetchTaskForId(testid, test_task_type);

            Assert.That(task.id == testid);
        }
예제 #2
0
        public void InitTaskForIdYieldsStopped()
        {
            Scheduler.InitTaskForId(testid, test_task_type);
            var task = Scheduler.FetchTaskForId(testid, test_task_type);

            Assert.AreEqual(TaskStatus.stopped, task.status);
        }
예제 #3
0
        public void StartTaskForIdYieldsAllocated()
        {
            Scheduler.InitTaskForId(testid, test_task_type);
            Scheduler.StartTaskForId(testid, test_task_type);
            var task = Scheduler.FetchTaskForId(testid, test_task_type);

            Assert.AreEqual(TaskStatus.allocated, task.status);
        }
예제 #4
0
        public void UpdateStartTaskForIdYieldsRunning()
        {
            Scheduler.InitTaskForId(testid, test_task_type);
            Scheduler.StartTaskForId(testid, test_task_type);
            Scheduler.UpdateStartTaskForId(testid, test_task_type);
            var task = Scheduler.FetchTaskForId(testid, test_task_type);

            Assert.AreEqual(TaskStatus.running, task.status);
        }
예제 #5
0
        public void StopTaskForIdYieldsStopTimeGreaterThanStartTime()
        {
            Scheduler.InitTaskForId(testid, test_task_type);
            Scheduler.StartTaskForId(testid, test_task_type);
            Utils.Wait(3);
            Scheduler.StopTaskForId(testid, test_task_type);
            var task = Scheduler.FetchTaskForId(testid, test_task_type);

            Assert.Greater(task.stop, task.start);
        }
예제 #6
0
        public void IsNotAbandonedIfWithinInterval()
        {
            Scheduler.InitTaskForId(testid, test_task_type);
            var task = Scheduler.FetchTaskForId(testid, test_task_type);
            var less_than_interval = new System.TimeSpan(0, (Configurator.nonical_aggregate_interval_hours * 60) - 60, 0);

            task.start = DateTime.UtcNow - less_than_interval;
            Scheduler.StoreTaskForId(task, testid, test_task_type);
            Assert.AreEqual(false, Scheduler.IsAbandoned(testid, test_task_type));
        }
예제 #7
0
        public void IsAbandonedIfBeyondInterval()
        {
            Scheduler.InitTaskForId(testid, test_task_type);
            var task = Scheduler.FetchTaskForId(testid, test_task_type);
            var more_than_interval = new System.TimeSpan(0, (Configurator.nonical_aggregate_interval_hours * 60) + 60, 0);

            task.start = DateTime.UtcNow - more_than_interval;              // started more than 8hrs ago
            Scheduler.StoreTaskForId(task, testid, test_task_type);
            Assert.AreEqual(true, Scheduler.IsAbandoned(testid, test_task_type));
        }
예제 #8
0
        public void MaybeStartTaskUpdatesStartTime()
        {
            Scheduler.InitTaskForId(testid, test_task_type);
            var task = Scheduler.FetchTaskForId(testid, test_task_type);
            var now  = DateTime.UtcNow;

            Scheduler.MaybeStartTaskForId(now, test_calinfo, test_task_type);
            task = Scheduler.FetchTaskForId(testid, test_task_type);
            Assert.That(task.start > now);
        }
예제 #9
0
        public void MaybeStartTaskSucceedsForLongEnoughInterval()
        {
            Scheduler.InitTaskForId(testid, test_task_type);
            var task = Scheduler.FetchTaskForId(testid, test_task_type);
            var ts   = new System.TimeSpan(0, (Configurator.nonical_aggregate_interval_hours * 60) + 10, 0);
            var now  = task.start + ts;

            Scheduler.MaybeStartTaskForId(now, test_calinfo, test_task_type);
            task = Scheduler.FetchTaskForId(testid, test_task_type);
            Assert.AreEqual(TaskStatus.allocated, task.status);
        }
예제 #10
0
        public void MaybeStartTaskFailsForTooShortInterval()
        {
            Scheduler.InitTaskForId(testid, test_task_type);
            var task = Scheduler.FetchTaskForId(testid, test_task_type);
            var ts   = new System.TimeSpan(0, (Configurator.nonical_aggregate_interval_hours * 60) - 10, 0);
            var now  = task.start + ts;

            Scheduler.MaybeStartTaskForId(now, test_calinfo, test_task_type);
            task = Scheduler.FetchTaskForId(testid, test_task_type);
            Assert.AreEqual(TaskStatus.stopped, task.status);
        }
예제 #11
0
        public void IsAbandonedIfLockedAndNotRunning()
        {
            Scheduler.InitTaskForId(testid, test_task_type);
            var task = Scheduler.FetchTaskForId(testid, test_task_type);

            //task.running = false;
            task.status = TaskStatus.stopped;
            Scheduler.StoreTaskForId(task, testid, test_task_type);
            Scheduler.LockId(testid, test_task_type);
            Assert.AreEqual(true, Scheduler.IsAbandoned(testid, test_task_type));
        }
예제 #12
0
        public static bool IsAbandoned(string id, TaskType type)
        {
            var task = Scheduler.FetchTaskForId(id, type);

            if (IsLockedId(id, type) == true && task.status != TaskStatus.running)
            {
                return(true);
            }

            var start = task.start;
            var now   = DateTime.UtcNow;

            if (now - start <= IntervalFromType(type))
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }