public async Task ScheduleJobsNone() { List <SchedulerSyncJob> jobs = new List <SchedulerSyncJob>(); List <SchedulerSyncJob> updatedJobs = await _jobSchedulingService.DistributeJobStartTimesAsync(jobs); Assert.AreEqual(updatedJobs.Count, 0); }
public async Task ScheduleJobsWithConcurrency() { int defaultTenMinuteRuntime = 600; var longerDefaultRuntimeService = new DefaultRuntimeRetrievalService(defaultTenMinuteRuntime); JobSchedulerConfig jobSchedulerConfig = new JobSchedulerConfig(true, 0, true, false, START_TIME_DELAY_MINUTES, BUFFER_SECONDS, DEFAULT_RUNTIME_SECONDS);; JobSchedulingService jobSchedulingService = new JobSchedulingService( jobSchedulerConfig, _mockSyncJobRepository, longerDefaultRuntimeService, _mockLoggingRepository ); DateTime dateTimeNow = DateTime.UtcNow.Date; List <SchedulerSyncJob> jobs = CreateSampleSyncJobs(10, 1, dateTimeNow.Date.AddDays(-20), dateTimeNow.Date); List <SchedulerSyncJob> updatedJobs = await jobSchedulingService.DistributeJobStartTimesAsync(jobs); jobs.Sort(); updatedJobs.Sort(); Assert.AreEqual(jobs.Count, updatedJobs.Count); Assert.AreEqual(jobs.Count, 10); // Check that times are sorted like this with concurrency of 2: // 0 2 4 6 8 9 // 1 3 5 7 for (int i = 0; i < jobs.Count; i++) { Assert.AreEqual(jobs[i].TargetOfficeGroupId, updatedJobs[i].TargetOfficeGroupId); Assert.IsTrue(jobs[i].StartDate < dateTimeNow); if (i < 8) { Assert.IsTrue(updatedJobs[i].StartDate >= dateTimeNow.AddSeconds(60 * START_TIME_DELAY_MINUTES + i / 2 * (defaultTenMinuteRuntime + BUFFER_SECONDS))); } else { Assert.IsTrue(updatedJobs[i].StartDate >= dateTimeNow.AddSeconds(60 * START_TIME_DELAY_MINUTES + (i - 5) * (defaultTenMinuteRuntime + BUFFER_SECONDS))); } } }