mirror of https://github.com/Radarr/Radarr
Added NextScheduledRun to get the next scheduled run for a job, with a test.
This commit is contained in:
parent
d4c9e5d12f
commit
fdd6e37b24
|
@ -15,7 +15,6 @@ namespace NzbDrone.Core.Test
|
||||||
[Test]
|
[Test]
|
||||||
public void Run_Jobs_Updates_Last_Execution()
|
public void Run_Jobs_Updates_Last_Execution()
|
||||||
{
|
{
|
||||||
|
|
||||||
IEnumerable<IJob> fakeTimers = new List<IJob> { new FakeJob() };
|
IEnumerable<IJob> fakeTimers = new List<IJob> { new FakeJob() };
|
||||||
var mocker = new AutoMoqer();
|
var mocker = new AutoMoqer();
|
||||||
|
|
||||||
|
@ -99,7 +98,6 @@ namespace NzbDrone.Core.Test
|
||||||
Assert.IsTrue(secondRun);
|
Assert.IsTrue(secondRun);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
//This test will confirm that the concurrency checks are rest
|
//This test will confirm that the concurrency checks are rest
|
||||||
//after execution so the job can successfully run.
|
//after execution so the job can successfully run.
|
||||||
|
@ -122,7 +120,6 @@ namespace NzbDrone.Core.Test
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
//This test will confirm that the concurrency checks are rest
|
//This test will confirm that the concurrency checks are rest
|
||||||
//after execution so the job can successfully run.
|
//after execution so the job can successfully run.
|
||||||
|
@ -144,7 +141,6 @@ namespace NzbDrone.Core.Test
|
||||||
Assert.IsTrue(secondRun);
|
Assert.IsTrue(secondRun);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
//This test will confirm that the concurrency checks are rest
|
//This test will confirm that the concurrency checks are rest
|
||||||
//after execution so the job can successfully run.
|
//after execution so the job can successfully run.
|
||||||
|
@ -234,8 +230,6 @@ namespace NzbDrone.Core.Test
|
||||||
Assert.IsTrue(timers[0].Enable);
|
Assert.IsTrue(timers[0].Enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void Init_Timers_sets_interval_0_to_disabled()
|
public void Init_Timers_sets_interval_0_to_disabled()
|
||||||
{
|
{
|
||||||
|
@ -267,8 +261,26 @@ namespace NzbDrone.Core.Test
|
||||||
Assert.IsFalse(timers[0].Enable);
|
Assert.IsFalse(timers[0].Enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void Get_Next_Execution_Time()
|
||||||
|
{
|
||||||
|
IEnumerable<IJob> fakeTimers = new List<IJob> { new FakeJob() };
|
||||||
|
var mocker = new AutoMoqer();
|
||||||
|
|
||||||
|
mocker.SetConstant(MockLib.GetEmptyRepository());
|
||||||
|
mocker.SetConstant(fakeTimers);
|
||||||
|
|
||||||
|
//Act
|
||||||
|
var timerProvider = mocker.Resolve<JobProvider>();
|
||||||
|
timerProvider.Initialize();
|
||||||
|
timerProvider.RunScheduled();
|
||||||
|
var next = timerProvider.NextScheduledRun(typeof(FakeJob));
|
||||||
|
|
||||||
|
//Assert
|
||||||
|
var settings = timerProvider.All();
|
||||||
|
Assert.IsNotEmpty(settings);
|
||||||
|
Assert.AreEqual(next, settings[0].LastExecution.AddMinutes(15));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class FakeJob : IJob
|
public class FakeJob : IJob
|
||||||
|
|
|
@ -78,7 +78,6 @@ namespace NzbDrone.Core.Providers.Jobs
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
||||||
var pendingJobs = All().Where(
|
var pendingJobs = All().Where(
|
||||||
t => t.Enable &&
|
t => t.Enable &&
|
||||||
(DateTime.Now - t.LastExecution) > TimeSpan.FromMinutes(t.Interval)
|
(DateTime.Now - t.LastExecution) > TimeSpan.FromMinutes(t.Interval)
|
||||||
|
@ -218,6 +217,19 @@ namespace NzbDrone.Core.Providers.Jobs
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the next scheduled run time for the job
|
||||||
|
/// (Estimated due to schedule timer)
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>DateTime of next scheduled job</returns>
|
||||||
|
public virtual DateTime NextScheduledRun(Type jobType)
|
||||||
|
{
|
||||||
|
var job = All().Where(t => t.TypeName == jobType.ToString()).FirstOrDefault();
|
||||||
|
|
||||||
|
if (job == null)
|
||||||
|
return DateTime.Now;
|
||||||
|
|
||||||
|
return job.LastExecution.AddMinutes(job.Interval);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -22,8 +22,7 @@ namespace NzbDrone.Web.Controllers
|
||||||
[ChildActionOnly]
|
[ChildActionOnly]
|
||||||
public ActionResult Footer()
|
public ActionResult Footer()
|
||||||
{
|
{
|
||||||
ViewData["RssTimer"] = DateTime.Now.ToString("yyyyMMddHHmmss");
|
ViewData["RssTimer"] = _jobProvider.NextScheduledRun(typeof(RssSyncJob)).ToString("yyyyMMddHHmmss");
|
||||||
//ViewData["RssTimer"] = DateTime.Now.AddMinutes(61).AddSeconds(10).ToString("yyyyMMddHHmmss");
|
|
||||||
return PartialView();
|
return PartialView();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,6 @@ Global
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
{D12F7F2F-8A3C-415F-88FA-6DD061A84869}.Debug|Any CPU.ActiveCfg = Debug|x86
|
{D12F7F2F-8A3C-415F-88FA-6DD061A84869}.Debug|Any CPU.ActiveCfg = Debug|x86
|
||||||
{D12F7F2F-8A3C-415F-88FA-6DD061A84869}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
|
{D12F7F2F-8A3C-415F-88FA-6DD061A84869}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
|
||||||
{D12F7F2F-8A3C-415F-88FA-6DD061A84869}.Debug|Mixed Platforms.Build.0 = Debug|x86
|
|
||||||
{D12F7F2F-8A3C-415F-88FA-6DD061A84869}.Debug|x64.ActiveCfg = Debug|x86
|
{D12F7F2F-8A3C-415F-88FA-6DD061A84869}.Debug|x64.ActiveCfg = Debug|x86
|
||||||
{D12F7F2F-8A3C-415F-88FA-6DD061A84869}.Debug|x86.ActiveCfg = Debug|x86
|
{D12F7F2F-8A3C-415F-88FA-6DD061A84869}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
{D12F7F2F-8A3C-415F-88FA-6DD061A84869}.Debug|x86.Build.0 = Debug|x86
|
{D12F7F2F-8A3C-415F-88FA-6DD061A84869}.Debug|x86.Build.0 = Debug|x86
|
||||||
|
@ -69,7 +68,6 @@ Global
|
||||||
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||||
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|x86.Build.0 = Debug|Any CPU
|
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
|
Loading…
Reference in New Issue