public void TestChange_JobParameter_Add() { DoWithData((session, provider) => { // берем дату проверки var checkDate = DateTime.Now; // засыпаем на 2 секунды, чтобы детектить изменения Thread.Sleep(TimeSpan.FromSeconds(2)); // у Job1 добавляем новый параметр var job1 = session.Query <SchJob>().Single(i => i.Code == "TST_JOB1"); var job1Param2 = new SchJobParam { Job = job1, Name = "TST_JOB1_PARAM2", Value = "Some value" }; session.Save(job1Param2); job1.Job_SchJobParam_List.Add(job1Param2); session.Flush(); // поехали JobKey[] deletedJobs; IDictionary <IJobDetail, Quartz.Collection.ISet <ITrigger> > changedJobs; provider.GetChangedJobs(TstSchedulerName, checkDate, out deletedJobs, out changedJobs); // проверяем deletedJobs.Should().HaveCount(0); changedJobs.Should().HaveCount(1); changedJobs.Keys.Single().Key.Name.ShouldBeEquivalentTo(job1.Code); changedJobs.Keys.Single().JobDataMap.Should().ContainKey(job1Param2.Name); changedJobs.Keys.Single().JobDataMap[job1Param2.Name].ShouldBeEquivalentTo(job1Param2.Value); changedJobs.Values.Single().Should().HaveCount(1); changedJobs.Values.Single().Single().Key.Name.ShouldBeEquivalentTo("TST_JOB1_TR1"); }); }
/// <summary> /// Сценарий: /// Job1 - нормальный /// Job2 - имеет один триггер с датой старта больше текущей /// Job3 - имеет один триггер с датой окончания меньше текущей /// Job4 - имеет один заблокированный триггер /// Job5 - имеет два триггера: один заблокирован, один нормальный /// </summary> /// <param name="session"></param> private static void PopulateTestData(ISession session) { var scheduler = new SchScheduler { Code = TstSchedulerName }; session.Save(scheduler); var jobType = new SchJobType { Code = "TST Job Type", ClassName = string.Format("{0}, MLC.Wms.Scheduler.Tests", typeof(FakeJob).FullName), Scheduler = scheduler }; session.Save(jobType); var job1 = new SchJob { JobType = jobType, Code = "TST_JOB1", Scheduler = scheduler }; session.Save(job1); var job1Param1 = new SchJobParam { Name = "TST_JOB1_PARAM1", Job = job1, Value = "TST VALUE" }; session.Save(job1Param1); job1.Job_SchJobParam_List.Add(job1Param1); var job1Trigger1 = new SchCronTrigger { Code = "TST_JOB1_TR1", CronExpression = SampleCronExpression, MisfireInstruction = 1, StartTimeUtc = DateTime.UtcNow.AddDays(-1), Job = job1, Scheduler = scheduler }; session.Save(job1Trigger1); job1.Job_SchTrigger_List.Add(job1Trigger1); // job 2 var job2 = new SchJob { JobType = jobType, Code = "TST_JOB2", Scheduler = scheduler }; session.Save(job2); var job2Trigger1 = new SchCronTrigger { Code = "TST_JOB2_TR1", CronExpression = SampleCronExpression, MisfireInstruction = 1, StartTimeUtc = DateTime.UtcNow.AddDays(1), Job = job2, Scheduler = scheduler }; session.Save(job2Trigger1); job2.Job_SchTrigger_List.Add(job2Trigger1); // job 3 var job3 = new SchJob { JobType = jobType, Code = "TST_JOB3", Scheduler = scheduler }; session.Save(job3); var job3Trigger1 = new SchCronTrigger { Code = "TST_JOB3_TR1", CronExpression = SampleCronExpression, MisfireInstruction = 1, StartTimeUtc = DateTime.UtcNow.AddDays(-2), EndTimeUtc = DateTime.UtcNow.AddDays(-1), Job = job3, Scheduler = scheduler }; session.Save(job3Trigger1); job3.Job_SchTrigger_List.Add(job3Trigger1); // job 4 var job4 = new SchJob { JobType = jobType, Code = "TST_JOB4", Scheduler = scheduler }; session.Save(job4); var job4Trigger1 = new SchCronTrigger { Code = "TST_JOB4_TR1", CronExpression = SampleCronExpression, MisfireInstruction = 1, StartTimeUtc = DateTime.UtcNow.AddDays(-2), EndTimeUtc = DateTime.UtcNow.AddDays(+1), Disabled = true, Job = job4, Scheduler = scheduler }; session.Save(job4Trigger1); job4.Job_SchTrigger_List.Add(job4Trigger1); // job 5 var job5 = new SchJob { JobType = jobType, Code = "TST_JOB5", Scheduler = scheduler }; session.Save(job5); var job5Trigger1 = new SchCronTrigger { Code = "TST_JOB5_TR1", CronExpression = SampleCronExpression, MisfireInstruction = 1, StartTimeUtc = DateTime.UtcNow.AddDays(-2), EndTimeUtc = DateTime.UtcNow.AddDays(+1), Disabled = true, Job = job5, Scheduler = scheduler }; session.Save(job5Trigger1); job5.Job_SchTrigger_List.Add(job5Trigger1); var job5Trigger2 = new SchCronTrigger { Code = "TST_JOB5_TR2", CronExpression = SampleCronExpression, MisfireInstruction = 1, StartTimeUtc = DateTime.UtcNow.AddDays(-2), EndTimeUtc = DateTime.UtcNow.AddDays(+1), Job = job5, Scheduler = scheduler }; session.Save(job5Trigger2); job5.Job_SchTrigger_List.Add(job5Trigger2); }