public CronSchedulerStreamTests() { _dateTimeRepository = new DateTimeRepositoryRx(_testScheduler); var breakTemplate = new CronTemplateBuilder() .WithMinutes(0, 15, 30) .WithHours(9, 14) .WithAllDaysOfMonth() .WithDaysOfWeek(1, 2, 3, 4, 5) .WithAllMonths() .Build(); var hourlyTemplate = new CronTemplateBuilder() .WithMinutes(0) .WithHours(11, 12, 13, 16, 17) .WithAllDaysOfMonth() .WithDaysOfWeek(1, 2, 3, 4, 5) .WithAllMonths() .Build(); _simpleStreamBase = new CronTimeStreamSimple(breakTemplate, DateTime.Now); _complexStreamBase = new CronTimeStreamComplex(DateTime.Now, breakTemplate, hourlyTemplate); _simpleScheduler = new Scheduler(_dateTimeRepository, _testScheduler, _simpleStreamBase, true); _complexScheduler = new Scheduler(_dateTimeRepository, _testScheduler, _complexStreamBase, true); }
private static IEnumerable <CronTemplate> CreateCronTemplates(DaysOfWeek daysOfWeek, string input) { var times = GetTimes(input); var days = CronTemplateBuilder.GetDaysListFromEnum(daysOfWeek); var cronTemplates = CreateCronTemplates(days, times); return(cronTemplates); }
public void BuildShouldWork() { var cronTemplate = new CronTemplateBuilder() .WithMinutes(0) .WithHours(4, 16) .WithDaysOfMonth(1, 10, 25) .WithAllMonths() .WithAllDaysOfWeek() .Build(); }
public void Test1000Runs() { var cronTemplate = new CronTemplateBuilder().WithEverything().EveryXSeconds(2).Build(); var simpleCronStream = new CronTimeStreamSimple(cronTemplate, _dateTimeRepository.Now()); var reactiveScheduler = new ReactiveScheduler(_dateTimeRepository, _testScheduler, simpleCronStream, true); Logger.LogAction = Console.WriteLine; int callCount = 0; reactiveScheduler.SchedulerObservable.Subscribe(_ => callCount++); _testScheduler.AdvanceBy(TimeSpan.FromSeconds(2000).Ticks); callCount.Should().Be(1000); }
public CronSchedulerStreamReactiveTests() { _dateTimeRepository = new DateTimeRepositoryRx(_testScheduler); var breakTemplate = new CronTemplateBuilder() .WithMinutes(0, 15, 30) .WithHours(9, 14) .WithAllDaysOfMonth() .WithDaysOfWeek(1, 2, 3, 4, 5) .WithAllMonths() .Build(); _simpleStreamBase = new CronTimeStreamSimple(breakTemplate, _dateTimeRepository.Now()); _reactiveScheduler = new ReactiveScheduler( _dateTimeRepository, _testScheduler, _simpleStreamBase); }
public void SimpleTest2() { var everySecond = new CronTemplateBuilder().WithEverything().EveryXSeconds(2).Build(); var stream = new CronTimeStreamSimple(everySecond, _dateTime); var streamCombination = new CronTimeStreamCombination(_dateTime, stream); foreach (var time in streamCombination.Take(200)) { PrintTime(time); } var results = streamCombination.Take(5).ToList(); results[0].Time.Second.Should().Be(2); results[1].Time.Second.Should().Be(4); results[2].Time.Second.Should().Be(6); results[3].Time.Second.Should().Be(8); results[4].Time.Second.Should().Be(10); }
public CronTimeAggregateGeneratorTests() { var breakTemplate = new CronTemplateBuilder() .WithMinutes(0, 15, 30) .WithHours(9, 14) .WithAllDaysOfMonth() .WithDaysOfWeek(1, 2, 3, 4, 5) .WithAllMonths() .Build(); var hourlyTemplate = new CronTemplateBuilder() .WithMinutes(0) .WithHours(11, 12, 13, 16, 17) .WithAllDaysOfMonth() .WithDaysOfWeek(1, 2, 3, 4, 5) .WithAllMonths() .Build(); _nextTimes = CronTimeGenerator .Generate(new DateTime(2016, 01, 01), breakTemplate, hourlyTemplate); }
public void TestIntsToDaysOfWeekConversion() { var weekdays = "12345"; var daysOfWeek = CronTemplateBuilder.GetDaysOfWeekEnumFromStringOfInts(weekdays); daysOfWeek.Should().Be(DaysOfWeek.MTWTF); var weekdays2 = "0123456"; var daysOfWeek2 = CronTemplateBuilder.GetDaysOfWeekEnumFromStringOfInts(weekdays2); daysOfWeek2.Should().Be(DaysOfWeek.Everyday); var weekdays3 = "14"; var daysOfWeek3 = CronTemplateBuilder.GetDaysOfWeekEnumFromStringOfInts(weekdays3); daysOfWeek3.Should().Be(DaysOfWeek.Monday | DaysOfWeek.Thursday); var weekdays4 = "141414"; var daysOfWeek4 = CronTemplateBuilder.GetDaysOfWeekEnumFromStringOfInts(weekdays4); daysOfWeek4.Should().Be(DaysOfWeek.Monday | DaysOfWeek.Thursday); }
public void DontDropUpcomingCronTimesWhenTwoCronTemplatesGenerateTheSameTime() { var every3Minutes = new CronTemplateBuilder().WithEverything().WithSeconds(0).EveryXMinutes(3).Build(); var every4Minutes = new CronTemplateBuilder().WithEverything().WithSeconds(0).EveryXMinutes(4).Build(); var nextTimes = CronTimeGenerator .Generate(DateTime.MinValue, every3Minutes, every4Minutes) .Take(100) .ToList(); foreach (var nextTime in nextTimes) { PrintTime(nextTime); } var expectedValues3 = Enumerable.Range(1, 20).Select(z => z * 3).Where(z => z < 60).ToList(); var expectedValues4 = Enumerable.Range(1, 20).Select(z => z * 4).Where(z => z < 60).ToList(); var expectedValues = new SortedSet <int>(expectedValues3.Union(expectedValues4)).Take(100).ToList(); for (int i = 0; i < expectedValues.Count; i++) { nextTimes[i].Time.Minute.Should().Be(expectedValues[i]); } }