public void daily() { var startDate = new DateTime(2015, 03, 26, 9, 0, 0); var endDate = startDate.AddDays(2).AddHours(12); var sut = new Schedule(); sut.Type = FrequencyType.Daily; sut.Interval = 1; sut.SubdayType = SubIntervalType.Minutes; sut.SubdayInterval = 5; sut.StartDate = startDate.Date; sut.StartTime = startDate.TimeOfDay; sut.EndDate = endDate.Date; sut.EndTime = endDate.TimeOfDay; var lastRunDate = DateTime.Now; var result = sut.CalculateNextRun(lastRunDate); var expected = sut.MaxDateTime(); Assert.Equal(expected, result); }
public void weekly() { var hour = 10; var minute = 0; var second = 0; var startDate = new DateTime(2015, 02, 26, hour, minute, second); var sut = new Schedule(); sut.Type = FrequencyType.Weekly; sut.Interval = 6; sut.SubdayType = SubIntervalType.SpecificTime; sut.StartDate = startDate.Date; sut.StartTime = startDate.TimeOfDay; sut.EndDate = DateTime.MaxValue.Date; sut.EndTime = DateTime.MaxValue.TimeOfDay; //var now = DateTime.Now; var dtn = DateTime.Now; var tmw = dtn.AddDays(sut.RecurrenceFactor * 7); var lrd = new DateTime(2015, 03, 05, hour, minute, second); var result = sut.CalculateNextRun(lrd); }
public void dailyS() { var hour = 8; var minute = 0; var second = 0; var startDate = new DateTime(2015, 02, 26, hour, minute, second); var sut = new Schedule(); sut.Type = FrequencyType.Daily; sut.Interval = 1; sut.SubdayType = SubIntervalType.SpecificTime; sut.SubdayInterval = 5; sut.StartDate = startDate.Date; sut.StartTime = startDate.TimeOfDay; sut.EndDate = DateTime.MaxValue.Date; sut.EndTime = DateTime.MaxValue.TimeOfDay; var dateTimeNow = DateTime.Now; var tmw = dateTimeNow.AddDays(1); var lastRunDate = new DateTime(dateTimeNow.Year, dateTimeNow.Month, dateTimeNow.Day, hour, minute, second); var expected = new DateTime(tmw.Year, tmw.Month, tmw.Day, hour, minute, second); var result = sut.CalculateNextRun(lastRunDate); Assert.Equal(expected, result); }
private void ProcessSchedule(Schedule schedule, IContext db) { var jobSchedules = db.JobSchedules.Where(x => x.ScheduleId == schedule.Id); jobSchedules.ForEach(js => { js.Schedule = schedule; var nextRunDateTime = schedule.CalculateNextRun(js.LastRunDateTime); if (nextRunDateTime <= DateTime.Now) { db.Jobs .AsNoTracking() .Include(r => r.JobSteps) .Where(x => x.Id == js.JobId) .ForEach(j => { js.Job = j; m_jobEngine.Add(j, js); }); } }); }
public void monthly() { var dayOftheMonth = 10; var hour = 10; var minute = 0; var second = 0; var startDate = new DateTime(2015, 02, 26, hour, minute, second); var sut = new Schedule(); sut.Type = FrequencyType.Monthly; sut.Interval = dayOftheMonth; sut.SubdayType = SubIntervalType.SpecificTime; sut.RecurrenceFactor = 5; sut.StartDate = startDate.Date; sut.StartTime = startDate.TimeOfDay; sut.EndDate = DateTime.MaxValue.Date; sut.EndTime = DateTime.MaxValue.TimeOfDay; var dtn = DateTime.Now; var tmw = dtn.AddMonths(5); var lrd = new DateTime(dtn.Year, dtn.Month, dtn.Day, hour, minute, second); var exp = new DateTime(tmw.Year, tmw.Month, dayOftheMonth, hour, minute, second); var result = sut.CalculateNextRun(lrd); Assert.Equal(exp, result); }
public void monthlyR() { var startDate = new DateTime(2015, 02, 26, 10, 0, 0); var sut = new Schedule(); sut.Type = FrequencyType.MonthlyRelative; sut.Interval = 10; sut.SubdayType = SubIntervalType.SpecificTime; sut.RecurrenceFactor = 5; sut.StartDate = startDate.Date; sut.StartTime = startDate.TimeOfDay; sut.EndDate = DateTime.MaxValue.Date; sut.EndTime = DateTime.MaxValue.TimeOfDay; var lastRunDate = DateTime.Now; var nextRunDate = sut.CalculateNextRun(lastRunDate); }