public void JobExecutionCountRemaining_GetterAndSetter() { PeriodicTrigger trigger = new PeriodicTrigger(DateTime.UtcNow, null, null, 33); trigger.JobExecutionCountRemaining = 42; Assert.AreEqual(42, trigger.JobExecutionCountRemaining); }
public void MisfireAction_GetterAndSetter() { PeriodicTrigger trigger = new PeriodicTrigger(DateTime.UtcNow, null, null, null); trigger.MisfireAction = TriggerScheduleAction.ExecuteJob; Assert.AreEqual(TriggerScheduleAction.ExecuteJob, trigger.MisfireAction); }
public void ClonePerformsADeepCopy(bool useGenericClonable) { DateTime now = DateTime.UtcNow; PeriodicTrigger trigger = new PeriodicTrigger(now, DateTime.MaxValue, TimeSpan.MaxValue, 42); trigger.MisfireAction = TriggerScheduleAction.DeleteJob; trigger.MisfireThreshold = TimeSpan.MaxValue; trigger.Schedule(TriggerScheduleCondition.Latch, now, null); PeriodicTrigger clone = useGenericClonable ? (PeriodicTrigger) trigger.Clone() : (PeriodicTrigger) ((ICloneable) trigger).Clone(); Assert.AreNotSame(trigger, clone); Assert.AreEqual(trigger.StartTimeUtc, clone.StartTimeUtc); Assert.AreEqual(trigger.EndTimeUtc, clone.EndTimeUtc); Assert.AreEqual(trigger.Period, clone.Period); Assert.AreEqual(trigger.JobExecutionCountRemaining, clone.JobExecutionCountRemaining); Assert.AreEqual(trigger.MisfireAction, clone.MisfireAction); Assert.AreEqual(trigger.MisfireThreshold, clone.MisfireThreshold); Assert.AreEqual(trigger.IsFirstTime, clone.IsFirstTime); Assert.AreEqual(trigger.IsActive, clone.IsActive); Assert.AreEqual(trigger.NextFireTimeUtc, clone.NextFireTimeUtc); Assert.AreEqual(trigger.NextMisfireThreshold, clone.NextMisfireThreshold); }
public void IsFirstTime_GetterAndSetter() { PeriodicTrigger trigger = new PeriodicTrigger(DateTime.UtcNow, null, TimeSpan.MaxValue, null); trigger.IsFirstTime = false; Assert.IsFalse(trigger.IsFirstTime); }
public void MisfireThreshold_GetterAndSetter() { PeriodicTrigger trigger = new PeriodicTrigger(DateTime.UtcNow, null, null, null); trigger.MisfireThreshold = new TimeSpan(1, 0, 0); Assert.AreEqual(new TimeSpan(1, 0, 0), trigger.MisfireThreshold); }
public void Schedule(int startDay, int endDay, int periodDays, int jobExecutionCount, TriggerScheduleAction misfireAction, TriggerScheduleCondition condition, int timeBasisDay, bool isFirstTime, TriggerScheduleAction expectedAction, int expectedFireDay, int expectedJobExecutionCountRemaining, bool expectedIsActive, bool expectedIsFirstTime) { DateTime startTime = new DateTime(1970, 1, startDay); DateTime?endTime = endDay != 0 ? new DateTime(1970, 1, endDay) : (DateTime?)null; TimeSpan?period = periodDays != 0 ? new TimeSpan(periodDays, 0, 0, 0) : (TimeSpan?)null; int? jobExecutionCountArg = jobExecutionCount >= 0 ? jobExecutionCount : (int?)null; DateTime timeBasis = new DateTime(1970, 1, timeBasisDay); DateTime?expectedFireTime = expectedFireDay != 0 ? new DateTime(1970, 1, expectedFireDay, 0, 0, 0, DateTimeKind.Utc) : (DateTime?)null; int?expectedJobExecutionCountRemainingArg = expectedJobExecutionCountRemaining >= 0 ? expectedJobExecutionCountRemaining : (int?)null; PeriodicTrigger trigger = new PeriodicTrigger(startTime, endTime, period, jobExecutionCountArg); trigger.MisfireAction = misfireAction; trigger.MisfireThreshold = TimeSpan.Zero; trigger.IsFirstTime = expectedIsFirstTime; TriggerScheduleAction action = trigger.Schedule(condition, timeBasis, null); Assert.AreEqual(expectedAction, action); DateTimeAssert.AreEqualIncludingKind(expectedFireTime, trigger.NextFireTimeUtc); Assert.AreEqual(expectedJobExecutionCountRemainingArg, trigger.JobExecutionCountRemaining); Assert.AreEqual(expectedIsActive, trigger.IsActive); }
public void ClonePerformsADeepCopy(bool useGenericClonable) { DateTime now = DateTime.UtcNow; PeriodicTrigger trigger = new PeriodicTrigger(now, DateTime.MaxValue, TimeSpan.MaxValue, 42); trigger.MisfireAction = TriggerScheduleAction.DeleteJob; trigger.MisfireThreshold = TimeSpan.MaxValue; trigger.Schedule(TriggerScheduleCondition.Latch, now, null); PeriodicTrigger clone = useGenericClonable ? (PeriodicTrigger)trigger.Clone() : (PeriodicTrigger)((ICloneable)trigger).Clone(); Assert.AreNotSame(trigger, clone); Assert.AreEqual(trigger.StartTimeUtc, clone.StartTimeUtc); Assert.AreEqual(trigger.EndTimeUtc, clone.EndTimeUtc); Assert.AreEqual(trigger.Period, clone.Period); Assert.AreEqual(trigger.JobExecutionCountRemaining, clone.JobExecutionCountRemaining); Assert.AreEqual(trigger.MisfireAction, clone.MisfireAction); Assert.AreEqual(trigger.MisfireThreshold, clone.MisfireThreshold); Assert.AreEqual(trigger.IsFirstTime, clone.IsFirstTime); Assert.AreEqual(trigger.IsActive, clone.IsActive); Assert.AreEqual(trigger.NextFireTimeUtc, clone.NextFireTimeUtc); Assert.AreEqual(trigger.NextMisfireThreshold, clone.NextMisfireThreshold); }
public void EndTimeUtc_GetterAndSetter() { PeriodicTrigger trigger = new PeriodicTrigger(DateTime.MaxValue, null, null, null); trigger.EndTimeUtc = new DateTime(2000, 3, 4); DateTimeAssert.AreEqualIncludingKind(new DateTime(2000, 3, 4, 0, 0, 0, DateTimeKind.Utc), trigger.EndTimeUtc); }
public void Period_GetterAndSetter() { PeriodicTrigger trigger = new PeriodicTrigger(DateTime.UtcNow, null, TimeSpan.MaxValue, null); TimeSpan value = new TimeSpan(0, 1, 0); trigger.Period = value; Assert.AreEqual(value, trigger.Period); }
public void Trigger_GetterAndSetter() { JobSpec spec = new JobSpec("abc", "some job", "with this key", trigger); Trigger newTrigger = PeriodicTrigger.CreateDailyTrigger(DateTime.UtcNow); spec.Trigger = newTrigger; Assert.AreSame(newTrigger, spec.Trigger); }
public override void SetUp() { base.SetUp(); scheduler = Mocks.CreateMock <IScheduler>(); logger = Mocks.CreateMock <ILogger>(); jobSpec = new JobSpec("abc", "some job", "with.this.key", PeriodicTrigger.CreateDailyTrigger(DateTime.UtcNow)); jobData = new JobData(); Mocks.ReplayAll(); }
public override void SetUp() { base.SetUp(); dummyJobSpec = new JobSpec("job", "test", "dummy", PeriodicTrigger.CreateOneShotTrigger(DateTime.UtcNow)); dummyJobData = new JobData(); dummyJobData.State["key"] = "value"; jobStore = CreateJobStore(); jobStore.RegisterScheduler(SchedulerGuid, SchedulerName); }
public void CreateOneShotTrigger() { DateTime now = DateTime.UtcNow; PeriodicTrigger trigger = PeriodicTrigger.CreateOneShotTrigger(DateTime.UtcNow); Assert.AreEqual(now.Ticks, trigger.StartTimeUtc.Ticks); Assert.IsNull(trigger.Period); Assert.IsNull(trigger.EndTimeUtc); Assert.AreEqual(1, trigger.JobExecutionCountRemaining); Assert.IsTrue(trigger.IsFirstTime); }
public void ConstructorSetsProperties() { TimeSpan interval = new TimeSpan(0, 1, 30); PeriodicTrigger trigger = new PeriodicTrigger(new DateTime(2000, 3, 4), new DateTime(1999, 1, 2), interval, 33); DateTimeAssert.AreEqualIncludingKind(new DateTime(2000, 3, 4, 0, 0, 0, DateTimeKind.Utc), trigger.StartTimeUtc); Assert.AreEqual(interval, trigger.Period); Assert.AreEqual(PeriodicTrigger.DefaultMisfireAction, trigger.MisfireAction); Assert.AreEqual(null, trigger.MisfireThreshold); DateTimeAssert.AreEqualIncludingKind(new DateTime(1999, 1, 2, 0, 0, 0, DateTimeKind.Utc), trigger.EndTimeUtc); Assert.AreEqual(33, trigger.JobExecutionCountRemaining); Assert.IsTrue(trigger.IsFirstTime); }
public void SchedulePeriodicTriggerCorrectlyComputesNextCycle() { // Constructs a 3-day period trigger on an odd date. PeriodicTrigger trigger = new PeriodicTrigger(new DateTime(1970, 1, 5), null, new TimeSpan(3, 0, 0, 0), null); trigger.MisfireAction = TriggerScheduleAction.Skip; trigger.MisfireThreshold = TimeSpan.Zero; // Ensure returns next period if skipping with time basis on an even boundary. trigger.Schedule(TriggerScheduleCondition.Misfire, new DateTime(1970, 1, 8), null); DateTimeAssert.AreEqualIncludingKind(new DateTime(1970, 1, 11, 0, 0, 0, DateTimeKind.Utc), trigger.NextFireTimeUtc); // Ensure returns next period if skipping with time basis at 1/3 beyond even boundary. trigger.Schedule(TriggerScheduleCondition.Misfire, new DateTime(1970, 1, 9), null); DateTimeAssert.AreEqualIncludingKind(new DateTime(1970, 1, 11, 0, 0, 0, DateTimeKind.Utc), trigger.NextFireTimeUtc); // Ensure returns next period if skipping with time basis at 2/3 beyond even boundary. trigger.Schedule(TriggerScheduleCondition.Misfire, new DateTime(1970, 1, 10), null); DateTimeAssert.AreEqualIncludingKind(new DateTime(1970, 1, 11, 0, 0, 0, DateTimeKind.Utc), trigger.NextFireTimeUtc); }
public void UpdateJob_CanRenameJobsAndAlterOtherProperties() { Mocks.ReplayAll(); JobDetails originalJob = CreateRunningJob("originalJob"); JobSpec updatedJobSpec = new JobSpec("updatedJob", "This is updated.", "The new key", PeriodicTrigger.CreateOneShotTrigger(new DateTime(2000, 3, 4))); jobStore.UpdateJob("originalJob", updatedJobSpec); Assert.IsNull(jobStore.GetJobDetails("originalJob"), "The job should not be accessible under its original name."); // The job gets a new job spec, but all other properties should be preserved including // the job's execution history. JobDetails updatedJob = jobStore.GetJobDetails("updatedJob"); JobDetails expectedUpdatedJob = originalJob.Clone(); expectedUpdatedJob.JobSpec = updatedJobSpec; JobAssert.AreEqual(expectedUpdatedJob, updatedJob); }
public void ScheduleThrowsIfConditionIsUnrecognized() { PeriodicTrigger trigger = new PeriodicTrigger(new DateTime(1970, 1, 5), null, new TimeSpan(3, 0, 0, 0), null); trigger.Schedule((TriggerScheduleCondition)9999, DateTime.UtcNow, null); }
public void JobExecutionCountRemaining_ThrowsIfValueIsNegative() { PeriodicTrigger trigger = new PeriodicTrigger(DateTime.UtcNow, null, null, null); trigger.JobExecutionCountRemaining = -1; }
public void ScheduleThrowsIfConditionIsUnrecognized() { PeriodicTrigger trigger = new PeriodicTrigger(new DateTime(1970, 1, 5), null, new TimeSpan(3, 0, 0, 0), null); trigger.Schedule((TriggerScheduleCondition) 9999, DateTime.UtcNow, null); }
public void Period_ThrowsIfValueIsNegative() { PeriodicTrigger trigger = new PeriodicTrigger(DateTime.UtcNow, null, null, null); trigger.Period = TimeSpan.MinValue; }
public void Period_ThrowsIfValueIsZero() { PeriodicTrigger trigger = new PeriodicTrigger(DateTime.UtcNow, null, null, null); trigger.Period = TimeSpan.Zero; }
public void Schedule(int startDay, int endDay, int periodDays, int jobExecutionCount, TriggerScheduleAction misfireAction, TriggerScheduleCondition condition, int timeBasisDay, bool isFirstTime, TriggerScheduleAction expectedAction, int expectedFireDay, int expectedJobExecutionCountRemaining, bool expectedIsActive, bool expectedIsFirstTime) { DateTime startTime = new DateTime(1970, 1, startDay); DateTime? endTime = endDay != 0 ? new DateTime(1970, 1, endDay) : (DateTime?) null; TimeSpan? period = periodDays != 0 ? new TimeSpan(periodDays, 0, 0, 0) : (TimeSpan?) null; int? jobExecutionCountArg = jobExecutionCount >= 0 ? jobExecutionCount : (int?) null; DateTime timeBasis = new DateTime(1970, 1, timeBasisDay); DateTime? expectedFireTime = expectedFireDay != 0 ? new DateTime(1970, 1, expectedFireDay, 0, 0, 0, DateTimeKind.Utc) : (DateTime?) null; int? expectedJobExecutionCountRemainingArg = expectedJobExecutionCountRemaining >= 0 ? expectedJobExecutionCountRemaining : (int?) null; PeriodicTrigger trigger = new PeriodicTrigger(startTime, endTime, period, jobExecutionCountArg); trigger.MisfireAction = misfireAction; trigger.MisfireThreshold = TimeSpan.Zero; trigger.IsFirstTime = expectedIsFirstTime; TriggerScheduleAction action = trigger.Schedule(condition, timeBasis, null); Assert.AreEqual(expectedAction, action); DateTimeAssert.AreEqualIncludingKind(expectedFireTime, trigger.NextFireTimeUtc); Assert.AreEqual(expectedJobExecutionCountRemainingArg, trigger.JobExecutionCountRemaining); Assert.AreEqual(expectedIsActive, trigger.IsActive); }
protected JobDetails CreatePendingJob(string jobName, DateTime creationTime) { jobStore.CreateJob(new JobSpec(jobName, "", "key", PeriodicTrigger.CreateOneShotTrigger(creationTime)), creationTime, CreateJobConflictAction.Throw); return(jobStore.GetJobDetails(jobName)); }