public void GivenThreeJobRunsOfChefkoch_WhenQueryingByUserDisplayName_ReturnsOnlyJobRunsOfThatUser() { GivenRavenDb(); GivenStorageProvider(); var job1 = new Job { UniqueName = "testjob1", Type = "Jobs.Test1" }; this.StorageProvider.AddJob(job1); var trigger1 = new InstantTrigger { IsActive = true, UserDisplayName = "chefkoch" }; 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.Completed }; this.StorageProvider.AddJobRun(jobRun1); this.StorageProvider.AddJobRun(jobRun2); this.StorageProvider.AddJobRun(jobRun3); WaitForIndexing(this.Store); var jobRuns = this.StorageProvider.GetJobRunsByUserDisplayName("chefkoch"); Assert.AreEqual(3, jobRuns.Count); }
public void GivenThreeJobRuns_WhenQueryingByTriggerPaged_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.GetJobRunsByTriggerId(job1.Id, trigger1.Id, 0, 2); Assert.AreEqual(2, jobRuns.Count); }
private void UpdatePlannedJobRun(JobRun plannedNextRun, JobTriggerBase trigger, DateTime calculatedNextRun) { // Is this value in sync with the schedule table? if (plannedNextRun.PlannedStartDateTimeUtc == calculatedNextRun) { Logger.DebugFormat( "The previously planned startdate '{0}' is still correct for JobRun (id: {1}) triggered by trigger with id '{2}' (Type: '{3}', userId: '{4}', userName: '******')", calculatedNextRun, plannedNextRun.Id, trigger.Id, trigger.GetType().Name, trigger.UserId, trigger.UserDisplayName); return; } // Was the change too close before the execution date? var utcNow = this.dateTimeProvider.GetUtcNow(); if (utcNow.AddSeconds(this.configuration.AllowChangesBeforeStartInSec) >= calculatedNextRun) { Logger.WarnFormat( "The planned startdate '{0}' has changed to '{1}'. This change was done too close (less than {2} seconds) to the next planned run and cannot be adjusted", plannedNextRun.PlannedStartDateTimeUtc, calculatedNextRun, this.configuration.AllowChangesBeforeStartInSec); return; } Logger.WarnFormat("The calculated startdate '{0}' has changed to '{1}', the planned jobRun needs to be updated as next step", plannedNextRun.PlannedStartDateTimeUtc, calculatedNextRun); plannedNextRun.PlannedStartDateTimeUtc = calculatedNextRun; this.repository.Update(plannedNextRun); }
private void RunJobImmediately(object sender, JobRun e) { e.Run(); }
public void AddJobRun(JobRun jobRun) { }
public void Update(JobRun jobRun) { this.localJobRuns.Remove(this.localJobRuns.FirstOrDefault(jr => jr.Id == jobRun.Id)); this.localJobRuns.Add(jobRun); }
public static JobRun ToModel(this Entities.JobRunInfo entity) { var jobrun = new JobRun { Id = entity.Id, ActualEndDateTimeUtc = entity.ActualEndDateTimeUtc, ActualStartDateTimeUtc = entity.ActualStartDateTimeUtc, EstimatedEndDateTimeUtc = entity.EstimatedEndDateTimeUtc, InstanceParameters = entity.InstanceParameters, JobParameters = entity.JobParameters, Pid = entity.Pid, PlannedStartDateTimeUtc = entity.PlannedStartDateTimeUtc, Progress = entity.Progress, State = entity.State, Deleted = entity.Deleted, Job = new Job { Id = entity.JobId, CreatedDateTimeUtc = entity.JobCreatedDateTimeUtc, UniqueName = entity.JobUniqueName, Type = entity.JobType, Parameters = entity.JobParameters, UpdatedDateTimeUtc = entity.JobUpdatedDateTimeUtc, Title = entity.JobTitle, }, }; if (entity.TriggerType == Entities.TriggerType.InstantTrigger) { jobrun.Trigger = new InstantTrigger { Id = entity.TriggerId, UserDisplayName = entity.TriggerUserDisplayName, JobId = entity.JobId, CreatedDateTimeUtc = entity.TriggerCreatedDateTimeUtc, Parameters = entity.TriggerParameters, DelayedMinutes = entity.TriggerDelayedMinutes, UserId = entity.TriggerUserId, IsActive = entity.TriggerIsActive, Comment = entity.TriggerComment, Deleted = entity.Deleted, }; } else if (entity.TriggerType == Entities.TriggerType.RecurringTrigger) { jobrun.Trigger = new RecurringTrigger { Id = entity.TriggerId, UserDisplayName = entity.TriggerUserDisplayName, JobId = entity.JobId, CreatedDateTimeUtc = entity.TriggerCreatedDateTimeUtc, Parameters = entity.TriggerParameters, UserId = entity.TriggerUserId, IsActive = entity.TriggerIsActive, Comment = entity.TriggerComment, EndDateTimeUtc = entity.TriggerEndDateTimeUtc, StartDateTimeUtc = entity.TriggerStartDateTimeUtc, Definition = entity.TriggerDefinition, NoParallelExecution = entity.TriggerNoParallelExecution, Deleted = entity.Deleted, }; } else if (entity.TriggerType == Entities.TriggerType.ScheduledTrigger) { jobrun.Trigger = new RecurringTrigger { Id = entity.TriggerId, UserDisplayName = entity.TriggerUserDisplayName, JobId = entity.JobId, CreatedDateTimeUtc = entity.TriggerCreatedDateTimeUtc, Parameters = entity.TriggerParameters, UserId = entity.TriggerUserId, IsActive = entity.TriggerIsActive, Comment = entity.TriggerComment, EndDateTimeUtc = entity.TriggerEndDateTimeUtc, StartDateTimeUtc = entity.TriggerStartDateTimeUtc, Definition = entity.TriggerDefinition, NoParallelExecution = entity.TriggerNoParallelExecution, Deleted = entity.Deleted, }; } return(jobrun); }
public void AddJobRun(JobRun jobRun) { this.CheckFailAll(); this.inMemoryVersion.AddJobRun(jobRun); }
public void Update(JobRun jobRun) { this.CheckFailAll(); this.inMemoryVersion.Update(jobRun); }
public void Update(JobRun jobRun) { }
public static JobRun ApplyTo(this ComponentModel.JobStorage.Model.JobRun src, JobRun targetEntity) { targetEntity.Id = src.Id > 0 ? $"{JobRun.CollectionPrefix}/{src.Id}" : null; targetEntity.ActualEndDateTimeUtc = src.ActualEndDateTimeUtc; targetEntity.ActualStartDateTimeUtc = src.ActualStartDateTimeUtc; targetEntity.EstimatedEndDateTimeUtc = src.EstimatedEndDateTimeUtc; targetEntity.InstanceParameters = src.InstanceParameters; targetEntity.JobParameters = src.JobParameters; targetEntity.Pid = src.Pid; targetEntity.PlannedStartDateTimeUtc = src.PlannedStartDateTimeUtc; targetEntity.Progress = src.Progress; targetEntity.State = (JobRunStates)src.State; return(targetEntity); }
public void SetPidForJobRun(JobRun jobRun, int id) { jobRun.Pid = id; this.storageProvider.Update(jobRun); }
public void AddJobRun(JobRun jobRun) { throw new NotImplementedException(); }
public void Update(JobRun jobRun) { this.storageProvider.Update(jobRun); }
/// <summary> /// Report a given <paramref name="jobRun"/> as a logging metric with the specified <paramref name="metricName"/>. /// </summary> /// <param name="logger">The instance to report the job outcome.</param> /// <param name="metricName">The name of the logging metric.</param> /// <param name="jobRun">The instance to report.</param> /// <param name="context">The additional contextual information related to the to be logged metric.</param> /// <exception cref="ArgumentException">Thrown when the <paramref name="metricName"/> is blank.</exception> /// <exception cref="ArgumentNullException">Thrown when the <paramref name="jobRun"/> is <c>null</c>.</exception> public static void LogMetricFinishedJobOutcome(this ILogger logger, string metricName, JobRun jobRun, Dictionary <string, object> context = null) { Guard.NotNull(logger, nameof(logger)); Guard.NotNullOrWhitespace(metricName, nameof(metricName)); Guard.NotNull(jobRun, nameof(jobRun)); TextInfo text = new CultureInfo("en-US", useUserOverride: false).TextInfo; logger.LogInformation("Found finished job run with ID {RunId}", jobRun.Run.RunId); RunResultState?resultState = jobRun.Run.State.ResultState; if (resultState is null) { logger.LogWarning("Cannot find result state of finished job run with ID {RunId}", jobRun.Run.RunId); } else { string outcome = text.ToLower(resultState.ToString()); var startContext = new Dictionary <string, object> { { "Run Id", jobRun.Run.RunId }, { "Job Id", jobRun.Run.JobId }, { "Job Name", jobRun.JobName }, { "Outcome", outcome } }; if (context != null) { foreach (KeyValuePair <string, object> item in context) { if (startContext.ContainsKey(item.Key)) { logger.LogWarning( "Cannot add duplicate key '{KeyName}' to metric finished Databricks job context", item.Key); } else { startContext.Add(item.Key, item.Value); } } } logger.LogMetric(metricName, value: 1, context: startContext); } }
public void Get_JobRuns_By_States() { using (this.GivenRunningServerWithWebApi()) { var client = new JobbrClient(this.BackendAddress); var job = new Job(); this.JobStorage.AddJob(job); var trigger = new RecurringTrigger(); this.JobStorage.AddTrigger(job.Id, trigger); var jobRun = new JobRun { Job = new Job { Id = job.Id }, Trigger = new RecurringTrigger { Id = trigger.Id }, State = JobRunStates.Completed }; this.JobStorage.AddJobRun(jobRun); var jobRun2 = new JobRun { Job = new Job { Id = job.Id }, Trigger = new RecurringTrigger { Id = trigger.Id }, State = JobRunStates.Completed }; this.JobStorage.AddJobRun(jobRun2); var jobRun3 = new JobRun { Job = new Job { Id = job.Id }, Trigger = new RecurringTrigger { Id = trigger.Id }, State = JobRunStates.Failed }; this.JobStorage.AddJobRun(jobRun3); var jobRun4 = new JobRun { Job = new Job { Id = job.Id }, Trigger = new RecurringTrigger { Id = trigger.Id }, State = JobRunStates.Connected }; this.JobStorage.AddJobRun(jobRun4); var jobRuns = client.QueryJobRunsByStates("Completed,Connected"); Assert.AreEqual(3, jobRuns.TotalItems); jobRuns = client.QueryJobRunsByStates("Completed,Connected,Failed"); Assert.AreEqual(4, jobRuns.TotalItems); jobRuns = client.QueryJobRunsByStates("Failed"); Assert.AreEqual(1, jobRuns.TotalItems); } }
public SimpleJob(JobRun run) { _run = run; }
public void Update(JobRun jobRun) { throw new NotImplementedException(); }