public void TestMethodInvokingJobDetailFactoryObjectWithListenerNames() { TestMethodInvokingTask task = new TestMethodInvokingTask(); MethodInvokingJobDetailFactoryObject mijdfb = new MethodInvokingJobDetailFactoryObject(); String[] names = new String[] { "test1", "test2" }; mijdfb.Name = ("myJob1"); mijdfb.Group = (SchedulerConstants.DefaultGroup); mijdfb.TargetObject = (task); mijdfb.TargetMethod = ("doSomething"); mijdfb.JobListenerNames = (names); mijdfb.AfterPropertiesSet(); JobDetail jobDetail = (JobDetail)mijdfb.GetObject(); ArrayList result = new ArrayList(jobDetail.JobListenerNames); Assert.AreEqual(names, result); }
private void MethodInvokingConcurrency(bool concurrent) { // Test the concurrency flag. // Method invoking job with two triggers. // If the concurrent flag is false, the triggers are NOT allowed // to interfere with each other. TestMethodInvokingTask task1 = new TestMethodInvokingTask(); MethodInvokingJobDetailFactoryObject mijdfb = new MethodInvokingJobDetailFactoryObject(); // set the concurrency flag! mijdfb.Concurrent = concurrent; mijdfb.ObjectName = "myJob1"; mijdfb.TargetObject = task1; mijdfb.TargetMethod = "doWait"; mijdfb.AfterPropertiesSet(); IJobDetail jobDetail1 = (IJobDetail)mijdfb.GetObject(); SimpleTriggerObject trigger0 = new SimpleTriggerObject(); trigger0.ObjectName = "myTrigger1"; trigger0.JobDetail = jobDetail1; trigger0.StartDelay = TimeSpan.FromMilliseconds(0); trigger0.RepeatInterval = TimeSpan.FromMilliseconds(1); trigger0.RepeatCount = 1; trigger0.AfterPropertiesSet(); SimpleTriggerObject trigger1 = new SimpleTriggerObject(); trigger1.ObjectName = "myTrigger1"; trigger1.JobDetail = jobDetail1; trigger1.StartDelay = TimeSpan.FromMilliseconds(1000L); trigger1.RepeatInterval = TimeSpan.FromMilliseconds(1); trigger1.RepeatCount = 1; trigger1.AfterPropertiesSet(); SchedulerFactoryObject schedulerFactoryObject = new SchedulerFactoryObject(); schedulerFactoryObject.JobDetails = new IJobDetail[] { jobDetail1 }; schedulerFactoryObject.Triggers = new ITrigger[] { trigger1, trigger0 }; schedulerFactoryObject.AfterPropertiesSet(); // ok scheduler is set up... let's wait for like 4 seconds try { Thread.Sleep(4000); } catch (ThreadInterruptedException) { // fall through } if (concurrent) { Assert.AreEqual(2, task1.counter); task1.Stop(); // we're done, both jobs have ran, let's call it a day return; } else { Assert.AreEqual(1, task1.counter); task1.Stop(); // we need to check whether or not the test succeed with non-concurrent jobs } try { Thread.Sleep(4000); } catch (ThreadInterruptedException) { // fall through } task1.Stop(); Assert.AreEqual(2, task1.counter); // Although we're destroying the scheduler, it does seem to keep things in memory: // When executing both tests (concurrent and non-concurrent), the second test always // fails. schedulerFactoryObject.Dispose(); }
private async Task DoTestSchedulerFactoryObjectWithExistingJobsAndRaceCondition(bool overwrite) { TestObject tb = new TestObject("tb", 99); JobDetailObject jobDetail0 = new JobDetailObject(); jobDetail0.JobType = typeof(IJob); jobDetail0.ObjectName = "myJob0"; IDictionary jobData = new Hashtable(); jobData.Add("testObject", tb); jobDetail0.JobDataAsMap = jobData; jobDetail0.AfterPropertiesSet(); Assert.AreEqual(tb, jobDetail0.JobDataMap.Get("testObject")); CronTriggerObject trigger0 = new CronTriggerObject(); trigger0.ObjectName = "myTrigger0"; trigger0.JobDetail = jobDetail0; trigger0.CronExpressionString = "0/1 * * * * ?"; trigger0.AfterPropertiesSet(); TestMethodInvokingTask task1 = new TestMethodInvokingTask(); MethodInvokingJobDetailFactoryObject mijdfb = new MethodInvokingJobDetailFactoryObject(); mijdfb.ObjectName = "myJob1"; mijdfb.TargetObject = task1; mijdfb.TargetMethod = "doSomething"; mijdfb.AfterPropertiesSet(); IJobDetail jobDetail1 = (IJobDetail)mijdfb.GetObject(); SimpleTriggerObject trigger1 = new SimpleTriggerObject(); trigger1.ObjectName = "myTrigger1"; trigger1.JobDetail = jobDetail1; trigger1.StartDelay = TimeSpan.FromMilliseconds(0); trigger1.RepeatInterval = TimeSpan.FromMilliseconds(20); trigger1.AfterPropertiesSet(); IScheduler scheduler = A.Fake <IScheduler>(); A.CallTo(() => scheduler.Context).Returns(new SchedulerContext()); A.CallTo(() => scheduler.GetJobDetail(A <JobKey> ._, A <CancellationToken> ._)).Returns(Task.FromResult <IJobDetail>(null)); A.CallTo(() => scheduler.GetTrigger(new TriggerKey("myTrigger0", SchedulerConstants.DefaultGroup), A <CancellationToken> ._)).Returns(Task.FromResult <ITrigger>(null)); A.CallTo(() => scheduler.GetTrigger(new TriggerKey("myTrigger1", SchedulerConstants.DefaultGroup), A <CancellationToken> ._)).Returns(Task.FromResult <ITrigger>(new SimpleTriggerImpl())); if (overwrite) { await scheduler.AddJob(jobDetail1, true); A.CallTo(() => scheduler.RescheduleJob(new TriggerKey("myTrigger1", SchedulerConstants.DefaultGroup), trigger1, A <CancellationToken> ._)).Returns(DateTime.UtcNow); } A.CallTo(() => scheduler.ScheduleJob(trigger0, A <CancellationToken> ._)).Throws(new ObjectAlreadyExistsException("")); if (overwrite) { A.CallTo(() => scheduler.RescheduleJob(new TriggerKey("myTrigger0", SchedulerConstants.DefaultGroup), trigger0, A <CancellationToken> ._)).Returns(DateTime.UtcNow); } await scheduler.Start(); await scheduler.Shutdown(false); SchedulerFactoryObject schedulerFactoryObject = new TestSchedulerFactoryObject(scheduler); schedulerFactoryObject.JobFactory = null; IDictionary schedulerContext = new Hashtable(); schedulerContext.Add("otherTestObject", tb); schedulerFactoryObject.SchedulerContextAsMap = schedulerContext; schedulerFactoryObject.Triggers = new ITrigger[] { trigger0, trigger1 }; if (overwrite) { schedulerFactoryObject.OverwriteExistingJobs = true; } try { schedulerFactoryObject.AfterPropertiesSet(); await schedulerFactoryObject.Start(); } finally { schedulerFactoryObject.Dispose(); } A.CallTo(() => scheduler.AddJob(jobDetail0, true, true, A <CancellationToken> ._)).MustHaveHappened(); }
private void DoTestSchedulerFactoryObject(bool explicitJobDetail, bool prototypeJob) { TestObject tb = new TestObject("tb", 99); JobDetailObject jobDetail0 = new JobDetailObject(); jobDetail0.JobType = typeof(IJob); jobDetail0.ObjectName = ("myJob0"); IDictionary jobData = new Hashtable(); jobData.Add("testObject", tb); jobDetail0.JobDataAsMap = (jobData); jobDetail0.AfterPropertiesSet(); Assert.AreEqual(tb, jobDetail0.JobDataMap.Get("testObject")); CronTriggerObject trigger0 = new CronTriggerObject(); trigger0.ObjectName = ("myTrigger0"); trigger0.JobDetail = (jobDetail0); trigger0.CronExpressionString = ("0/1 * * * * ?"); trigger0.AfterPropertiesSet(); TestMethodInvokingTask task1 = new TestMethodInvokingTask(); MethodInvokingJobDetailFactoryObject mijdfb = new MethodInvokingJobDetailFactoryObject(); mijdfb.ObjectName = ("myJob1"); if (prototypeJob) { StaticListableObjectFactory objectFactory = new StaticListableObjectFactory(); objectFactory.AddObject("task", task1); mijdfb.TargetObjectName = ("task"); mijdfb.ObjectFactory = objectFactory; } else { mijdfb.TargetObject = (task1); } mijdfb.TargetMethod = ("doSomething"); mijdfb.AfterPropertiesSet(); IJobDetail jobDetail1 = (IJobDetail)mijdfb.GetObject(); SimpleTriggerObject trigger1 = new SimpleTriggerObject(); trigger1.ObjectName = ("myTrigger1"); trigger1.JobDetail = (jobDetail1); trigger1.StartDelay = TimeSpan.FromMilliseconds(0); trigger1.RepeatInterval = TimeSpan.FromMilliseconds(20); trigger1.AfterPropertiesSet(); IScheduler scheduler = MockRepository.GenerateMock <IScheduler>(); scheduler.Stub(x => x.Context).Return(new SchedulerContext()); SchedulerFactoryObject schedulerFactoryObject = new TestSchedulerFactoryObject(scheduler); schedulerFactoryObject.JobFactory = (null); IDictionary schedulerContext = new Hashtable(); schedulerContext.Add("otherTestObject", tb); schedulerFactoryObject.SchedulerContextAsMap = (schedulerContext); if (explicitJobDetail) { schedulerFactoryObject.JobDetails = (new IJobDetail[] { jobDetail0 }); } schedulerFactoryObject.Triggers = (new ITrigger[] { trigger0, trigger1 }); try { schedulerFactoryObject.AfterPropertiesSet(); schedulerFactoryObject.Start(); } finally { schedulerFactoryObject.Dispose(); } scheduler.AssertWasCalled(x => x.ScheduleJob(trigger0)); scheduler.AssertWasCalled(x => x.ScheduleJob(trigger1)); scheduler.AssertWasCalled(x => x.AddJob(jobDetail0, true)); scheduler.AssertWasCalled(x => x.AddJob(jobDetail1, true)); scheduler.AssertWasCalled(x => x.Start()); scheduler.AssertWasCalled(x => x.Shutdown(false)); }
public void TestSchedulerFactoryObjectWithPlainQuartzObjects() { IJobFactory jobFactory = new AdaptableJobFactory(); TestObject tb = new TestObject("tb", 99); JobDetailImpl jobDetail0 = new JobDetailImpl(); jobDetail0.JobType = typeof(IJob); jobDetail0.Name = ("myJob0"); jobDetail0.Group = (SchedulerConstants.DefaultGroup); jobDetail0.JobDataMap.Add("testObject", tb); Assert.AreEqual(tb, jobDetail0.JobDataMap.Get("testObject")); CronTriggerImpl trigger0 = new CronTriggerImpl(); trigger0.Name = ("myTrigger0"); trigger0.Group = SchedulerConstants.DefaultGroup; trigger0.JobName = "myJob0"; trigger0.JobGroup = SchedulerConstants.DefaultGroup; trigger0.StartTimeUtc = (DateTime.UtcNow); trigger0.CronExpressionString = ("0/1 * * * * ?"); TestMethodInvokingTask task1 = new TestMethodInvokingTask(); MethodInvokingJobDetailFactoryObject mijdfb = new MethodInvokingJobDetailFactoryObject(); mijdfb.Name = ("myJob1"); mijdfb.Group = (SchedulerConstants.DefaultGroup); mijdfb.TargetObject = (task1); mijdfb.TargetMethod = ("doSomething"); mijdfb.AfterPropertiesSet(); IJobDetail jobDetail1 = (IJobDetail)mijdfb.GetObject(); SimpleTriggerImpl trigger1 = new SimpleTriggerImpl(); trigger1.Name = "myTrigger1"; trigger1.Group = SchedulerConstants.DefaultGroup; trigger1.JobName = "myJob1"; trigger1.JobGroup = SchedulerConstants.DefaultGroup; trigger1.StartTimeUtc = (DateTime.UtcNow); trigger1.RepeatCount = (SimpleTriggerImpl.RepeatIndefinitely); trigger1.RepeatInterval = TimeSpan.FromMilliseconds(20); IScheduler scheduler = MockRepository.GenerateMock <IScheduler>(); SchedulerFactoryObject schedulerFactoryObject = new TestSchedulerFactoryObject(scheduler); schedulerFactoryObject.JobFactory = (jobFactory); schedulerFactoryObject.JobDetails = (new IJobDetail[] { jobDetail0, jobDetail1 }); schedulerFactoryObject.Triggers = (new ITrigger[] { trigger0, trigger1 }); try { schedulerFactoryObject.AfterPropertiesSet(); schedulerFactoryObject.Start(); } finally { schedulerFactoryObject.Dispose(); } scheduler.AssertWasCalled(x => x.JobFactory = jobFactory); scheduler.AssertWasCalled(x => x.AddJob(jobDetail0, true)); scheduler.AssertWasCalled(x => x.AddJob(jobDetail1, true)); scheduler.AssertWasCalled(x => x.GetJobDetail(new JobKey("myJob0", SchedulerConstants.DefaultGroup))); scheduler.AssertWasCalled(x => x.GetJobDetail(new JobKey("myJob1", SchedulerConstants.DefaultGroup))); scheduler.AssertWasCalled(x => x.GetTrigger(new TriggerKey("myTrigger0", SchedulerConstants.DefaultGroup))); scheduler.AssertWasCalled(x => x.GetTrigger(new TriggerKey("myTrigger1", SchedulerConstants.DefaultGroup))); }
private void DoTestSchedulerFactoryObjectWithExistingJobsAndRaceCondition(bool overwrite) { TestObject tb = new TestObject("tb", 99); JobDetailObject jobDetail0 = new JobDetailObject(); jobDetail0.JobType = typeof(IJob); jobDetail0.ObjectName = ("myJob0"); IDictionary jobData = new Hashtable(); jobData.Add("testObject", tb); jobDetail0.JobDataAsMap = (jobData); jobDetail0.AfterPropertiesSet(); Assert.AreEqual(tb, jobDetail0.JobDataMap.Get("testObject")); CronTriggerObject trigger0 = new CronTriggerObject(); trigger0.ObjectName = ("myTrigger0"); trigger0.JobDetail = (jobDetail0); trigger0.CronExpressionString = ("0/1 * * * * ?"); trigger0.AfterPropertiesSet(); TestMethodInvokingTask task1 = new TestMethodInvokingTask(); MethodInvokingJobDetailFactoryObject mijdfb = new MethodInvokingJobDetailFactoryObject(); mijdfb.ObjectName = ("myJob1"); mijdfb.TargetObject = (task1); mijdfb.TargetMethod = ("doSomething"); mijdfb.AfterPropertiesSet(); IJobDetail jobDetail1 = (IJobDetail)mijdfb.GetObject(); SimpleTriggerObject trigger1 = new SimpleTriggerObject(); trigger1.ObjectName = ("myTrigger1"); trigger1.JobDetail = (jobDetail1); trigger1.StartDelay = TimeSpan.FromMilliseconds(0); trigger1.RepeatInterval = TimeSpan.FromMilliseconds(20); trigger1.AfterPropertiesSet(); IScheduler scheduler = MockRepository.GenerateMock <IScheduler>(); scheduler.Stub(x => x.Context).Return(new SchedulerContext()); scheduler.Stub(x => x.GetTrigger(new TriggerKey("myTrigger1", SchedulerConstants.DefaultGroup))).Return(new SimpleTriggerImpl()); if (overwrite) { scheduler.AddJob(jobDetail1, true); scheduler.Stub(x => x.RescheduleJob(new TriggerKey("myTrigger1", SchedulerConstants.DefaultGroup), trigger1)).Return(DateTime.UtcNow); } scheduler.Stub(x => x.ScheduleJob(trigger0)).Throw(new ObjectAlreadyExistsException("")); if (overwrite) { scheduler.Stub(x => x.RescheduleJob(new TriggerKey("myTrigger0", SchedulerConstants.DefaultGroup), trigger0)).Return(DateTime.UtcNow); } scheduler.Start(); scheduler.Shutdown(false); SchedulerFactoryObject schedulerFactoryObject = new TestSchedulerFactoryObject(scheduler); schedulerFactoryObject.JobFactory = (null); IDictionary schedulerContext = new Hashtable(); schedulerContext.Add("otherTestObject", tb); schedulerFactoryObject.SchedulerContextAsMap = (schedulerContext); schedulerFactoryObject.Triggers = (new ITrigger[] { trigger0, trigger1 }); if (overwrite) { schedulerFactoryObject.OverwriteExistingJobs = (true); } try { schedulerFactoryObject.AfterPropertiesSet(); schedulerFactoryObject.Start(); } finally { schedulerFactoryObject.Dispose(); } scheduler.AssertWasCalled(x => x.AddJob(jobDetail0, true)); }
/*public void TestMethodInvocationWithConcurrency() { methodInvokingConcurrency(true); }*/ // We can't test both since Quartz somehow seems to keep things in memory // enable both and one of them will fail (order doesn't matter). /*public void TestMethodInvocationWithoutConcurrency() { methodInvokingConcurrency(false); }*/ private void methodInvokingConcurrency(bool concurrent) { // Test the concurrency flag. // Method invoking job with two triggers. // If the concurrent flag is false, the triggers are NOT allowed // to interfere with each other. TestMethodInvokingTask task1 = new TestMethodInvokingTask(); MethodInvokingJobDetailFactoryObject mijdfb = new MethodInvokingJobDetailFactoryObject(); // set the concurrency flag! mijdfb.Concurrent = (concurrent); mijdfb.ObjectName = ("myJob1"); mijdfb.TargetObject = (task1); mijdfb.TargetMethod = ("doWait"); mijdfb.AfterPropertiesSet(); JobDetail jobDetail1 = (JobDetail) mijdfb.GetObject(); SimpleTriggerObject trigger0 = new SimpleTriggerObject(); trigger0.ObjectName = ("myTrigger1"); trigger0.JobDetail = (jobDetail1); trigger0.StartDelay = TimeSpan.FromMilliseconds(0); trigger0.RepeatInterval = TimeSpan.FromMilliseconds(1); trigger0.RepeatCount = (1); trigger0.AfterPropertiesSet(); SimpleTriggerObject trigger1 = new SimpleTriggerObject(); trigger1.ObjectName = ("myTrigger1"); trigger1.JobDetail = (jobDetail1); trigger1.StartDelay = TimeSpan.FromMilliseconds(1000L); trigger1.RepeatInterval = TimeSpan.FromMilliseconds(1); trigger1.RepeatCount = (1); trigger1.AfterPropertiesSet(); SchedulerFactoryObject schedulerFactoryObject = new SchedulerFactoryObject(); schedulerFactoryObject.JobDetails = (new JobDetail[] {jobDetail1}); schedulerFactoryObject.Triggers = (new Trigger[] {trigger1, trigger0}); schedulerFactoryObject.AfterPropertiesSet(); // ok scheduler is set up... let's wait for like 4 seconds try { Thread.Sleep(4000); } catch (ThreadInterruptedException) { // fall through } if (concurrent) { Assert.AreEqual(2, task1.counter); task1.Stop(); // we're done, both jobs have ran, let's call it a day return; } else { Assert.AreEqual(1, task1.counter); task1.Stop(); // we need to check whether or not the test succeed with non-concurrent jobs } try { Thread.Sleep(4000); } catch (ThreadInterruptedException) { // fall through } task1.Stop(); Assert.AreEqual(2, task1.counter); // Although we're destroying the scheduler, it does seem to keep things in memory: // When executing both tests (concurrent and non-concurrent), the second test always // fails. schedulerFactoryObject.Dispose(); }
public void TestSchedulerFactoryObjectWithPlainQuartzObjects() { IJobFactory jobFactory = new AdaptableJobFactory(); TestObject tb = new TestObject("tb", 99); JobDetail jobDetail0 = new JobDetail(); jobDetail0.JobType = typeof (IJob); jobDetail0.Name = ("myJob0"); jobDetail0.Group = (SchedulerConstants.DefaultGroup); jobDetail0.JobDataMap.Add("testObject", tb); Assert.AreEqual(tb, jobDetail0.JobDataMap.Get("testObject")); CronTrigger trigger0 = new CronTrigger(); trigger0.Name = ("myTrigger0"); trigger0.Group = SchedulerConstants.DefaultGroup; trigger0.JobName = "myJob0"; trigger0.JobGroup = SchedulerConstants.DefaultGroup; trigger0.StartTimeUtc = (DateTime.UtcNow); trigger0.CronExpressionString = ("0/1 * * * * ?"); TestMethodInvokingTask task1 = new TestMethodInvokingTask(); MethodInvokingJobDetailFactoryObject mijdfb = new MethodInvokingJobDetailFactoryObject(); mijdfb.Name = ("myJob1"); mijdfb.Group = (SchedulerConstants.DefaultGroup); mijdfb.TargetObject = (task1); mijdfb.TargetMethod = ("doSomething"); mijdfb.AfterPropertiesSet(); JobDetail jobDetail1 = (JobDetail) mijdfb.GetObject(); SimpleTrigger trigger1 = new SimpleTrigger(); trigger1.Name = "myTrigger1"; trigger1.Group = SchedulerConstants.DefaultGroup; trigger1.JobName = "myJob1"; trigger1.JobGroup = SchedulerConstants.DefaultGroup; trigger1.StartTimeUtc = (DateTime.UtcNow); trigger1.RepeatCount = (SimpleTrigger.RepeatIndefinitely); trigger1.RepeatInterval = TimeSpan.FromMilliseconds(20); IScheduler scheduler = (IScheduler) mockery.CreateMock(typeof (IScheduler)); Expect.Call(scheduler.JobFactory = (jobFactory)); Expect.Call(scheduler.GetJobDetail("myJob0", SchedulerConstants.DefaultGroup)).Return(null); Expect.Call(scheduler.GetJobDetail("myJob1", SchedulerConstants.DefaultGroup)).Return(null); Expect.Call(scheduler.GetTrigger("myTrigger0", SchedulerConstants.DefaultGroup)).Return(null); Expect.Call(scheduler.GetTrigger("myTrigger1", SchedulerConstants.DefaultGroup)).Return(null); scheduler.AddJob(jobDetail0, true); LastCall.IgnoreArguments(); scheduler.AddJob(jobDetail1, true); LastCall.IgnoreArguments(); Expect.Call(scheduler.ScheduleJob(trigger0)).Return(DateTime.UtcNow); Expect.Call(scheduler.ScheduleJob(trigger1)).Return(DateTime.UtcNow); scheduler.Start(); scheduler.Shutdown(false); mockery.ReplayAll(); SchedulerFactoryObject schedulerFactoryObject = new TestSchedulerFactoryObject(scheduler); schedulerFactoryObject.JobFactory = (jobFactory); schedulerFactoryObject.JobDetails = (new JobDetail[] {jobDetail0, jobDetail1}); schedulerFactoryObject.Triggers = (new Trigger[] {trigger0, trigger1}); try { schedulerFactoryObject.AfterPropertiesSet(); schedulerFactoryObject.Start(); } finally { schedulerFactoryObject.Dispose(); } mockery.VerifyAll(); }
private void DoTestSchedulerFactoryObject(bool explicitJobDetail, bool prototypeJob) { TestObject tb = new TestObject("tb", 99); JobDetailObject jobDetail0 = new JobDetailObject(); jobDetail0.JobType = typeof (IJob); jobDetail0.ObjectName = ("myJob0"); IDictionary jobData = new Hashtable(); jobData.Add("testObject", tb); jobDetail0.JobDataAsMap = (jobData); jobDetail0.AfterPropertiesSet(); Assert.AreEqual(tb, jobDetail0.JobDataMap.Get("testObject")); CronTriggerObject trigger0 = new CronTriggerObject(); trigger0.ObjectName = ("myTrigger0"); trigger0.JobDetail = (jobDetail0); trigger0.CronExpressionString = ("0/1 * * * * ?"); trigger0.AfterPropertiesSet(); TestMethodInvokingTask task1 = new TestMethodInvokingTask(); MethodInvokingJobDetailFactoryObject mijdfb = new MethodInvokingJobDetailFactoryObject(); mijdfb.ObjectName = ("myJob1"); if (prototypeJob) { StaticListableObjectFactory objectFactory = new StaticListableObjectFactory(); objectFactory.AddObject("task", task1); mijdfb.TargetObjectName = ("task"); mijdfb.ObjectFactory = objectFactory; } else { mijdfb.TargetObject = (task1); } mijdfb.TargetMethod = ("doSomething"); mijdfb.AfterPropertiesSet(); JobDetail jobDetail1 = (JobDetail) mijdfb.GetObject(); SimpleTriggerObject trigger1 = new SimpleTriggerObject(); trigger1.ObjectName = ("myTrigger1"); trigger1.JobDetail = (jobDetail1); trigger1.StartDelay = TimeSpan.FromMilliseconds(0); trigger1.RepeatInterval = TimeSpan.FromMilliseconds(20); trigger1.AfterPropertiesSet(); IScheduler scheduler = MockRepository.GenerateMock<IScheduler>(); scheduler.Stub(x => x.Context).Return(new SchedulerContext()); SchedulerFactoryObject schedulerFactoryObject = new TestSchedulerFactoryObject(scheduler); schedulerFactoryObject.JobFactory = (null); IDictionary schedulerContext = new Hashtable(); schedulerContext.Add("otherTestObject", tb); schedulerFactoryObject.SchedulerContextAsMap = (schedulerContext); if (explicitJobDetail) { schedulerFactoryObject.JobDetails = (new JobDetail[] {jobDetail0}); } schedulerFactoryObject.Triggers = (new Trigger[] {trigger0, trigger1}); try { schedulerFactoryObject.AfterPropertiesSet(); schedulerFactoryObject.Start(); } finally { schedulerFactoryObject.Dispose(); } scheduler.AssertWasCalled(x => x.ScheduleJob(trigger0)); scheduler.AssertWasCalled(x => x.ScheduleJob(trigger1)); scheduler.AssertWasCalled(x => x.AddJob(jobDetail0, true)); scheduler.AssertWasCalled(x => x.AddJob(jobDetail1, true)); scheduler.AssertWasCalled(x => x.Start()); scheduler.AssertWasCalled(x => x.Shutdown(false)); }
public void TestSchedulerFactoryObjectWithPlainQuartzObjects() { IJobFactory jobFactory = new AdaptableJobFactory(); TestObject tb = new TestObject("tb", 99); JobDetail jobDetail0 = new JobDetail(); jobDetail0.JobType = typeof (IJob); jobDetail0.Name = ("myJob0"); jobDetail0.Group = (SchedulerConstants.DefaultGroup); jobDetail0.JobDataMap.Add("testObject", tb); Assert.AreEqual(tb, jobDetail0.JobDataMap.Get("testObject")); CronTrigger trigger0 = new CronTrigger(); trigger0.Name = ("myTrigger0"); trigger0.Group = SchedulerConstants.DefaultGroup; trigger0.JobName = "myJob0"; trigger0.JobGroup = SchedulerConstants.DefaultGroup; trigger0.StartTimeUtc = (DateTime.UtcNow); trigger0.CronExpressionString = ("0/1 * * * * ?"); TestMethodInvokingTask task1 = new TestMethodInvokingTask(); MethodInvokingJobDetailFactoryObject mijdfb = new MethodInvokingJobDetailFactoryObject(); mijdfb.Name = ("myJob1"); mijdfb.Group = (SchedulerConstants.DefaultGroup); mijdfb.TargetObject = (task1); mijdfb.TargetMethod = ("doSomething"); mijdfb.AfterPropertiesSet(); JobDetail jobDetail1 = (JobDetail) mijdfb.GetObject(); SimpleTrigger trigger1 = new SimpleTrigger(); trigger1.Name = "myTrigger1"; trigger1.Group = SchedulerConstants.DefaultGroup; trigger1.JobName = "myJob1"; trigger1.JobGroup = SchedulerConstants.DefaultGroup; trigger1.StartTimeUtc = (DateTime.UtcNow); trigger1.RepeatCount = (SimpleTrigger.RepeatIndefinitely); trigger1.RepeatInterval = TimeSpan.FromMilliseconds(20); IScheduler scheduler = MockRepository.GenerateMock<IScheduler>(); SchedulerFactoryObject schedulerFactoryObject = new TestSchedulerFactoryObject(scheduler); schedulerFactoryObject.JobFactory = (jobFactory); schedulerFactoryObject.JobDetails = (new JobDetail[] {jobDetail0, jobDetail1}); schedulerFactoryObject.Triggers = (new Trigger[] {trigger0, trigger1}); try { schedulerFactoryObject.AfterPropertiesSet(); schedulerFactoryObject.Start(); } finally { schedulerFactoryObject.Dispose(); } scheduler.AssertWasCalled(x => x.JobFactory = jobFactory); scheduler.AssertWasCalled(x => x.AddJob(jobDetail0, true)); scheduler.AssertWasCalled(x => x.AddJob(jobDetail1, true)); #if QUARTZ_2_0 scheduler.AssertWasCalled(x => x.GetJobDetail(new JobKey("myJob0", SchedulerConstants.DefaultGroup))); scheduler.AssertWasCalled(x => x.GetJobDetail(new JobKey("myJob1", SchedulerConstants.DefaultGroup))); scheduler.AssertWasCalled(x => x.GetTrigger(new TriggerKey("myTrigger0", SchedulerConstants.DefaultGroup))); scheduler.AssertWasCalled(x => x.GetTrigger(new TriggerKey("myTrigger1", SchedulerConstants.DefaultGroup))); #else scheduler.AssertWasCalled(x => x.GetJobDetail("myJob0", SchedulerConstants.DefaultGroup)); scheduler.AssertWasCalled(x => x.GetJobDetail("myJob1", SchedulerConstants.DefaultGroup)); scheduler.AssertWasCalled(x => x.GetTrigger("myTrigger0", SchedulerConstants.DefaultGroup)); scheduler.AssertWasCalled(x => x.GetTrigger("myTrigger1", SchedulerConstants.DefaultGroup)); #endif }
public void TestMethodInvokingJobDetailFactoryObjectWithListenerNames() { TestMethodInvokingTask task = new TestMethodInvokingTask(); MethodInvokingJobDetailFactoryObject mijdfb = new MethodInvokingJobDetailFactoryObject(); String[] names = new String[] {"test1", "test2"}; mijdfb.Name = ("myJob1"); mijdfb.Group = (SchedulerConstants.DefaultGroup); mijdfb.TargetObject = (task); mijdfb.TargetMethod = ("doSomething"); mijdfb.JobListenerNames = (names); mijdfb.AfterPropertiesSet(); JobDetail jobDetail = (JobDetail) mijdfb.GetObject(); ArrayList result = new ArrayList(jobDetail.JobListenerNames); Assert.AreEqual(names, result); }
public void TestSchedulerFactoryObjectWithPlainQuartzObjects() { IJobFactory jobFactory = new AdaptableJobFactory(); TestObject tb = new TestObject("tb", 99); JobDetail jobDetail0 = new JobDetail(); jobDetail0.JobType = typeof(IJob); jobDetail0.Name = ("myJob0"); jobDetail0.Group = (SchedulerConstants.DefaultGroup); jobDetail0.JobDataMap.Add("testObject", tb); Assert.AreEqual(tb, jobDetail0.JobDataMap.Get("testObject")); CronTrigger trigger0 = new CronTrigger(); trigger0.Name = ("myTrigger0"); trigger0.Group = SchedulerConstants.DefaultGroup; trigger0.JobName = "myJob0"; trigger0.JobGroup = SchedulerConstants.DefaultGroup; trigger0.StartTimeUtc = (DateTime.UtcNow); trigger0.CronExpressionString = ("0/1 * * * * ?"); TestMethodInvokingTask task1 = new TestMethodInvokingTask(); MethodInvokingJobDetailFactoryObject mijdfb = new MethodInvokingJobDetailFactoryObject(); mijdfb.Name = ("myJob1"); mijdfb.Group = (SchedulerConstants.DefaultGroup); mijdfb.TargetObject = (task1); mijdfb.TargetMethod = ("doSomething"); mijdfb.AfterPropertiesSet(); JobDetail jobDetail1 = (JobDetail)mijdfb.GetObject(); SimpleTrigger trigger1 = new SimpleTrigger(); trigger1.Name = "myTrigger1"; trigger1.Group = SchedulerConstants.DefaultGroup; trigger1.JobName = "myJob1"; trigger1.JobGroup = SchedulerConstants.DefaultGroup; trigger1.StartTimeUtc = (DateTime.UtcNow); trigger1.RepeatCount = (SimpleTrigger.RepeatIndefinitely); trigger1.RepeatInterval = TimeSpan.FromMilliseconds(20); IScheduler scheduler = (IScheduler)mockery.CreateMock(typeof(IScheduler)); Expect.Call(scheduler.JobFactory = (jobFactory)); Expect.Call(scheduler.GetJobDetail("myJob0", SchedulerConstants.DefaultGroup)).Return(null); Expect.Call(scheduler.GetJobDetail("myJob1", SchedulerConstants.DefaultGroup)).Return(null); Expect.Call(scheduler.GetTrigger("myTrigger0", SchedulerConstants.DefaultGroup)).Return(null); Expect.Call(scheduler.GetTrigger("myTrigger1", SchedulerConstants.DefaultGroup)).Return(null); scheduler.AddJob(jobDetail0, true); LastCall.IgnoreArguments(); scheduler.AddJob(jobDetail1, true); LastCall.IgnoreArguments(); Expect.Call(scheduler.ScheduleJob(trigger0)).Return(DateTime.UtcNow); Expect.Call(scheduler.ScheduleJob(trigger1)).Return(DateTime.UtcNow); scheduler.Start(); scheduler.Shutdown(false); mockery.ReplayAll(); SchedulerFactoryObject schedulerFactoryObject = new TestSchedulerFactoryObject(scheduler); schedulerFactoryObject.JobFactory = (jobFactory); schedulerFactoryObject.JobDetails = (new JobDetail[] { jobDetail0, jobDetail1 }); schedulerFactoryObject.Triggers = (new Trigger[] { trigger0, trigger1 }); try { schedulerFactoryObject.AfterPropertiesSet(); schedulerFactoryObject.Start(); } finally { schedulerFactoryObject.Dispose(); } mockery.VerifyAll(); }
private void DoTestSchedulerFactoryObjectWithExistingJobs(bool overwrite) { TestObject tb = new TestObject("tb", 99); JobDetailObject jobDetail0 = new JobDetailObject(); jobDetail0.JobType = typeof(IJob); jobDetail0.ObjectName = ("myJob0"); IDictionary jobData = new Hashtable(); jobData.Add("testObject", tb); jobDetail0.JobDataAsMap = (jobData); jobDetail0.AfterPropertiesSet(); Assert.AreEqual(tb, jobDetail0.JobDataMap.Get("testObject")); CronTriggerObject trigger0 = new CronTriggerObject(); trigger0.ObjectName = ("myTrigger0"); trigger0.JobDetail = (jobDetail0); trigger0.CronExpressionString = ("0/1 * * * * ?"); trigger0.AfterPropertiesSet(); TestMethodInvokingTask task1 = new TestMethodInvokingTask(); MethodInvokingJobDetailFactoryObject mijdfb = new MethodInvokingJobDetailFactoryObject(); mijdfb.ObjectName = ("myJob1"); mijdfb.TargetObject = (task1); mijdfb.TargetMethod = ("doSomething"); mijdfb.AfterPropertiesSet(); JobDetail jobDetail1 = (JobDetail)mijdfb.GetObject(); SimpleTriggerObject trigger1 = new SimpleTriggerObject(); trigger1.ObjectName = ("myTrigger1"); trigger1.JobDetail = (jobDetail1); trigger1.StartDelay = TimeSpan.FromMilliseconds(0); trigger1.RepeatInterval = TimeSpan.FromMilliseconds(20); trigger1.AfterPropertiesSet(); IScheduler scheduler = (IScheduler)mockery.CreateMock(typeof(IScheduler)); Expect.Call(scheduler.Context).Return(new SchedulerContext()); Expect.Call(scheduler.GetTrigger("myTrigger0", SchedulerConstants.DefaultGroup)).Return(null); Expect.Call(scheduler.GetTrigger("myTrigger1", SchedulerConstants.DefaultGroup)).Return(new SimpleTrigger()); if (overwrite) { scheduler.AddJob(jobDetail1, true); LastCall.IgnoreArguments(); Expect.Call(scheduler.RescheduleJob("myTrigger1", SchedulerConstants.DefaultGroup, trigger1)).Return( DateTime.UtcNow); } else { Expect.Call(scheduler.GetJobDetail("myJob0", SchedulerConstants.DefaultGroup)).Return(null); } scheduler.AddJob(jobDetail0, true); LastCall.IgnoreArguments(); Expect.Call(scheduler.ScheduleJob(trigger0)).Return(DateTime.UtcNow); scheduler.Start(); scheduler.Shutdown(false); mockery.ReplayAll(); SchedulerFactoryObject schedulerFactoryObject = new TestSchedulerFactoryObject(scheduler); schedulerFactoryObject.JobFactory = (null); IDictionary schedulerContext = new Hashtable(); schedulerContext.Add("otherTestObject", tb); schedulerFactoryObject.SchedulerContextAsMap = (schedulerContext); schedulerFactoryObject.Triggers = (new Trigger[] { trigger0, trigger1 }); if (overwrite) { schedulerFactoryObject.OverwriteExistingJobs = (true); } try { schedulerFactoryObject.AfterPropertiesSet(); schedulerFactoryObject.Start(); } finally { schedulerFactoryObject.Dispose(); } mockery.VerifyAll(); }
public async Task TestSchedulerFactoryObjectWithPlainQuartzObjects() { IJobFactory jobFactory = new AdaptableJobFactory(); TestObject tb = new TestObject("tb", 99); JobDetailImpl jobDetail0 = new JobDetailImpl(); jobDetail0.JobType = typeof(IJob); jobDetail0.Name = "myJob0"; jobDetail0.Group = SchedulerConstants.DefaultGroup; jobDetail0.JobDataMap.Add("testObject", tb); Assert.AreEqual(tb, jobDetail0.JobDataMap.Get("testObject")); CronTriggerImpl trigger0 = new CronTriggerImpl(); trigger0.Name = "myTrigger0"; trigger0.Group = SchedulerConstants.DefaultGroup; trigger0.JobName = "myJob0"; trigger0.JobGroup = SchedulerConstants.DefaultGroup; trigger0.StartTimeUtc = DateTime.UtcNow; trigger0.CronExpressionString = "0/1 * * * * ?"; TestMethodInvokingTask task1 = new TestMethodInvokingTask(); MethodInvokingJobDetailFactoryObject mijdfb = new MethodInvokingJobDetailFactoryObject(); mijdfb.Name = "myJob1"; mijdfb.Group = SchedulerConstants.DefaultGroup; mijdfb.TargetObject = task1; mijdfb.TargetMethod = "doSomething"; mijdfb.AfterPropertiesSet(); IJobDetail jobDetail1 = (IJobDetail)mijdfb.GetObject(); SimpleTriggerImpl trigger1 = new SimpleTriggerImpl(); trigger1.Name = "myTrigger1"; trigger1.Group = SchedulerConstants.DefaultGroup; trigger1.JobName = "myJob1"; trigger1.JobGroup = SchedulerConstants.DefaultGroup; trigger1.StartTimeUtc = DateTime.UtcNow; trigger1.RepeatCount = SimpleTriggerImpl.RepeatIndefinitely; trigger1.RepeatInterval = TimeSpan.FromMilliseconds(20); IScheduler scheduler = A.Fake <IScheduler>(); A.CallTo(() => scheduler.GetTrigger(A <TriggerKey> ._, A <CancellationToken> ._)).Returns(Task.FromResult <ITrigger>(null)); A.CallTo(() => scheduler.GetJobDetail(A <JobKey> ._, A <CancellationToken> ._)).Returns(Task.FromResult <IJobDetail>(null)); SchedulerFactoryObject schedulerFactoryObject = new TestSchedulerFactoryObject(scheduler); schedulerFactoryObject.JobFactory = jobFactory; schedulerFactoryObject.JobDetails = new IJobDetail[] { jobDetail0, jobDetail1 }; schedulerFactoryObject.Triggers = new ITrigger[] { trigger0, trigger1 }; try { schedulerFactoryObject.AfterPropertiesSet(); await schedulerFactoryObject.Start(); } finally { schedulerFactoryObject.Dispose(); } A.CallTo(scheduler) .Where(x => x.Method.Name.Equals("set_JobFactory")) .WhenArgumentsMatch(x => x.Get <IJobFactory>(0) == jobFactory) .MustHaveHappened(); A.CallTo(() => scheduler.AddJob(jobDetail0, true, true, A <CancellationToken> ._)).MustHaveHappened(); A.CallTo(() => scheduler.AddJob(jobDetail1, true, true, A <CancellationToken> ._)).MustHaveHappened(); A.CallTo(() => scheduler.GetJobDetail(new JobKey("myJob0", SchedulerConstants.DefaultGroup), A <CancellationToken> ._)).MustHaveHappened(); A.CallTo(() => scheduler.GetJobDetail(new JobKey("myJob1", SchedulerConstants.DefaultGroup), A <CancellationToken> ._)).MustHaveHappened(); A.CallTo(() => scheduler.GetTrigger(new TriggerKey("myTrigger0", SchedulerConstants.DefaultGroup), A <CancellationToken> ._)).MustHaveHappened(); A.CallTo(() => scheduler.GetTrigger(new TriggerKey("myTrigger1", SchedulerConstants.DefaultGroup), A <CancellationToken> ._)).MustHaveHappened(); }
private void DoTestSchedulerFactoryObjectWithExistingJobsAndRaceCondition(bool overwrite) { TestObject tb = new TestObject("tb", 99); JobDetailObject jobDetail0 = new JobDetailObject(); jobDetail0.JobType = typeof (IJob); jobDetail0.ObjectName = ("myJob0"); IDictionary jobData = new Hashtable(); jobData.Add("testObject", tb); jobDetail0.JobDataAsMap = (jobData); jobDetail0.AfterPropertiesSet(); Assert.AreEqual(tb, jobDetail0.JobDataMap.Get("testObject")); CronTriggerObject trigger0 = new CronTriggerObject(); trigger0.ObjectName = ("myTrigger0"); trigger0.JobDetail = (jobDetail0); trigger0.CronExpressionString = ("0/1 * * * * ?"); trigger0.AfterPropertiesSet(); TestMethodInvokingTask task1 = new TestMethodInvokingTask(); MethodInvokingJobDetailFactoryObject mijdfb = new MethodInvokingJobDetailFactoryObject(); mijdfb.ObjectName = ("myJob1"); mijdfb.TargetObject = (task1); mijdfb.TargetMethod = ("doSomething"); mijdfb.AfterPropertiesSet(); JobDetail jobDetail1 = (JobDetail) mijdfb.GetObject(); SimpleTriggerObject trigger1 = new SimpleTriggerObject(); trigger1.ObjectName = ("myTrigger1"); trigger1.JobDetail = (jobDetail1); trigger1.StartDelay = TimeSpan.FromMilliseconds(0); trigger1.RepeatInterval = TimeSpan.FromMilliseconds(20); trigger1.AfterPropertiesSet(); IScheduler scheduler = MockRepository.GenerateMock<IScheduler>(); scheduler.Stub(x => x.Context).Return(new SchedulerContext()); #if QUARTZ_2_0 scheduler.Stub(x => x.GetTrigger(new TriggerKey("myTrigger1", SchedulerConstants.DefaultGroup))).Return(new SimpleTrigger()); #else scheduler.Stub(x => x.GetTrigger("myTrigger1", SchedulerConstants.DefaultGroup)).Return(new SimpleTrigger()); #endif if (overwrite) { scheduler.AddJob(jobDetail1, true); #if QUARTZ_2_0 scheduler.Stub(x => x.RescheduleJob(new TriggerKey("myTrigger1", SchedulerConstants.DefaultGroup), trigger1)).Return(DateTime.UtcNow); #else scheduler.Stub(x => x.RescheduleJob("myTrigger1", SchedulerConstants.DefaultGroup, trigger1)).Return(DateTime.UtcNow); #endif } scheduler.Stub(x => x.ScheduleJob(trigger0)).Throw(new ObjectAlreadyExistsException("")); if (overwrite) { #if QUARTZ_2_0 scheduler.Stub(x => x.RescheduleJob(new TriggerKey("myTrigger0", SchedulerConstants.DefaultGroup), trigger0)).Return(DateTime.UtcNow); #else scheduler.Stub(x => x.RescheduleJob("myTrigger0", SchedulerConstants.DefaultGroup, trigger0)).Return(DateTime.UtcNow); #endif } scheduler.Start(); scheduler.Shutdown(false); SchedulerFactoryObject schedulerFactoryObject = new TestSchedulerFactoryObject(scheduler); schedulerFactoryObject.JobFactory = (null); IDictionary schedulerContext = new Hashtable(); schedulerContext.Add("otherTestObject", tb); schedulerFactoryObject.SchedulerContextAsMap = (schedulerContext); schedulerFactoryObject.Triggers = (new Trigger[] {trigger0, trigger1}); if (overwrite) { schedulerFactoryObject.OverwriteExistingJobs = (true); } try { schedulerFactoryObject.AfterPropertiesSet(); schedulerFactoryObject.Start(); } finally { schedulerFactoryObject.Dispose(); } scheduler.AssertWasCalled(x => x.AddJob(jobDetail0, true)); }
private async Task DoTestSchedulerFactoryObject(bool explicitJobDetail, bool prototypeJob) { TestObject tb = new TestObject("tb", 99); JobDetailObject jobDetail0 = new JobDetailObject(); jobDetail0.JobType = typeof(IJob); jobDetail0.ObjectName = "myJob0"; IDictionary jobData = new Hashtable(); jobData.Add("testObject", tb); jobDetail0.JobDataAsMap = jobData; jobDetail0.AfterPropertiesSet(); Assert.AreEqual(tb, jobDetail0.JobDataMap.Get("testObject")); CronTriggerObject trigger0 = new CronTriggerObject(); trigger0.ObjectName = "myTrigger0"; trigger0.JobDetail = jobDetail0; trigger0.CronExpressionString = "0/1 * * * * ?"; trigger0.AfterPropertiesSet(); TestMethodInvokingTask task1 = new TestMethodInvokingTask(); MethodInvokingJobDetailFactoryObject mijdfb = new MethodInvokingJobDetailFactoryObject(); mijdfb.ObjectName = "myJob1"; if (prototypeJob) { StaticListableObjectFactory objectFactory = new StaticListableObjectFactory(); objectFactory.AddObject("task", task1); mijdfb.TargetObjectName = "task"; mijdfb.ObjectFactory = objectFactory; } else { mijdfb.TargetObject = task1; } mijdfb.TargetMethod = "doSomething"; mijdfb.AfterPropertiesSet(); IJobDetail jobDetail1 = (IJobDetail)mijdfb.GetObject(); SimpleTriggerObject trigger1 = new SimpleTriggerObject(); trigger1.ObjectName = "myTrigger1"; trigger1.JobDetail = jobDetail1; trigger1.StartDelay = TimeSpan.FromMilliseconds(0); trigger1.RepeatInterval = TimeSpan.FromMilliseconds(20); trigger1.AfterPropertiesSet(); IScheduler scheduler = A.Fake <IScheduler>(); A.CallTo(() => scheduler.Context).Returns(new SchedulerContext()); A.CallTo(() => scheduler.GetTrigger(A <TriggerKey> ._, A <CancellationToken> ._)).Returns(Task.FromResult <ITrigger>(null)); A.CallTo(() => scheduler.GetJobDetail(A <JobKey> ._, A <CancellationToken> ._)).Returns(Task.FromResult <IJobDetail>(null)); SchedulerFactoryObject schedulerFactoryObject = new TestSchedulerFactoryObject(scheduler); schedulerFactoryObject.JobFactory = null; IDictionary schedulerContext = new Hashtable(); schedulerContext.Add("otherTestObject", tb); schedulerFactoryObject.SchedulerContextAsMap = schedulerContext; if (explicitJobDetail) { schedulerFactoryObject.JobDetails = new IJobDetail[] { jobDetail0 }; } schedulerFactoryObject.Triggers = new ITrigger[] { trigger0, trigger1 }; try { schedulerFactoryObject.AfterPropertiesSet(); await schedulerFactoryObject.Start(); } finally { schedulerFactoryObject.Dispose(); } A.CallTo(() => scheduler.ScheduleJob(trigger0, A <CancellationToken> ._)).MustHaveHappened(); A.CallTo(() => scheduler.ScheduleJob(trigger1, A <CancellationToken> ._)).MustHaveHappened(); A.CallTo(() => scheduler.AddJob(jobDetail0, true, true, A <CancellationToken> ._)).MustHaveHappened(); A.CallTo(() => scheduler.AddJob(jobDetail0, true, true, A <CancellationToken> ._)).MustHaveHappened(); A.CallTo(() => scheduler.Start(A <CancellationToken> ._)).MustHaveHappened(); A.CallTo(() => scheduler.Shutdown(false, A <CancellationToken> ._)).MustHaveHappened(); }
private void DoTestSchedulerFactoryObjectWithExistingJobs(bool overwrite) { TestObject tb = new TestObject("tb", 99); JobDetailObject jobDetail0 = new JobDetailObject(); jobDetail0.JobType = typeof (IJob); jobDetail0.ObjectName = ("myJob0"); IDictionary jobData = new Hashtable(); jobData.Add("testObject", tb); jobDetail0.JobDataAsMap = (jobData); jobDetail0.AfterPropertiesSet(); Assert.AreEqual(tb, jobDetail0.JobDataMap.Get("testObject")); CronTriggerObject trigger0 = new CronTriggerObject(); trigger0.ObjectName = ("myTrigger0"); trigger0.JobDetail = (jobDetail0); trigger0.CronExpressionString = ("0/1 * * * * ?"); trigger0.AfterPropertiesSet(); TestMethodInvokingTask task1 = new TestMethodInvokingTask(); MethodInvokingJobDetailFactoryObject mijdfb = new MethodInvokingJobDetailFactoryObject(); mijdfb.ObjectName = ("myJob1"); mijdfb.TargetObject = (task1); mijdfb.TargetMethod = ("doSomething"); mijdfb.AfterPropertiesSet(); JobDetail jobDetail1 = (JobDetail) mijdfb.GetObject(); SimpleTriggerObject trigger1 = new SimpleTriggerObject(); trigger1.ObjectName = ("myTrigger1"); trigger1.JobDetail = (jobDetail1); trigger1.StartDelay = TimeSpan.FromMilliseconds(0); trigger1.RepeatInterval = TimeSpan.FromMilliseconds(20); trigger1.AfterPropertiesSet(); IScheduler scheduler = (IScheduler) mockery.CreateMock(typeof (IScheduler)); Expect.Call(scheduler.Context).Return(new SchedulerContext()); Expect.Call(scheduler.GetTrigger("myTrigger0", SchedulerConstants.DefaultGroup)).Return(null); Expect.Call(scheduler.GetTrigger("myTrigger1", SchedulerConstants.DefaultGroup)).Return(new SimpleTrigger()); if (overwrite) { scheduler.AddJob(jobDetail1, true); LastCall.IgnoreArguments(); Expect.Call(scheduler.RescheduleJob("myTrigger1", SchedulerConstants.DefaultGroup, trigger1)).Return( DateTime.UtcNow); } else { Expect.Call(scheduler.GetJobDetail("myJob0", SchedulerConstants.DefaultGroup)).Return(null); } scheduler.AddJob(jobDetail0, true); LastCall.IgnoreArguments(); Expect.Call(scheduler.ScheduleJob(trigger0)).Return(DateTime.UtcNow); scheduler.Start(); scheduler.Shutdown(false); mockery.ReplayAll(); SchedulerFactoryObject schedulerFactoryObject = new TestSchedulerFactoryObject(scheduler); schedulerFactoryObject.JobFactory = (null); IDictionary schedulerContext = new Hashtable(); schedulerContext.Add("otherTestObject", tb); schedulerFactoryObject.SchedulerContextAsMap = (schedulerContext); schedulerFactoryObject.Triggers = (new Trigger[] {trigger0, trigger1}); if (overwrite) { schedulerFactoryObject.OverwriteExistingJobs = (true); } try { schedulerFactoryObject.AfterPropertiesSet(); schedulerFactoryObject.Start(); } finally { schedulerFactoryObject.Dispose(); } mockery.VerifyAll(); }