From 651ab8ef8c4077bca9d50e1dc01449178d916c59 Mon Sep 17 00:00:00 2001 From: lahma Date: Mon, 4 Aug 2008 18:43:39 +0000 Subject: [PATCH] Changing startup delay properties to be time spans instead of plain integers --- .../solutions/Spring.Net.Quartz.2008.sln | 115 ++++++++++++++++++ .../Quartz/SchedulerFactoryObject.cs | 14 +-- .../Scheduling/Quartz/SimpleTriggerObject.cs | 10 +- .../Quartz/LocalDataSourceJobStoreTest.xml | 4 +- ...uling.Quartz.Integration.Tests.2008.csproj | 23 ++-- .../Quartz/MethodInvokingJobTest.cs | 2 +- .../Quartz/SchedulerFactoryObjectTest.cs | 2 +- .../Quartz/SimpleTriggerObjectTest.cs | 4 +- 8 files changed, 144 insertions(+), 30 deletions(-) create mode 100644 build-support/solutions/Spring.Net.Quartz.2008.sln diff --git a/build-support/solutions/Spring.Net.Quartz.2008.sln b/build-support/solutions/Spring.Net.Quartz.2008.sln new file mode 100644 index 00000000..088b9eeb --- /dev/null +++ b/build-support/solutions/Spring.Net.Quartz.2008.sln @@ -0,0 +1,115 @@ +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F04753EF-7A1B-4837-AB63-8C0821E8155D}" + ProjectSection(SolutionItems) = preProject + Spring.build = Spring.build + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Core", "Core", "{438FE108-6F55-4C8A-8BF4-C85D0906D134}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{5ECE7B2B-6975-4800-982E-618794909499}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Core.2008", "..\..\src\Spring\Spring.Core\Spring.Core.2008.csproj", "{710961A3-0DF4-49E4-A26E-F5B9C044AC84}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Aop.2008", "..\..\src\Spring\Spring.Aop\Spring.Aop.2008.csproj", "{3A3A4E65-45A6-4B20-B460-0BEDC302C02C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Data.2008", "..\..\src\Spring\Spring.Data\Spring.Data.2008.csproj", "{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Scheduling.Quartz.2008", "..\..\src\Spring\Spring.Scheduling.Quartz\Spring.Scheduling.Quartz.2008.csproj", "{E823D54C-CE82-4868-929F-5F95A999F61E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Scheduling.Quartz.Tests.2008", "..\..\test\Spring\Spring.Scheduling.Quartz.Tests\Spring.Scheduling.Quartz.Tests.2008.csproj", "{9FE720ED-2BD9-4FB9-89C8-FFFA4A491CB5}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Scheduling.Quartz.Integration.Tests.2008", "..\..\test\Spring\Spring.Scheduling.Quartz.Integration.Tests\Spring.Scheduling.Quartz.Integration.Tests.2008.csproj", "{E4328F68-C3FC-43E2-9D63-30CEC55215B0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|.NET = Debug|.NET + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Release|.NET = Release|.NET + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {710961A3-0DF4-49E4-A26E-F5B9C044AC84}.Debug|.NET.ActiveCfg = Debug|Any CPU + {710961A3-0DF4-49E4-A26E-F5B9C044AC84}.Debug|.NET.Build.0 = Debug|Any CPU + {710961A3-0DF4-49E4-A26E-F5B9C044AC84}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {710961A3-0DF4-49E4-A26E-F5B9C044AC84}.Debug|Any CPU.Build.0 = Debug|Any CPU + {710961A3-0DF4-49E4-A26E-F5B9C044AC84}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {710961A3-0DF4-49E4-A26E-F5B9C044AC84}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {710961A3-0DF4-49E4-A26E-F5B9C044AC84}.Release|.NET.ActiveCfg = Release|Any CPU + {710961A3-0DF4-49E4-A26E-F5B9C044AC84}.Release|.NET.Build.0 = Release|Any CPU + {710961A3-0DF4-49E4-A26E-F5B9C044AC84}.Release|Any CPU.ActiveCfg = Release|Any CPU + {710961A3-0DF4-49E4-A26E-F5B9C044AC84}.Release|Any CPU.Build.0 = Release|Any CPU + {710961A3-0DF4-49E4-A26E-F5B9C044AC84}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {710961A3-0DF4-49E4-A26E-F5B9C044AC84}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {3A3A4E65-45A6-4B20-B460-0BEDC302C02C}.Debug|.NET.ActiveCfg = Debug|Any CPU + {3A3A4E65-45A6-4B20-B460-0BEDC302C02C}.Debug|.NET.Build.0 = Debug|Any CPU + {3A3A4E65-45A6-4B20-B460-0BEDC302C02C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3A3A4E65-45A6-4B20-B460-0BEDC302C02C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3A3A4E65-45A6-4B20-B460-0BEDC302C02C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {3A3A4E65-45A6-4B20-B460-0BEDC302C02C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {3A3A4E65-45A6-4B20-B460-0BEDC302C02C}.Release|.NET.ActiveCfg = Release|Any CPU + {3A3A4E65-45A6-4B20-B460-0BEDC302C02C}.Release|.NET.Build.0 = Release|Any CPU + {3A3A4E65-45A6-4B20-B460-0BEDC302C02C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3A3A4E65-45A6-4B20-B460-0BEDC302C02C}.Release|Any CPU.Build.0 = Release|Any CPU + {3A3A4E65-45A6-4B20-B460-0BEDC302C02C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {3A3A4E65-45A6-4B20-B460-0BEDC302C02C}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {AE00E5AB-C39A-436F-86D2-33BFE33E2E40}.Debug|.NET.ActiveCfg = Debug|Any CPU + {AE00E5AB-C39A-436F-86D2-33BFE33E2E40}.Debug|.NET.Build.0 = Debug|Any CPU + {AE00E5AB-C39A-436F-86D2-33BFE33E2E40}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AE00E5AB-C39A-436F-86D2-33BFE33E2E40}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AE00E5AB-C39A-436F-86D2-33BFE33E2E40}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {AE00E5AB-C39A-436F-86D2-33BFE33E2E40}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {AE00E5AB-C39A-436F-86D2-33BFE33E2E40}.Release|.NET.ActiveCfg = Release|Any CPU + {AE00E5AB-C39A-436F-86D2-33BFE33E2E40}.Release|.NET.Build.0 = Release|Any CPU + {AE00E5AB-C39A-436F-86D2-33BFE33E2E40}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AE00E5AB-C39A-436F-86D2-33BFE33E2E40}.Release|Any CPU.Build.0 = Release|Any CPU + {AE00E5AB-C39A-436F-86D2-33BFE33E2E40}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {AE00E5AB-C39A-436F-86D2-33BFE33E2E40}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {E823D54C-CE82-4868-929F-5F95A999F61E}.Debug|.NET.ActiveCfg = Debug|Any CPU + {E823D54C-CE82-4868-929F-5F95A999F61E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E823D54C-CE82-4868-929F-5F95A999F61E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E823D54C-CE82-4868-929F-5F95A999F61E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {E823D54C-CE82-4868-929F-5F95A999F61E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {E823D54C-CE82-4868-929F-5F95A999F61E}.Release|.NET.ActiveCfg = Release|Any CPU + {E823D54C-CE82-4868-929F-5F95A999F61E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E823D54C-CE82-4868-929F-5F95A999F61E}.Release|Any CPU.Build.0 = Release|Any CPU + {E823D54C-CE82-4868-929F-5F95A999F61E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {E823D54C-CE82-4868-929F-5F95A999F61E}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {9FE720ED-2BD9-4FB9-89C8-FFFA4A491CB5}.Debug|.NET.ActiveCfg = Debug|Any CPU + {9FE720ED-2BD9-4FB9-89C8-FFFA4A491CB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9FE720ED-2BD9-4FB9-89C8-FFFA4A491CB5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9FE720ED-2BD9-4FB9-89C8-FFFA4A491CB5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {9FE720ED-2BD9-4FB9-89C8-FFFA4A491CB5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {9FE720ED-2BD9-4FB9-89C8-FFFA4A491CB5}.Release|.NET.ActiveCfg = Release|Any CPU + {9FE720ED-2BD9-4FB9-89C8-FFFA4A491CB5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9FE720ED-2BD9-4FB9-89C8-FFFA4A491CB5}.Release|Any CPU.Build.0 = Release|Any CPU + {9FE720ED-2BD9-4FB9-89C8-FFFA4A491CB5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {9FE720ED-2BD9-4FB9-89C8-FFFA4A491CB5}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {E4328F68-C3FC-43E2-9D63-30CEC55215B0}.Debug|.NET.ActiveCfg = Debug|Any CPU + {E4328F68-C3FC-43E2-9D63-30CEC55215B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E4328F68-C3FC-43E2-9D63-30CEC55215B0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E4328F68-C3FC-43E2-9D63-30CEC55215B0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {E4328F68-C3FC-43E2-9D63-30CEC55215B0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {E4328F68-C3FC-43E2-9D63-30CEC55215B0}.Release|.NET.ActiveCfg = Release|Any CPU + {E4328F68-C3FC-43E2-9D63-30CEC55215B0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E4328F68-C3FC-43E2-9D63-30CEC55215B0}.Release|Any CPU.Build.0 = Release|Any CPU + {E4328F68-C3FC-43E2-9D63-30CEC55215B0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {E4328F68-C3FC-43E2-9D63-30CEC55215B0}.Release|Mixed Platforms.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {710961A3-0DF4-49E4-A26E-F5B9C044AC84} = {438FE108-6F55-4C8A-8BF4-C85D0906D134} + {3A3A4E65-45A6-4B20-B460-0BEDC302C02C} = {438FE108-6F55-4C8A-8BF4-C85D0906D134} + {AE00E5AB-C39A-436F-86D2-33BFE33E2E40} = {438FE108-6F55-4C8A-8BF4-C85D0906D134} + {E823D54C-CE82-4868-929F-5F95A999F61E} = {438FE108-6F55-4C8A-8BF4-C85D0906D134} + {9FE720ED-2BD9-4FB9-89C8-FFFA4A491CB5} = {5ECE7B2B-6975-4800-982E-618794909499} + {E4328F68-C3FC-43E2-9D63-30CEC55215B0} = {5ECE7B2B-6975-4800-982E-618794909499} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + NAntAddinLastFileName = Spring.build + EndGlobalSection +EndGlobal diff --git a/src/Spring/Spring.Scheduling.Quartz/Scheduling/Quartz/SchedulerFactoryObject.cs b/src/Spring/Spring.Scheduling.Quartz/Scheduling/Quartz/SchedulerFactoryObject.cs index d9a06070..27754018 100644 --- a/src/Spring/Spring.Scheduling.Quartz/Scheduling/Quartz/SchedulerFactoryObject.cs +++ b/src/Spring/Spring.Scheduling.Quartz/Scheduling/Quartz/SchedulerFactoryObject.cs @@ -151,7 +151,7 @@ namespace Spring.Scheduling.Quartz private Type schedulerFactoryType; private ISchedulerListener[] schedulerListeners; private string schedulerName; - private int startupDelay; + private TimeSpan startupDelay = TimeSpan.Zero; private ITaskExecutor taskExecutor; private ITriggerListener[] triggerListeners; private ArrayList triggers; @@ -480,7 +480,7 @@ namespace Spring.Scheduling.Quartz } /// - /// Set the number of seconds to wait after initialization before + /// Set the time span to wait after initialization before /// starting the scheduler asynchronously. Default is 0, meaning /// immediate synchronous startup on initialization of this object. /// @@ -488,7 +488,7 @@ namespace Spring.Scheduling.Quartz /// Setting this to 10 or 20 seconds makes sense if no jobs /// should be run before the entire application has started up. /// - public virtual int StartupDelay + public virtual TimeSpan StartupDelay { set { startupDelay = value; } } @@ -1101,11 +1101,11 @@ namespace Spring.Scheduling.Quartz /// Start the Quartz Scheduler, respecting the "startDelay" setting. /// /// the Scheduler to start - /// the number of seconds to wait before starting + /// the time span to wait before starting /// the Scheduler asynchronously - protected virtual void StartScheduler(IScheduler sched, int startDelay) + protected virtual void StartScheduler(IScheduler sched, TimeSpan startDelay) { - if (startDelay <= 0) + if (startDelay.TotalSeconds <= 0) { logger.Info("Starting Quartz Scheduler now"); sched.Start(); @@ -1118,7 +1118,7 @@ namespace Spring.Scheduling.Quartz string.Format("Will start Quartz Scheduler [{0}] in {1} seconds", sched.SchedulerName, startDelay)); } - sched.StartDelayed(startDelay); + sched.StartDelayed((int) startDelay.TotalSeconds); } } diff --git a/src/Spring/Spring.Scheduling.Quartz/Scheduling/Quartz/SimpleTriggerObject.cs b/src/Spring/Spring.Scheduling.Quartz/Scheduling/Quartz/SimpleTriggerObject.cs index 5b62e9df..85d17d31 100644 --- a/src/Spring/Spring.Scheduling.Quartz/Scheduling/Quartz/SimpleTriggerObject.cs +++ b/src/Spring/Spring.Scheduling.Quartz/Scheduling/Quartz/SimpleTriggerObject.cs @@ -51,7 +51,7 @@ namespace Spring.Scheduling.Quartz /// public class SimpleTriggerObject : SimpleTrigger, IJobDetailAwareTrigger, IObjectNameAware, IInitializingObject { - private long startDelay; + private TimeSpan startDelay = TimeSpan.Zero; private JobDetail jobDetail; private string objectName; private readonly Constants constants = new Constants(typeof(MisfireInstruction.SimpleTrigger), typeof(MisfireInstruction)); @@ -95,8 +95,8 @@ namespace Spring.Scheduling.Quartz /// /// Set the delay before starting the job for the first time. - /// The given number of milliseconds will be added to the current - /// time to calculate the start time. Default is 0. + /// The given time span will be added to the current + /// time to calculate the start time. Default is . /// /// /// This delay will just be applied if no custom start time was @@ -105,7 +105,7 @@ namespace Spring.Scheduling.Quartz /// Specifying a relative delay is appropriate in that case. /// /// - public virtual long StartDelay + public virtual TimeSpan StartDelay { set { startDelay = value; } } @@ -180,7 +180,7 @@ namespace Spring.Scheduling.Quartz } if (StartTimeUtc == DateTime.MinValue) { - StartTimeUtc = DateTime.UtcNow.AddMilliseconds(startDelay); + StartTimeUtc = DateTime.UtcNow.Add(startDelay); } if (jobDetail != null) { diff --git a/test/Spring/Spring.Scheduling.Quartz.Integration.Tests/Scheduling/Quartz/LocalDataSourceJobStoreTest.xml b/test/Spring/Spring.Scheduling.Quartz.Integration.Tests/Scheduling/Quartz/LocalDataSourceJobStoreTest.xml index c416a461..73d26987 100644 --- a/test/Spring/Spring.Scheduling.Quartz.Integration.Tests/Scheduling/Quartz/LocalDataSourceJobStoreTest.xml +++ b/test/Spring/Spring.Scheduling.Quartz.Integration.Tests/Scheduling/Quartz/LocalDataSourceJobStoreTest.xml @@ -23,7 +23,7 @@ - + @@ -54,7 +54,7 @@ - + diff --git a/test/Spring/Spring.Scheduling.Quartz.Integration.Tests/Spring.Scheduling.Quartz.Integration.Tests.2008.csproj b/test/Spring/Spring.Scheduling.Quartz.Integration.Tests/Spring.Scheduling.Quartz.Integration.Tests.2008.csproj index d295daf0..f5076ffe 100644 --- a/test/Spring/Spring.Scheduling.Quartz.Integration.Tests/Spring.Scheduling.Quartz.Integration.Tests.2008.csproj +++ b/test/Spring/Spring.Scheduling.Quartz.Integration.Tests/Spring.Scheduling.Quartz.Integration.Tests.2008.csproj @@ -2,33 +2,29 @@ Debug AnyCPU - 8.0.50727 + 9.0.21022 2.0 {E4328F68-C3FC-43E2-9D63-30CEC55215B0} Library Properties Spring Spring.Scheduling.Quartz.Integration.Tests - - - 2.0 - - + v3.5 true full false - ..\..\..\build\VS.NET.2005\Spring.Scheduling.Quartz.Integration.Tests\Debug\ - TRACE;DEBUG;NET_2_0 + ..\..\..\build\VS.NET.2008\Spring.Scheduling.Quartz.Integration.Tests\Debug\ + TRACE;DEBUG;NET_2_0;NET_3_5 prompt 4 pdbonly true - ..\..\..\build\VS.NET.2005\Spring.Scheduling.Quartz.Integration.Tests\Release\ - TRACE;NET_2_0 + ..\..\..\build\VS.NET.2008\Spring.Scheduling.Quartz.Integration.Tests\Release\ + TRACE;NET_2_0;NET_3_5 prompt 4 @@ -46,15 +42,18 @@ ..\..\..\lib\Net\2.0\Rhino.Mocks.dll + + 3.5 + - + {710961A3-0DF4-49E4-A26E-F5B9C044AC84} Spring.Core.2005 - + {E823D54C-CE82-4868-929F-5F95A999F61E} Spring.Scheduling.Quartz.2005 diff --git a/test/Spring/Spring.Scheduling.Quartz.Tests/Scheduling/Quartz/MethodInvokingJobTest.cs b/test/Spring/Spring.Scheduling.Quartz.Tests/Scheduling/Quartz/MethodInvokingJobTest.cs index be92a1ee..93869430 100644 --- a/test/Spring/Spring.Scheduling.Quartz.Tests/Scheduling/Quartz/MethodInvokingJobTest.cs +++ b/test/Spring/Spring.Scheduling.Quartz.Tests/Scheduling/Quartz/MethodInvokingJobTest.cs @@ -85,7 +85,7 @@ namespace Spring.Scheduling.Quartz methodInvokingJob.Execute(CreateMinimalJobExecutionContext()); Assert.Fail("Successful invoke when method threw exception"); } - catch (JobExecutionException) + catch (JobMethodInvocationFailedException) { // ok } diff --git a/test/Spring/Spring.Scheduling.Quartz.Tests/Scheduling/Quartz/SchedulerFactoryObjectTest.cs b/test/Spring/Spring.Scheduling.Quartz.Tests/Scheduling/Quartz/SchedulerFactoryObjectTest.cs index c0665e66..4fb3f03d 100644 --- a/test/Spring/Spring.Scheduling.Quartz.Tests/Scheduling/Quartz/SchedulerFactoryObjectTest.cs +++ b/test/Spring/Spring.Scheduling.Quartz.Tests/Scheduling/Quartz/SchedulerFactoryObjectTest.cs @@ -203,7 +203,7 @@ namespace Spring.Scheduling.Quartz factory.SchedulerFactoryType = typeof(TestSchedulerFactory); factory.AutoStartup = true; - factory.StartupDelay = 2; + factory.StartupDelay = TimeSpan.FromSeconds(2); factory.AfterPropertiesSet(); } diff --git a/test/Spring/Spring.Scheduling.Quartz.Tests/Scheduling/Quartz/SimpleTriggerObjectTest.cs b/test/Spring/Spring.Scheduling.Quartz.Tests/Scheduling/Quartz/SimpleTriggerObjectTest.cs index 20fe6fa5..46553142 100644 --- a/test/Spring/Spring.Scheduling.Quartz.Tests/Scheduling/Quartz/SimpleTriggerObjectTest.cs +++ b/test/Spring/Spring.Scheduling.Quartz.Tests/Scheduling/Quartz/SimpleTriggerObjectTest.cs @@ -65,7 +65,7 @@ namespace Spring.Scheduling.Quartz [Test] public override void TestAfterPropertiesSet_ValuesGiven() { - simpleTrigger.StartDelay = 100; + simpleTrigger.StartDelay = TimeSpan.FromMilliseconds(100); simpleTrigger.AfterPropertiesSet(); base.TestAfterPropertiesSet_ValuesGiven(); } @@ -74,7 +74,7 @@ namespace Spring.Scheduling.Quartz public void TestAfterPropertiesSet_StartDelayGiven() { const int START_DELAY = 100000; - simpleTrigger.StartDelay = START_DELAY; + simpleTrigger.StartDelay = TimeSpan.FromMilliseconds(START_DELAY); DateTime startTime = DateTime.UtcNow; simpleTrigger.AfterPropertiesSet(); AssertDateTimesEqualityWithAllowedDelta(startTime.AddMilliseconds(START_DELAY), simpleTrigger.StartTimeUtc, 1000);