public void HasTriggerWithJobId_QueryByMatchingJobId_ReturnsListWithSingle() { // Arrange var instantTrigger = new InstantTrigger { IsActive = true }; var recurringTrigger = new RecurringTrigger() { IsActive = true }; var scheduledTrigger = new ScheduledTrigger { IsActive = true }; this.Services.JobStorageProvider.AddTrigger(100, instantTrigger); this.Services.JobStorageProvider.AddTrigger(200, recurringTrigger); this.Services.JobStorageProvider.AddTrigger(300, scheduledTrigger); // Act var triggers = this.QueryService.GetTriggersByJobId(200, 1, 50).Items; var assertingRecurringTrigger = triggers[0] as ComponentModel.Management.Model.RecurringTrigger; // Test Assert.IsNotNull(triggers); Assert.AreEqual(1, triggers.Count); Assert.AreEqual(recurringTrigger.Id, assertingRecurringTrigger.Id); }
public void HasOneMatchingJobRun_QueryJobByUserId_ReturnsListWithSingle() { const long jobId = 1; // Arrange var job = new Job { Id = jobId }; var instantTrigger = new InstantTrigger { UserId = "45" }; this.Services.JobStorageProvider.AddTrigger(jobId, instantTrigger); var jobRun = new JobRun { Trigger = instantTrigger, Job = job }; this.Services.JobStorageProvider.AddJobRun(jobRun); // Act var runs = this.QueryService.GetJobRunsByUserId("45"); Assert.IsNotNull(runs); Assert.AreEqual(1, runs.Items.Count); Assert.AreEqual(jobRun.Id, runs.Items[0].Id); }
public void GivenInstantTrigger_WhenUpdating_TriggerIsUpdated() { GivenRavenDb(); GivenStorageProvider(); var job1 = new Job { UniqueName = "testjob1", Type = "Jobs.Test1" }; this.StorageProvider.AddJob(job1); var trigger = new InstantTrigger(); this.StorageProvider.AddTrigger(job1.Id, trigger); var trigger2 = (InstantTrigger)this.StorageProvider.GetTriggerById(job1.Id, trigger.Id); trigger2.Comment = "bla"; trigger2.IsActive = true; trigger2.Parameters = "test-parameters"; trigger2.UserId = "ozu"; trigger2.DelayedMinutes = 5; this.StorageProvider.Update(job1.Id, trigger2); var trigger2Reloaded = (InstantTrigger)this.StorageProvider.GetTriggerById(job1.Id, trigger2.Id); Assert.AreEqual("bla", trigger2Reloaded.Comment); Assert.IsTrue(trigger2Reloaded.IsActive); Assert.AreEqual("test-parameters", trigger2Reloaded.Parameters); Assert.AreEqual("ozu", trigger2Reloaded.UserId); Assert.AreEqual(5, trigger2Reloaded.DelayedMinutes); }
public void GivenJobRun_WhenUpdatingProgress_ProgressIsUpdated() { GivenRavenDb(); GivenStorageProvider(); var job1 = new Job { UniqueName = "testjob1", Type = "Jobs.Test1" }; this.StorageProvider.AddJob(job1); var trigger1 = new InstantTrigger { IsActive = true }; this.StorageProvider.AddTrigger(job1.Id, trigger1); var now = DateTime.UtcNow; var jobRun1 = new JobRun { JobId = job1.Id, TriggerId = trigger1.Id, PlannedStartDateTimeUtc = now, ActualStartDateTimeUtc = now, State = JobRunStates.Completed }; this.StorageProvider.AddJobRun(jobRun1); this.StorageProvider.UpdateProgress(jobRun1.Id, 50); var jobRun2 = this.StorageProvider.GetJobRunById(jobRun1.Id); Assert.AreEqual(50, jobRun2.Progress); }
public void HasOneMatchingJobRun_QueryJobByInexistentUserName_ReturnsEmptyList() { const long jobId = 1; // Arrange var instantTrigger = new InstantTrigger { UserDisplayName = "hans" }; var job = new Job { Id = jobId }; this.Services.JobStorageProvider.AddTrigger(jobId, instantTrigger); var jobRun = new JobRun { Job = job, Trigger = instantTrigger }; this.Services.JobStorageProvider.AddJobRun(jobRun); // Act var runs = this.QueryService.GetJobRunsByUserDisplayName("blablablabl"); Assert.IsNotNull(runs); Assert.AreEqual(0, runs.Items.Count); }
public void GivenJobRun_WhenQueryingById_IsReturned() { GivenRavenDb(); GivenStorageProvider(); var job1 = new Job { UniqueName = "testjob1", Type = "Jobs.Test1" }; this.StorageProvider.AddJob(job1); var trigger1 = new InstantTrigger { IsActive = true }; this.StorageProvider.AddTrigger(job1.Id, trigger1); var jobRun1 = new JobRun { JobId = job1.Id, TriggerId = trigger1.Id, PlannedStartDateTimeUtc = DateTime.UtcNow }; this.StorageProvider.AddJobRun(jobRun1); WaitForIndexing(this.Store); var jobRun2 = this.StorageProvider.GetJobRunById(jobRun1.Id); Assert.AreEqual(jobRun1.Id, jobRun2.Id); }
public void GivenSomeTriggers_WhenQueryingTriggersByJobId_OnlyTriggersOfThatJobAreReturned() { GivenRavenDb(); GivenStorageProvider(); var job1 = new Job { UniqueName = "testjob1", Type = "Jobs.Test1" }; var job2 = new Job { UniqueName = "testjob2", Type = "Jobs.Test2" }; this.StorageProvider.AddJob(job1); this.StorageProvider.AddJob(job2); var trigger1 = new InstantTrigger(); var trigger2 = new InstantTrigger(); var trigger3 = new InstantTrigger(); this.StorageProvider.AddTrigger(job1.Id, trigger1); this.StorageProvider.AddTrigger(job1.Id, trigger2); this.StorageProvider.AddTrigger(job2.Id, trigger3); WaitForIndexing(this.Store); var triggersOfJob1 = this.StorageProvider.GetTriggersByJobId(job1.Id); var triggersOfJob2 = this.StorageProvider.GetTriggersByJobId(job2.Id); Assert.AreEqual(2, triggersOfJob1.Count); Assert.AreEqual(1, triggersOfJob2.Count); }
public void GivenSomeTriggers_WhenQueryingForActiveTriggers_AllActiveTriggersAreReturned() { GivenRavenDb(); GivenStorageProvider(); var job1 = new Job { UniqueName = "testjob1", Type = "Jobs.Test1" }; var job2 = new Job { UniqueName = "testjob2", Type = "Jobs.Test2" }; this.StorageProvider.AddJob(job1); this.StorageProvider.AddJob(job2); var trigger1 = new InstantTrigger { IsActive = false }; var trigger2 = new InstantTrigger { IsActive = true }; var trigger3 = new InstantTrigger { IsActive = true }; this.StorageProvider.AddTrigger(job1.Id, trigger1); this.StorageProvider.AddTrigger(job1.Id, trigger2); this.StorageProvider.AddTrigger(job2.Id, trigger3); WaitForIndexing(this.Store); var activeTriggers = this.StorageProvider.GetActiveTriggers(); Assert.AreEqual(2, activeTriggers.Count); }
internal static InstantTrigger ConvertToTrigger(InstantTriggerDto dto) { var trigger = new InstantTrigger { DelayedMinutes = dto.DelayedMinutes }; return((InstantTrigger)MapCommonValues(dto, trigger)); }
internal static InstantTriggerDto ConvertToDto(InstantTrigger trigger) { var dto = new InstantTriggerDto { DelayedMinutes = trigger.DelayedMinutes }; return((InstantTriggerDto)MapCommonValues(trigger, dto)); }
public void AddTrigger(long jobId, InstantTrigger trigger) { var newTriggerId = this.localTriggers.Count + 1; trigger.Id = newTriggerId; trigger.JobId = jobId; this.localTriggers.Add(trigger); }
public void Update(long jobId, InstantTrigger trigger) { using (var connection = this.connectionFactory.Open()) { var entity = trigger.ToEntity(); connection.Update(entity); } }
public void AddTrigger(long jobId, InstantTrigger trigger) { var model = this.mapper.Map <InstantTriggerModel>(trigger); this.triggerService.Add(jobId, model); trigger.Id = model.Id; trigger.JobId = jobId; }
public void NewInstantTrigger_IsAdded_WillBePlanned() { var scheduledTrigger = new InstantTrigger() { JobId = this.demoJob1Id, IsActive = true }; this.AddAndSignalNewTrigger(this.demoJob1Id, scheduledTrigger); Assert.AreEqual(1, this.lastIssuedPlan.Count, "A instant trigger should cause one item in the plan"); }
private void AddJobRun(DateTime plannedStartDateTimeUtc, JobRunStates state) { var scheduledTrigger = new InstantTrigger() { JobId = this.demoJob1Id, IsActive = true }; var demoJob = this.repository.GetJob(this.demoJob1Id); var jobRun = this.repository.SaveNewJobRun(demoJob, scheduledTrigger, plannedStartDateTimeUtc); jobRun.State = state; this.repository.Update(jobRun); }
private void InsertTrigger(InstantTrigger trigger) { var entity = trigger.ToEntity(); if (entity.CreatedDateTimeUtc == default(DateTime)) { entity.CreatedDateTimeUtc = DateTime.UtcNow; } using (var connection = this.connectionFactory.OpenDbConnection()) { trigger.Id = connection.Insert(entity, true); } }
public static ComponentModel.JobStorage.Model.InstantTrigger ToModel(this InstantTrigger src, long jobId) { return(new ComponentModel.JobStorage.Model.InstantTrigger { Id = src.Id, CreatedDateTimeUtc = src.CreatedDateTimeUtc, Parameters = src.Parameters, IsActive = src.IsActive, Comment = src.Comment, UserId = src.UserId, UserDisplayName = src.UserDisplayName, DelayedMinutes = src.DelayedMinutes, JobId = jobId }); }
private JobRun GivenAJobRun() { var job1 = new Job(); this.repo.AddJob(job1); var trigger = new InstantTrigger { JobId = job1.Id, IsActive = true }; var jobrun = this.repo.SaveNewJobRun(job1, trigger, DateTime.UtcNow); return(jobrun); }
public void GivenJobRun_WhenUpdating_JobRunIsUpdated() { GivenRavenDb(); GivenStorageProvider(); var job1 = new Job { UniqueName = "testjob1", Type = "Jobs.Test1" }; this.StorageProvider.AddJob(job1); var trigger = new InstantTrigger { IsActive = true }; this.StorageProvider.AddTrigger(job1.Id, trigger); var jobRun = new JobRun { JobId = job1.Id, TriggerId = trigger.Id, PlannedStartDateTimeUtc = DateTime.UtcNow }; this.StorageProvider.AddJobRun(jobRun); var newPlannedStartDate = DateTime.UtcNow; var newActualStartDate = newPlannedStartDate.AddSeconds(1); var newEstimatedStartDate = newPlannedStartDate.AddMilliseconds(1); var newActualEndDate = newPlannedStartDate.AddMinutes(1); jobRun.JobParameters = "test-jobparameters"; jobRun.InstanceParameters = "test-instanceparameters"; jobRun.PlannedStartDateTimeUtc = newPlannedStartDate; jobRun.ActualStartDateTimeUtc = newActualStartDate; jobRun.EstimatedEndDateTimeUtc = newEstimatedStartDate; jobRun.ActualEndDateTimeUtc = newActualEndDate; this.StorageProvider.Update(jobRun); var job1Reloaded = this.StorageProvider.GetJobRunById(jobRun.Id); Assert.AreEqual("test-jobparameters", job1Reloaded.JobParameters); Assert.AreEqual("test-instanceparameters", job1Reloaded.InstanceParameters); Assert.AreEqual(newPlannedStartDate.ToString(CultureInfo.InvariantCulture), job1Reloaded.PlannedStartDateTimeUtc.ToString(CultureInfo.InvariantCulture)); Assert.AreEqual(newActualStartDate.ToString(CultureInfo.InvariantCulture), job1Reloaded.ActualStartDateTimeUtc.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); Assert.AreEqual(newEstimatedStartDate.ToString(CultureInfo.InvariantCulture), job1Reloaded.EstimatedEndDateTimeUtc.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); Assert.AreEqual(newActualEndDate.ToString(CultureInfo.InvariantCulture), job1Reloaded.ActualEndDateTimeUtc.GetValueOrDefault().ToString(CultureInfo.InvariantCulture)); }
public void Update(long jobId, InstantTrigger trigger) { using (var session = this._documentStore.OpenSession()) { var job = session.Load <Model.Job>(jobId); var triggerFromDb = job.InstantTriggers.First(p => p.Id == trigger.Id); job.InstantTriggers.Remove(triggerFromDb); var entity = trigger.ToEntity(); job.InstantTriggers.Add(entity); session.Store(job); session.SaveChanges(); } }
public static Entities.Trigger ToEntity(this InstantTrigger model) { return(new Entities.Trigger { Id = model.Id, UserId = model.UserId, UserDisplayName = model.UserDisplayName, JobId = model.JobId, IsActive = model.IsActive, Comment = model.Comment, Parameters = model.Parameters, CreatedDateTimeUtc = model.CreatedDateTimeUtc, Type = Entities.TriggerType.InstantTrigger, DelayedMinutes = model.DelayedMinutes, NoParallelExecution = false, Deleted = model.Deleted, }); }
public void GetInstantTrigger() { using (this.GivenRunningServerWithWebApi()) { var client = new JobbrClient(this.BackendAddress); var job = new Job(); this.JobStorage.AddJob(job); var trigger = new InstantTrigger(); this.JobStorage.AddTrigger(job.Id, trigger); var triggerDto = client.GetTriggerById <InstantTriggerDto>(job.Id, trigger.Id); Assert.IsNotNull(triggerDto); Assert.AreEqual(trigger.Id, triggerDto.Id); } }
public void AddTrigger(long jobId, InstantTrigger trigger) { using (var session = this._documentStore.OpenSession()) { var job = session.Load <Model.Job>(jobId); var entity = trigger.ToEntity(); entity.Id = ++job.LastTriggerId; entity.CreatedDateTimeUtc = DateTime.UtcNow; job.InstantTriggers.Add(entity); session.Store(job); session.SaveChanges(); trigger.Id = entity.Id; trigger.CreatedDateTimeUtc = entity.CreatedDateTimeUtc; } }
internal PlanResult Plan(InstantTrigger trigger, bool isNew = false) { if (!trigger.IsActive) { return(PlanResult.FromAction(PlanAction.Obsolete)); } var baseDateTimeUtc = trigger.CreatedDateTimeUtc; var calculatedNextRun = baseDateTimeUtc.AddMinutes(trigger.DelayedMinutes); if (calculatedNextRun < this.dateTimeProvider.GetUtcNow() && !isNew) { return(PlanResult.FromAction(PlanAction.Obsolete)); } return(new PlanResult { Action = PlanAction.Possible, ExpectedStartDateUtc = calculatedNextRun }); }
public void HasOneMatchingJobRun_QueryJobByInexistentUserId_ReturnsEmptyList() { const long jobId = 1; // Arrange var instantTrigger = new InstantTrigger { UserId = "45" }; this.Services.JobStorageProvider.AddTrigger(jobId, instantTrigger); this.Services.JobStorageProvider.AddJobRun(new JobRun { TriggerId = instantTrigger.Id, JobId = jobId }); // Act var runs = this.QueryService.GetJobRunsByUserIdOrderByIdDesc("88"); Assert.IsNotNull(runs); Assert.AreEqual(0, runs.Count); }
public void UpdateInstantTrigger() { using (this.GivenRunningServerWithWebApi()) { var client = new JobbrClient(this.BackendAddress); var job = new Job(); this.JobStorage.AddJob(job); var trigger = new InstantTrigger(); this.JobStorage.AddTrigger(job.Id, trigger); var triggerDto = client.UpdateTrigger(job.Id, new InstantTriggerDto { Id = trigger.Id, IsActive = true }); Assert.IsNotNull(triggerDto); Assert.IsTrue(triggerDto.IsActive); } }
public void GivenThreeJobRuns_WhenQueryingForSpecificStatePaged_ResultIsPaged() { GivenRavenDb(); GivenStorageProvider(); var job1 = new Job { UniqueName = "testjob1", Type = "Jobs.Test1" }; this.StorageProvider.AddJob(job1); var trigger1 = new InstantTrigger { IsActive = true }; this.StorageProvider.AddTrigger(job1.Id, trigger1); var jobRun1 = new JobRun { JobId = job1.Id, TriggerId = trigger1.Id, PlannedStartDateTimeUtc = DateTime.UtcNow, State = JobRunStates.Completed }; var jobRun2 = new JobRun { JobId = job1.Id, TriggerId = trigger1.Id, PlannedStartDateTimeUtc = DateTime.UtcNow, State = JobRunStates.Completed }; var jobRun3 = new JobRun { JobId = job1.Id, TriggerId = trigger1.Id, PlannedStartDateTimeUtc = DateTime.UtcNow, State = JobRunStates.Failed }; this.StorageProvider.AddJobRun(jobRun1); this.StorageProvider.AddJobRun(jobRun2); this.StorageProvider.AddJobRun(jobRun3); WaitForIndexing(this.Store); var jobRuns = this.StorageProvider.GetJobRunsByState(JobRunStates.Completed, 0, 1); Assert.AreEqual(1, jobRuns.Count); jobRuns = this.StorageProvider.GetJobRunsByState(JobRunStates.Completed, 0, 2); Assert.AreEqual(2, jobRuns.Count); }
public void HasOneMatchingJobRun_QueryJobByUserName_ReturnsListWithSingle() { const long jobId = 1; // Arrange var instantTrigger = new InstantTrigger { UserDisplayName = "hans" }; this.Services.JobStorageProvider.AddTrigger(jobId, instantTrigger); this.Services.JobStorageProvider.AddJobRun(new JobRun { JobId = jobId, TriggerId = instantTrigger.Id }); // Act var runs = this.QueryService.GetJobRunsByUserDisplayNameOrderByIdDesc("hans"); Assert.IsNotNull(runs); Assert.AreEqual(1, runs.Count); Assert.AreEqual(instantTrigger.Id, runs[0].TriggerId); }
public void HasOneMatchingJobRun_QueryJobByUserId_ReturnsSortedListByIdDesc() { const long jobId = 1; // Arrange var job = new Job { Id = jobId }; var instantTrigger1 = new InstantTrigger { UserId = "45" }; this.Services.JobStorageProvider.AddTrigger(jobId, instantTrigger1); var instantTrigger2 = new InstantTrigger { UserId = "45" }; this.Services.JobStorageProvider.AddTrigger(jobId, instantTrigger2); var jobRun1 = new JobRun { Job = job, Trigger = instantTrigger1 }; this.Services.JobStorageProvider.AddJobRun(jobRun1); var jobRun2 = new JobRun { Job = job, Trigger = instantTrigger2 }; this.Services.JobStorageProvider.AddJobRun(jobRun2); // Act var runs = this.QueryService.GetJobRunsByUserId("45"); Assert.IsNotNull(runs); Assert.AreEqual(2, runs.Items.Count); Assert.AreEqual(jobRun2.Id, runs.Items[0].Id); Assert.AreEqual(jobRun1.Id, runs.Items[1].Id); }
public void HasDifferentTriggerTypes_QueryById_ReturnsCorrectType() { // Arrange const long jobId = 1; var instantTrigger = new InstantTrigger(); var recurringTrigger = new RecurringTrigger(); var scheduledTrigger = new ScheduledTrigger(); this.Services.JobStorageProvider.AddTrigger(jobId, instantTrigger); this.Services.JobStorageProvider.AddTrigger(jobId, recurringTrigger); this.Services.JobStorageProvider.AddTrigger(jobId, scheduledTrigger); // Act var instantTypeTrigger = this.QueryService.GetTriggerById(jobId, instantTrigger.Id); var recurringTypeTrigger = this.QueryService.GetTriggerById(jobId, recurringTrigger.Id); var scheduledTypeTrigger = this.QueryService.GetTriggerById(jobId, scheduledTrigger.Id); // Test Assert.AreEqual(typeof(ComponentModel.Management.Model.InstantTrigger), instantTypeTrigger.GetType()); Assert.AreEqual(typeof(ComponentModel.Management.Model.RecurringTrigger), recurringTypeTrigger.GetType()); Assert.AreEqual(typeof(ComponentModel.Management.Model.ScheduledTrigger), scheduledTypeTrigger.GetType()); }