public void run_to_completion_within_the_time()
        {
            var timeout = new JobTimeout(5.Seconds());
            var job     = new FakeJob(1.Seconds());

            var task = timeout.Execute(job);

            task.Wait();

            task.IsCanceled.ShouldBeFalse();
            task.IsFaulted.ShouldBeFalse();
            task.Exception.ShouldBeNull();

            job.Finished.ShouldBeTrue();
        }
        public void run_over_the_allowed_time()
        {
            var timeout = new JobTimeout(1.Seconds());
            var job     = new FakeJob(10.Seconds());

            var task = timeout.Execute(job);

            Exception <AggregateException> .ShouldBeThrownBy(() => {
                task.Wait();
            });



            task.Exception.InnerException.ShouldBeOfType <TimeoutException>();
            job.Finished.ShouldBeFalse();
        }
Ejemplo n.º 3
0
        public Task <RescheduleRequest <T> > ToTask(IJob job, IJobRunTracker tracker)
        {
            var timeout = new JobTimeout(Timeout);

            return(timeout.Execute(job).ContinueWith(t => {
                if (t.IsFaulted)
                {
                    tracker.Failure(t.Exception);
                    throw t.Exception;
                }

                var nextTime = Scheduler.ScheduleNextTime(tracker.Now(), LastExecution);
                tracker.Success(nextTime);

                return new RescheduleRequest <T>
                {
                    NextTime = nextTime
                };
            }));
        }