Esempio n. 1
0
        public async Task Engines_BasicEngine_ShouldRestorePartiallyCompletedState()
        {
            const int       jobsterCount   = 100;
            CoreTestContext context        = new CoreTestContext();
            TestJobster     initialJobster = new TestJobster(context)
            {
                Status = JobsterStatusEnum.Completed
            };

            IJobsterAsync <CoreTestContext>[] completedState =
            {
                initialJobster,
                new TestJobster(
                    context,
                    false,
                    new [] { initialJobster.JobId })
                {
                    Status = JobsterStatusEnum.NotStarted
                }
            };

            _ = await ExecuteOrchestrator(
                jobsterCount,
                jobsterCount,
                false,
                ExceptionPolicy.NoThrow,
                null,
                completedState);

            Assert.AreEqual(1, context.Counter);
        }
Esempio n. 2
0
        public async Task Engines_BasicEngine_ShouldNotRestoreCompletedState()
        {
            const int       jobsterCount = 100;
            CoreTestContext context      = new CoreTestContext();

            IJobsterAsync <CoreTestContext>[] completedState =
            {
                new TestJobster(context)
                {
                    Status = JobsterStatusEnum.Completed
                },
                new TestJobster(context)
                {
                    Status = JobsterStatusEnum.Completed
                }
            };

            CoreTestContext newContext = await ExecuteOrchestrator(
                jobsterCount,
                jobsterCount,
                false,
                ExceptionPolicy.NoThrow,
                null,
                completedState);

            Assert.AreEqual(jobsterCount, newContext.Counter);
        }
Esempio n. 3
0
        public async Task Engines_BasicEngine_ShouldExecuteAllJobsters(
            bool moreThanBatchSize)
        {
            const int batchSize    = 3;
            int       jobsterCount = moreThanBatchSize ? 5 : 2;

            CoreTestContext context = await ExecuteOrchestrator(jobsterCount, batchSize);

            Assert.AreEqual(jobsterCount, context.Counter);
        }
Esempio n. 4
0
        public async Task Engines_BasicEngine_ShouldCancelExecution()
        {
            const int jobsterCount = 100;

            _cancellationTokenSource.Cancel();

            CoreTestContext context = await ExecuteOrchestrator(jobsterCount, 1);

            Assert.AreEqual(0, context.Counter);
        }
Esempio n. 5
0
        public async Task Engines_BasicEngine_ShouldNotThrowException()
        {
            const int jobsterCount = 100;

            CoreTestContext context = await ExecuteOrchestrator(
                jobsterCount,
                1,
                true,
                ExceptionPolicy.NoThrow);

            Assert.AreEqual(jobsterCount - 1, context.Counter);
        }
Esempio n. 6
0
        public void Engines_BasicEngine_ShouldThrowExceptionAtTheEnd()
        {
            const int       jobsterCount = 100;
            CoreTestContext context      = new CoreTestContext();

            Assert.ThrowsAsync <JobsterException>(async() => await ExecuteOrchestrator(
                                                      jobsterCount,
                                                      1,
                                                      true,
                                                      ExceptionPolicy.ThrowAtTheEnd,
                                                      context));
            Assert.AreEqual(jobsterCount - 1, context.Counter);
        }
Esempio n. 7
0
        private async Task <CoreTestContext> ExecuteOrchestrator(
            int jobsterCount,
            int batchSize,
            bool jobsterThrowsExceptionInTheMiddle = false,
            ExceptionPolicy exceptionPolicy        = ExceptionPolicy.NoThrow,
            CoreTestContext context = null,
            IEnumerable <IJobsterAsync <CoreTestContext> > state     = null,
            MemoryJobsterStateHandler <CoreTestContext> stateHandler = null,
            IProgressNotifier <CoreTestContext> progressNotifier     = null)
        {
            context ??= new CoreTestContext();
            int middleJobster = jobsterCount / 2;

            IList <IJobsterAsync <CoreTestContext> > jobsters = new List <IJobsterAsync <CoreTestContext> >(jobsterCount);

            for (int i = 0; i < jobsterCount; i++)
            {
                jobsters.Add(new TestJobster(
                                 context,
                                 jobsterThrowsExceptionInTheMiddle && i == middleJobster));
            }

            JobsterBuilder <CoreTestContext> builder = new JobsterBuilder <CoreTestContext>(_mockLogger)
                                                       .AddBatchSize(batchSize)
                                                       .AddExceptionPolicy(exceptionPolicy)
                                                       .AddJobsters(jobsters.ToArray())
                                                       .AddStateHandler(stateHandler ?? new MemoryJobsterStateHandler <CoreTestContext>(
                                                                            state ?? new IJobsterAsync <CoreTestContext> [0]));

            if (progressNotifier != null)
            {
                builder.AddProgressNotifier(progressNotifier);
            }

            _ = await builder
                .BuildEngine()
                .ScheduleJobstersAsync(_cancellationTokenSource.Token);

            return(context);
        }
Esempio n. 8
0
 public DogsController(CoreTestContext db)
 {
     Repository = new DogsRepository(db);
 }
Esempio n. 9
0
 public PeopleController(CoreTestContext db)
 {
     Repository = new PeopleRepository(db);
 }