public IJobDetail BuildJobDetail(ScheduledJobSetting scheduledJobSetting) { return(GetJobBuilder() .WithIdentity($"{scheduledJobSetting.Name} Job") .WithDescription($"{scheduledJobSetting.Name} Job") .Build()); }
public async Task AddScheduledJob(IScheduler scheduler, ScheduledJobSetting scheduledJobSetting, CancellationToken cancellationToken = default) { IJobDetail jobDetail = BuildJobDetail(scheduledJobSetting); ITrigger trigger = BuildTrigger(scheduledJobSetting); await scheduler.ScheduleJob(jobDetail, trigger, cancellationToken); }
public ITrigger BuildTrigger(ScheduledJobSetting scheduledJobSetting) { string cronSchedule = GetCronExpression(scheduledJobSetting); return(TriggerBuilder.Create() .WithIdentity($"{scheduledJobSetting.Name} Trigger") .WithCronSchedule(cronSchedule) .WithDescription($"{scheduledJobSetting.Name} Trigger") .Build()); }
public void MissingCronExpressionShouldApplyDefaultCronExpression() { ScheduledJobSetting scheduledJobSetting = new ScheduledJobSetting(); var configurator = new DeleteExpiredTokensSchedulerConfigurator(); var expectedResult = SchedulerConfiguratorBase <DeleteExpiredTokensScheduledJob> .DefaultCronExpression; var actualResult = configurator.GetCronExpression(scheduledJobSetting); Assert.AreEqual(expectedResult, actualResult); }
public string GetCronExpression(ScheduledJobSetting scheduledJobSetting) { bool isCronExpressionValid = scheduledJobSetting?.CronExpression != null && CronExpression.IsValidExpression(scheduledJobSetting.CronExpression); if (isCronExpressionValid) { return(scheduledJobSetting.CronExpression); } _logger.Warn($"Invalid cron expression provided for scheduled job: {scheduledJobSetting.Name}"); return(DefaultCronExpression); }
public void ValidCronExpressionShouldApplyProvidedCronExpression() { string validCronSchedule = "0 0/20 * 1/1 * ? *"; ScheduledJobSetting scheduledJobSetting = new ScheduledJobSetting() { CronExpression = validCronSchedule }; var configurator = new DeleteExpiredTokensSchedulerConfigurator(); var expectedResult = validCronSchedule; var actualResult = configurator.GetCronExpression(scheduledJobSetting); Assert.AreEqual(expectedResult, actualResult); }
public async Task AddSchedulerJobShouldCallScheduleJobOnScheduler() { IScheduler scheduler = A.Fake <IScheduler>(); CancellationToken cancellationToken = default(CancellationToken); string validCronSchedule = "0 0/20 * 1/1 * ? *"; ScheduledJobSetting scheduledJobSetting = new ScheduledJobSetting() { CronExpression = validCronSchedule }; var configurator = new DeleteExpiredTokensSchedulerConfigurator(); IJobDetail jobDetail = configurator.BuildJobDetail(scheduledJobSetting); ITrigger trigger = configurator.BuildTrigger(scheduledJobSetting); await configurator.AddScheduledJob(scheduler, scheduledJobSetting, cancellationToken); A.CallTo( () => scheduler.ScheduleJob(jobDetail, trigger, cancellationToken)).MustHaveHappened(); }