public async Task TestTriggerStates() { IOperableTrigger trigger = new SimpleTriggerImpl("trigger1", "triggerGroup1", fJobDetail.Name, fJobDetail.Group, DateTimeOffset.Now.AddSeconds(100), DateTimeOffset.Now.AddSeconds(200), 2, TimeSpan.FromSeconds(2)); trigger.ComputeFirstFireTimeUtc(null); Assert.AreEqual(TriggerState.None, await fJobStore.GetTriggerState(trigger.Key)); await fJobStore.StoreTrigger(trigger, false); Assert.AreEqual(TriggerState.Normal, await fJobStore.GetTriggerState(trigger.Key)); await fJobStore.PauseTrigger(trigger.Key); Assert.AreEqual(TriggerState.Paused, await fJobStore.GetTriggerState(trigger.Key)); await fJobStore.ResumeTrigger(trigger.Key); Assert.AreEqual(TriggerState.Normal, await fJobStore.GetTriggerState(trigger.Key)); trigger = (await fJobStore.AcquireNextTriggers(trigger.GetNextFireTimeUtc().Value.AddSeconds(10), 1, TimeSpan.FromMilliseconds(1))).First(); Assert.IsNotNull(trigger); await fJobStore.ReleaseAcquiredTrigger(trigger); trigger = (await fJobStore.AcquireNextTriggers(trigger.GetNextFireTimeUtc().Value.AddSeconds(10), 1, TimeSpan.FromMilliseconds(1))).First(); Assert.IsNotNull(trigger); Assert.AreEqual(0, (await fJobStore.AcquireNextTriggers(trigger.GetNextFireTimeUtc().Value.AddSeconds(10), 1, TimeSpan.FromMilliseconds(1))).Count); }
public void TestAcquireNextTrigger() { DateTimeOffset d = DateBuilder.EvenMinuteDateAfterNow(); IOperableTrigger trigger1 = new SimpleTriggerImpl("trigger1", "triggerGroup1", fJobDetail.Name, fJobDetail.Group, d.AddSeconds(200), d.AddSeconds(200), 2, TimeSpan.FromSeconds(2)); IOperableTrigger trigger2 = new SimpleTriggerImpl("trigger2", "triggerGroup1", fJobDetail.Name, fJobDetail.Group, d.AddSeconds(50), d.AddSeconds(200), 2, TimeSpan.FromSeconds(2)); IOperableTrigger trigger3 = new SimpleTriggerImpl("trigger1", "triggerGroup2", fJobDetail.Name, fJobDetail.Group, d.AddSeconds(100), d.AddSeconds(200), 2, TimeSpan.FromSeconds(2)); trigger1.ComputeFirstFireTimeUtc(null); trigger2.ComputeFirstFireTimeUtc(null); trigger3.ComputeFirstFireTimeUtc(null); fJobStore.StoreTrigger(trigger1, false); fJobStore.StoreTrigger(trigger2, false); fJobStore.StoreTrigger(trigger3, false); DateTimeOffset firstFireTime = trigger1.GetNextFireTimeUtc().Value; Assert.AreEqual(0, fJobStore.AcquireNextTriggers(d.AddMilliseconds(10), 1, TimeSpan.Zero).Count); Assert.AreEqual(trigger2, fJobStore.AcquireNextTriggers(firstFireTime.AddSeconds(10), 1, TimeSpan.Zero)[0]); Assert.AreEqual(trigger3, fJobStore.AcquireNextTriggers(firstFireTime.AddSeconds(10), 1, TimeSpan.Zero)[0]); Assert.AreEqual(trigger1, fJobStore.AcquireNextTriggers(firstFireTime.AddSeconds(10), 1, TimeSpan.Zero)[0]); Assert.AreEqual(0, fJobStore.AcquireNextTriggers(firstFireTime.AddSeconds(10), 1, TimeSpan.Zero).Count); // release trigger3 fJobStore.ReleaseAcquiredTrigger(trigger3); Assert.AreEqual(trigger3, fJobStore.AcquireNextTriggers(firstFireTime.AddSeconds(10), 1, TimeSpan.FromMilliseconds(1))[0]); }
public void TestRemoveCalendarWhenTriggersPresent() { // QRTZNET-29 IOperableTrigger trigger = new SimpleTriggerImpl("trigger1", "triggerGroup1", fJobDetail.Name, fJobDetail.Group, DateTimeOffset.Now.AddSeconds(100), DateTimeOffset.Now.AddSeconds(200), 2, TimeSpan.FromSeconds(2)); trigger.ComputeFirstFireTimeUtc(null); ICalendar cal = new MonthlyCalendar(); fJobStore.StoreTrigger(trigger, false); fJobStore.StoreCalendar("cal", cal, false, true); fJobStore.RemoveCalendar("cal"); }
public void TestAcquireNextTrigger() { DateTimeOffset d = DateTimeOffset.UtcNow; IOperableTrigger trigger1 = new SimpleTriggerImpl("trigger1", "triggerGroup1", fJobDetail.Name, fJobDetail.Group, d.AddSeconds(200), d.AddSeconds(200), 2, TimeSpan.FromSeconds(2)); IOperableTrigger trigger2 = new SimpleTriggerImpl("trigger2", "triggerGroup1", fJobDetail.Name, fJobDetail.Group, d.AddSeconds(-100), d.AddSeconds(20), 2, TimeSpan.FromSeconds(2)); IOperableTrigger trigger3 = new SimpleTriggerImpl("trigger1", "triggerGroup2", fJobDetail.Name, fJobDetail.Group, d.AddSeconds(100), d.AddSeconds(200), 2, TimeSpan.FromSeconds(2)); trigger1.ComputeFirstFireTimeUtc(null); trigger2.ComputeFirstFireTimeUtc(null); trigger3.ComputeFirstFireTimeUtc(null); fJobStore.StoreTrigger(trigger1, false); fJobStore.StoreTrigger(trigger2, false); fJobStore.StoreTrigger(trigger3, false); Assert.AreEqual(0, fJobStore.AcquireNextTriggers(d.AddMilliseconds(10), 1, TimeSpan.FromMilliseconds(1)).Count); Assert.AreEqual( trigger2, fJobStore.AcquireNextTriggers(trigger1.GetNextFireTimeUtc().Value.AddSeconds(10), 1, TimeSpan.FromMilliseconds(1))[0]); Assert.AreEqual( trigger3, fJobStore.AcquireNextTriggers(trigger1.GetNextFireTimeUtc().Value.AddSeconds(10), 1, TimeSpan.FromMilliseconds(1))[0]); Assert.AreEqual( trigger1, fJobStore.AcquireNextTriggers(trigger1.GetNextFireTimeUtc().Value.AddSeconds(10), 1, TimeSpan.FromMilliseconds(1))[0]); Assert.AreEqual(0, fJobStore.AcquireNextTriggers(trigger1.GetNextFireTimeUtc().Value.AddSeconds(10), 1, TimeSpan.FromMilliseconds(1)).Count); // because of trigger2 Assert.AreEqual(1, fSignaler.fMisfireCount); // release trigger3 fJobStore.ReleaseAcquiredTrigger(trigger3); Assert.AreEqual( trigger3, fJobStore.AcquireNextTriggers(trigger1.GetNextFireTimeUtc().Value.AddSeconds(10), 1, TimeSpan.FromMilliseconds(1))[0]); }
public void TestGetFireTimeAfter_WithCalendar() { DailyCalendar dailyCalendar = new DailyCalendar("1:20", "14:50"); SimpleTriggerImpl simpleTrigger = new SimpleTriggerImpl(); simpleTrigger.RepeatInterval = TimeSpan.FromMilliseconds(10); simpleTrigger.RepeatCount = 1; DateTimeOffset neverFireTime = DateBuilder.EvenMinuteDateBefore(dailyCalendar.GetTimeRangeStartingTimeUtc(DateTime.Now)); simpleTrigger.StartTimeUtc = neverFireTime; simpleTrigger.ComputeFirstFireTimeUtc(dailyCalendar); DateTimeOffset?fireTimeAfter = simpleTrigger.GetNextFireTimeUtc(); Assert.IsNull(fireTimeAfter); }
public void TestAcquireNextTriggerBatch() { DateTimeOffset d = DateBuilder.EvenMinuteDateAfterNow(); IOperableTrigger early = new SimpleTriggerImpl("early", "triggerGroup1", fJobDetail.Name, fJobDetail.Group, d, d.AddMilliseconds(5), 2, TimeSpan.FromSeconds(2)); IOperableTrigger trigger1 = new SimpleTriggerImpl("trigger1", "triggerGroup1", fJobDetail.Name, fJobDetail.Group, d.AddMilliseconds(200000), d.AddMilliseconds(200005), 2, TimeSpan.FromSeconds(2)); IOperableTrigger trigger2 = new SimpleTriggerImpl("trigger2", "triggerGroup1", fJobDetail.Name, fJobDetail.Group, d.AddMilliseconds(200100), d.AddMilliseconds(200105), 2, TimeSpan.FromSeconds(2)); IOperableTrigger trigger3 = new SimpleTriggerImpl("trigger3", "triggerGroup1", fJobDetail.Name, fJobDetail.Group, d.AddMilliseconds(200200), d.AddMilliseconds(200205), 2, TimeSpan.FromSeconds(2)); IOperableTrigger trigger4 = new SimpleTriggerImpl("trigger4", "triggerGroup1", fJobDetail.Name, fJobDetail.Group, d.AddMilliseconds(200300), d.AddMilliseconds(200305), 2, TimeSpan.FromSeconds(2)); IOperableTrigger trigger10 = new SimpleTriggerImpl("trigger10", "triggerGroup2", fJobDetail.Name, fJobDetail.Group, d.AddMilliseconds(500000), d.AddMilliseconds(700000), 2, TimeSpan.FromSeconds(2)); early.ComputeFirstFireTimeUtc(null); trigger1.ComputeFirstFireTimeUtc(null); trigger2.ComputeFirstFireTimeUtc(null); trigger3.ComputeFirstFireTimeUtc(null); trigger4.ComputeFirstFireTimeUtc(null); trigger10.ComputeFirstFireTimeUtc(null); fJobStore.StoreTrigger(early, false); fJobStore.StoreTrigger(trigger1, false); fJobStore.StoreTrigger(trigger2, false); fJobStore.StoreTrigger(trigger3, false); fJobStore.StoreTrigger(trigger4, false); fJobStore.StoreTrigger(trigger10, false); DateTimeOffset firstFireTime = trigger1.GetNextFireTimeUtc().Value; IList <IOperableTrigger> acquiredTriggers = fJobStore.AcquireNextTriggers(firstFireTime.AddSeconds(10), 4, TimeSpan.FromSeconds(1)); Assert.AreEqual(4, acquiredTriggers.Count); Assert.AreEqual(early.Key, acquiredTriggers[0].Key); Assert.AreEqual(trigger1.Key, acquiredTriggers[1].Key); Assert.AreEqual(trigger2.Key, acquiredTriggers[2].Key); Assert.AreEqual(trigger3.Key, acquiredTriggers[3].Key); fJobStore.ReleaseAcquiredTrigger(early); fJobStore.ReleaseAcquiredTrigger(trigger1); fJobStore.ReleaseAcquiredTrigger(trigger2); fJobStore.ReleaseAcquiredTrigger(trigger3); acquiredTriggers = this.fJobStore.AcquireNextTriggers(firstFireTime.AddSeconds(10), 5, TimeSpan.FromMilliseconds(1000)); Assert.AreEqual(5, acquiredTriggers.Count); Assert.AreEqual(early.Key, acquiredTriggers[0].Key); Assert.AreEqual(trigger1.Key, acquiredTriggers[1].Key); Assert.AreEqual(trigger2.Key, acquiredTriggers[2].Key); Assert.AreEqual(trigger3.Key, acquiredTriggers[3].Key); Assert.AreEqual(trigger4.Key, acquiredTriggers[4].Key); fJobStore.ReleaseAcquiredTrigger(early); fJobStore.ReleaseAcquiredTrigger(trigger1); fJobStore.ReleaseAcquiredTrigger(trigger2); fJobStore.ReleaseAcquiredTrigger(trigger3); fJobStore.ReleaseAcquiredTrigger(trigger4); acquiredTriggers = fJobStore.AcquireNextTriggers(firstFireTime.AddSeconds(10), 6, TimeSpan.FromSeconds(1)); Assert.AreEqual(5, acquiredTriggers.Count); Assert.AreEqual(early.Key, acquiredTriggers[0].Key); Assert.AreEqual(trigger1.Key, acquiredTriggers[1].Key); Assert.AreEqual(trigger2.Key, acquiredTriggers[2].Key); Assert.AreEqual(trigger3.Key, acquiredTriggers[3].Key); Assert.AreEqual(trigger4.Key, acquiredTriggers[4].Key); fJobStore.ReleaseAcquiredTrigger(early); fJobStore.ReleaseAcquiredTrigger(trigger1); fJobStore.ReleaseAcquiredTrigger(trigger2); fJobStore.ReleaseAcquiredTrigger(trigger3); fJobStore.ReleaseAcquiredTrigger(trigger4); acquiredTriggers = fJobStore.AcquireNextTriggers(firstFireTime.AddMilliseconds(1), 5, TimeSpan.Zero); Assert.AreEqual(2, acquiredTriggers.Count); fJobStore.ReleaseAcquiredTrigger(early); fJobStore.ReleaseAcquiredTrigger(trigger1); acquiredTriggers = fJobStore.AcquireNextTriggers(firstFireTime.AddMilliseconds(250), 5, TimeSpan.FromMilliseconds(199)); Assert.AreEqual(5, acquiredTriggers.Count); fJobStore.ReleaseAcquiredTrigger(early); fJobStore.ReleaseAcquiredTrigger(trigger1); fJobStore.ReleaseAcquiredTrigger(trigger2); fJobStore.ReleaseAcquiredTrigger(trigger3); fJobStore.ReleaseAcquiredTrigger(trigger4); acquiredTriggers = fJobStore.AcquireNextTriggers(firstFireTime.AddMilliseconds(150), 5, TimeSpan.FromMilliseconds(50L)); Assert.AreEqual(4, acquiredTriggers.Count); fJobStore.ReleaseAcquiredTrigger(early); fJobStore.ReleaseAcquiredTrigger(trigger1); fJobStore.ReleaseAcquiredTrigger(trigger2); fJobStore.ReleaseAcquiredTrigger(trigger3); }
public void TestAcquireNextTriggerBatch() { DateTimeOffset d = DateTimeOffset.UtcNow.Subtract(TimeSpan.FromSeconds(1)); IOperableTrigger early = new SimpleTriggerImpl("early", "triggerGroup1", fJobDetail.Name, fJobDetail.Group, d, d.AddMilliseconds(5), 2, TimeSpan.FromSeconds(2)); IOperableTrigger trigger1 = new SimpleTriggerImpl("trigger1", "triggerGroup1", fJobDetail.Name, fJobDetail.Group, d.AddMilliseconds(200000), d.AddMilliseconds(200005), 2, TimeSpan.FromSeconds(2)); IOperableTrigger trigger2 = new SimpleTriggerImpl("trigger2", "triggerGroup1", fJobDetail.Name, fJobDetail.Group, d.AddMilliseconds(210000), d.AddMilliseconds(210005), 2, TimeSpan.FromSeconds(2)); IOperableTrigger trigger3 = new SimpleTriggerImpl("trigger3", "triggerGroup1", fJobDetail.Name, fJobDetail.Group, d.AddMilliseconds(220000), d.AddMilliseconds(220005), 2, TimeSpan.FromSeconds(2)); IOperableTrigger trigger4 = new SimpleTriggerImpl("trigger4", "triggerGroup1", fJobDetail.Name, fJobDetail.Group, d.AddMilliseconds(230000), d.AddMilliseconds(230005), 2, TimeSpan.FromSeconds(2)); IOperableTrigger trigger10 = new SimpleTriggerImpl("trigger10", "triggerGroup2", fJobDetail.Name, fJobDetail.Group, d.AddMilliseconds(500000), d.AddMilliseconds(700000), 2, TimeSpan.FromSeconds(2)); early.ComputeFirstFireTimeUtc(null); early.MisfireInstruction = MisfireInstruction.IgnoreMisfirePolicy; trigger1.ComputeFirstFireTimeUtc(null); trigger2.ComputeFirstFireTimeUtc(null); trigger3.ComputeFirstFireTimeUtc(null); trigger4.ComputeFirstFireTimeUtc(null); trigger10.ComputeFirstFireTimeUtc(null); fJobStore.StoreTrigger(early, false); fJobStore.StoreTrigger(trigger1, false); fJobStore.StoreTrigger(trigger2, false); fJobStore.StoreTrigger(trigger3, false); fJobStore.StoreTrigger(trigger4, false); fJobStore.StoreTrigger(trigger10, false); DateTimeOffset firstFireTime = trigger1.GetNextFireTimeUtc().Value; IList <IOperableTrigger> acquiredTriggers = fJobStore.AcquireNextTriggers(firstFireTime.AddSeconds(10), 4, TimeSpan.FromSeconds(1)); Assert.AreEqual(1, acquiredTriggers.Count); Assert.AreEqual(early.Key, acquiredTriggers[0].Key); fJobStore.ReleaseAcquiredTrigger(early); acquiredTriggers = fJobStore.AcquireNextTriggers(firstFireTime.AddSeconds(10), 4, TimeSpan.FromMilliseconds(205000)); Assert.AreEqual(2, acquiredTriggers.Count); Assert.AreEqual(early.Key, acquiredTriggers[0].Key); Assert.AreEqual(trigger1.Key, acquiredTriggers[1].Key); fJobStore.ReleaseAcquiredTrigger(early); fJobStore.ReleaseAcquiredTrigger(trigger1); fJobStore.RemoveTrigger(early.Key); acquiredTriggers = fJobStore.AcquireNextTriggers(firstFireTime.AddSeconds(10), 5, TimeSpan.FromMilliseconds(100000)); Assert.AreEqual(4, acquiredTriggers.Count); Assert.AreEqual(trigger1.Key, acquiredTriggers[0].Key); Assert.AreEqual(trigger2.Key, acquiredTriggers[1].Key); Assert.AreEqual(trigger3.Key, acquiredTriggers[2].Key); Assert.AreEqual(trigger4.Key, acquiredTriggers[3].Key); fJobStore.ReleaseAcquiredTrigger(trigger1); fJobStore.ReleaseAcquiredTrigger(trigger2); fJobStore.ReleaseAcquiredTrigger(trigger3); fJobStore.ReleaseAcquiredTrigger(trigger4); acquiredTriggers = fJobStore.AcquireNextTriggers(firstFireTime.AddSeconds(10), 6, TimeSpan.FromMilliseconds(100000)); Assert.AreEqual(4, acquiredTriggers.Count); Assert.AreEqual(trigger1.Key, acquiredTriggers[0].Key); Assert.AreEqual(trigger2.Key, acquiredTriggers[1].Key); Assert.AreEqual(trigger3.Key, acquiredTriggers[2].Key); Assert.AreEqual(trigger4.Key, acquiredTriggers[3].Key); fJobStore.ReleaseAcquiredTrigger(trigger1); fJobStore.ReleaseAcquiredTrigger(trigger2); fJobStore.ReleaseAcquiredTrigger(trigger3); fJobStore.ReleaseAcquiredTrigger(trigger4); acquiredTriggers = fJobStore.AcquireNextTriggers(firstFireTime.AddMilliseconds(1), 5, TimeSpan.Zero); Assert.AreEqual(1, acquiredTriggers.Count); Assert.AreEqual(trigger1.Key, acquiredTriggers[0].Key); fJobStore.ReleaseAcquiredTrigger(trigger1); acquiredTriggers = fJobStore.AcquireNextTriggers(firstFireTime.AddMilliseconds(250), 5, TimeSpan.FromMilliseconds(19999L)); Assert.AreEqual(2, acquiredTriggers.Count); Assert.AreEqual(trigger1.Key, acquiredTriggers[0].Key); Assert.AreEqual(trigger2.Key, acquiredTriggers[1].Key); fJobStore.ReleaseAcquiredTrigger(early); fJobStore.ReleaseAcquiredTrigger(trigger1); fJobStore.ReleaseAcquiredTrigger(trigger2); fJobStore.ReleaseAcquiredTrigger(trigger3); acquiredTriggers = fJobStore.AcquireNextTriggers(firstFireTime.AddMilliseconds(150), 5, TimeSpan.FromMilliseconds(5000L)); Assert.AreEqual(1, acquiredTriggers.Count); Assert.AreEqual(trigger1.Key, acquiredTriggers[0].Key); fJobStore.ReleaseAcquiredTrigger(trigger1); }
public void TestAcquireNextTriggerBatch() { IOperableTrigger trigger1 = new SimpleTriggerImpl("trigger1", "triggerGroup1", this.fJobDetail.Name, this.fJobDetail.Group, DateTimeOffset.UtcNow.AddSeconds(200), DateTimeOffset.UtcNow.AddSeconds(200), 2, TimeSpan.FromSeconds(2)); IOperableTrigger trigger2 = new SimpleTriggerImpl("trigger2", "triggerGroup1", this.fJobDetail.Name, this.fJobDetail.Group, DateTimeOffset.UtcNow.AddMilliseconds(200100), DateTimeOffset.UtcNow.AddMilliseconds(200100), 2, TimeSpan.FromSeconds(2)); IOperableTrigger trigger3 = new SimpleTriggerImpl("trigger3", "triggerGroup1", this.fJobDetail.Name, this.fJobDetail.Group, DateTimeOffset.UtcNow.AddMilliseconds(200200), DateTimeOffset.UtcNow.AddMilliseconds(200200), 2, TimeSpan.FromSeconds(2)); IOperableTrigger trigger4 = new SimpleTriggerImpl("trigger4", "triggerGroup1", this.fJobDetail.Name, this.fJobDetail.Group, DateTimeOffset.UtcNow.AddMilliseconds(200300), DateTimeOffset.UtcNow.AddMilliseconds(200300), 2, TimeSpan.FromSeconds(2)); IOperableTrigger trigger10 = new SimpleTriggerImpl("trigger10", "triggerGroup2", this.fJobDetail.Name, this.fJobDetail.Group, DateTimeOffset.UtcNow.AddSeconds(500), DateTimeOffset.UtcNow.AddSeconds(700), 2, TimeSpan.FromSeconds(2)); trigger1.ComputeFirstFireTimeUtc(null); trigger2.ComputeFirstFireTimeUtc(null); trigger3.ComputeFirstFireTimeUtc(null); trigger4.ComputeFirstFireTimeUtc(null); trigger10.ComputeFirstFireTimeUtc(null); this.fJobStore.StoreTrigger(trigger1, false); this.fJobStore.StoreTrigger(trigger2, false); this.fJobStore.StoreTrigger(trigger3, false); this.fJobStore.StoreTrigger(trigger4, false); this.fJobStore.StoreTrigger(trigger10, false); Assert.AreEqual(3, this.fJobStore.AcquireNextTriggers(trigger1.GetNextFireTimeUtc().Value.AddSeconds(10), 3, TimeSpan.FromSeconds(1)).Count); this.fJobStore.ReleaseAcquiredTrigger(trigger1); this.fJobStore.ReleaseAcquiredTrigger(trigger2); this.fJobStore.ReleaseAcquiredTrigger(trigger3); Assert.AreEqual(4, this.fJobStore.AcquireNextTriggers(trigger1.GetNextFireTimeUtc().Value.AddSeconds(10), 4, TimeSpan.FromSeconds(1)).Count); this.fJobStore.ReleaseAcquiredTrigger(trigger1); this.fJobStore.ReleaseAcquiredTrigger(trigger2); this.fJobStore.ReleaseAcquiredTrigger(trigger3); this.fJobStore.ReleaseAcquiredTrigger(trigger4); Assert.AreEqual(4, this.fJobStore.AcquireNextTriggers(trigger1.GetNextFireTimeUtc().Value.AddSeconds(10), 5, TimeSpan.FromSeconds(1)).Count); this.fJobStore.ReleaseAcquiredTrigger(trigger1); this.fJobStore.ReleaseAcquiredTrigger(trigger2); this.fJobStore.ReleaseAcquiredTrigger(trigger3); this.fJobStore.ReleaseAcquiredTrigger(trigger4); Assert.AreEqual(1, this.fJobStore.AcquireNextTriggers(trigger1.GetNextFireTimeUtc().Value.AddSeconds(0), 5, TimeSpan.Zero).Count); this.fJobStore.ReleaseAcquiredTrigger(trigger1); Assert.AreEqual(2, this.fJobStore.AcquireNextTriggers(trigger1.GetNextFireTimeUtc().Value.AddMilliseconds(150), 5, TimeSpan.Zero).Count); this.fJobStore.ReleaseAcquiredTrigger(trigger1); this.fJobStore.ReleaseAcquiredTrigger(trigger2); }