Пример #1
0
        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);
        }
Пример #3
0
 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);
        }
Пример #6
0
        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);
        }
Пример #8
0
        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]);
            }
        }