Added tests for SingleId and not updating last execution time or success/fail.

Job information will only be updated if a job did not have a targetId.
This commit is contained in:
Mark McDowall 2011-05-17 22:29:23 -07:00
parent 9327ef4352
commit 8aad53f291
2 changed files with 51 additions and 8 deletions

View File

@ -55,7 +55,6 @@ namespace NzbDrone.Core.Test
Assert.IsFalse(settings[0].Success); Assert.IsFalse(settings[0].Success);
} }
[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.
@ -314,7 +313,6 @@ namespace NzbDrone.Core.Test
Assert.AreEqual(next, settings[0].LastExecution.AddMinutes(15)); Assert.AreEqual(next, settings[0].LastExecution.AddMinutes(15));
} }
[Test] [Test]
public void Disabled_isnt_run_by_scheduler() public void Disabled_isnt_run_by_scheduler()
{ {
@ -339,6 +337,48 @@ namespace NzbDrone.Core.Test
//Assert //Assert
Assert.AreEqual(0, disabledJob.ExexutionCount); Assert.AreEqual(0, disabledJob.ExexutionCount);
} }
[Test]
public void SingleId_do_not_update_last_execution()
{
IEnumerable<IJob> fakeJobs = new List<IJob> { new FakeJob() };
var mocker = new AutoMoqer();
mocker.SetConstant(MockLib.GetEmptyRepository());
mocker.SetConstant(fakeJobs);
//Act
var timerProvider = mocker.Resolve<JobProvider>();
timerProvider.Initialize();
timerProvider.QueueJob(typeof(FakeJob), 10);
Thread.Sleep(1000);
//Assert
var settings = timerProvider.All();
Assert.IsNotEmpty(settings);
Assert.AreEqual(DateTime.MinValue, settings[0].LastExecution);
}
[Test]
public void SingleId_do_not_set_success()
{
IEnumerable<IJob> fakeJobs = new List<IJob> { new FakeJob() };
var mocker = new AutoMoqer();
mocker.SetConstant(MockLib.GetEmptyRepository());
mocker.SetConstant(fakeJobs);
//Act
var timerProvider = mocker.Resolve<JobProvider>();
timerProvider.Initialize();
timerProvider.QueueJob(typeof(FakeJob), 10);
Thread.Sleep(1000);
//Assert
var settings = timerProvider.All();
Assert.IsNotEmpty(settings);
Assert.IsFalse(settings[0].Success);
}
} }
public class FakeJob : IJob public class FakeJob : IJob

View File

@ -164,7 +164,6 @@ namespace NzbDrone.Core.Providers.Jobs
return true; return true;
} }
/// <summary> /// <summary>
/// Starts processing of queue. /// Starts processing of queue.
/// </summary> /// </summary>
@ -242,25 +241,29 @@ namespace NzbDrone.Core.Providers.Jobs
jobImplementation.Start(_notification, targetId); jobImplementation.Start(_notification, targetId);
_notification.Status = ProgressNotificationStatus.Completed; _notification.Status = ProgressNotificationStatus.Completed;
if (targetId != 0)
settings.LastExecution = DateTime.Now; settings.LastExecution = DateTime.Now;
settings.Success = true;
settings.Success = true; //TODO: Do we consider a job with a targetId as successful?
sw.Stop(); sw.Stop();
Logger.Debug("Job '{0}' successfully completed in {1} seconds", jobImplementation.Name, sw.Elapsed.Minutes, Logger.Debug("Job '{0}' successfully completed in {1} seconds", jobImplementation.Name, sw.Elapsed.Minutes,
sw.Elapsed.Seconds); sw.Elapsed.Seconds);
} }
catch (Exception e) catch (Exception e)
{ {
settings.LastExecution = DateTime.Now;
settings.Success = false; settings.Success = false;
Logger.ErrorException("An error has occurred while executing timer job " + jobImplementation.Name, e); Logger.ErrorException("An error has occurred while executing timer job " + jobImplementation.Name, e);
_notification.CurrentMessage = jobImplementation.Name + " Failed."; _notification.CurrentMessage = jobImplementation.Name + " Failed.";
_notification.Status = ProgressNotificationStatus.Failed; _notification.Status = ProgressNotificationStatus.Failed;
} }
} }
if (targetId == 0)
{
SaveSettings(settings); SaveSettings(settings);
} }
}
/// <summary> /// <summary>
/// Initializes jobs in the database using the IJob instances that are /// Initializes jobs in the database using the IJob instances that are