public void RunTestWithSuppliedDbConfig() { IJobOperator jobOperator = BatchRuntime.GetJobOperator(new MyDbUnityLoader()); Assert.IsInstanceOfType(jobOperator, typeof(SimpleJobOperator)); Type t = jobOperator.GetType(); PropertyInfo f = t.GetProperty("JobLauncher", BindingFlags.Instance | BindingFlags.Public); IJobLauncher jobLauncher = (IJobLauncher)f.GetValue(jobOperator); Assert.IsNotNull(jobLauncher); Assert.IsInstanceOfType(jobLauncher, typeof(SimpleJobLauncher)); PropertyInfo f2 = t.GetProperty("JobRepository", BindingFlags.Instance | BindingFlags.Public); IJobRepository jobRepository = (IJobRepository)f2.GetValue(jobOperator); Assert.IsNotNull(jobRepository); Assert.IsInstanceOfType(jobRepository, typeof(SimpleJobRepository)); PropertyInfo f3 = t.GetProperty("JobRegistry", BindingFlags.Instance | BindingFlags.Public); IListableJobLocator jobRegistry = (IListableJobLocator)f3.GetValue(jobOperator); Assert.IsNotNull(jobRegistry); Assert.IsInstanceOfType(jobRegistry, typeof(MapJobRegistry)); PropertyInfo f4 = t.GetProperty("JobExplorer", BindingFlags.Instance | BindingFlags.Public); IJobExplorer jobExplorer = (IJobExplorer)f4.GetValue(jobOperator); Assert.IsNotNull(jobExplorer); Assert.IsInstanceOfType(jobExplorer, typeof(SimpleJobExplorer)); FieldInfo f5 = jobRepository.GetType().GetField("_jobInstanceDao", BindingFlags.Instance | BindingFlags.NonPublic); IJobInstanceDao dao = (IJobInstanceDao)f5.GetValue(jobRepository); Assert.IsNotNull(dao); Assert.IsInstanceOfType(dao, typeof(DbJobInstanceDao)); }
/// <summary> /// Retrieves the last failed job execution for the given job identifier; /// Might be null if not found. /// </summary> /// <param name="jobIdentifier"></param> /// <param name="jobExplorer"></param> /// <returns></returns> private static JobExecution GetLastFailedJobExecution(string jobIdentifier, IJobExplorer jobExplorer) { List <JobExecution> jobExecutions = GetJobExecutionsWithStatusGreaterThan(jobIdentifier, BatchStatus.Stopping, jobExplorer); if (!jobExecutions.Any()) { return(null); } return(jobExecutions[0]); }
/// <summary> /// Retrieves all job executions for a given minimal status /// </summary> /// <param name="jobIdentifier"></param> /// <param name="minStatus"></param> /// <param name="jobExplorer"></param> /// <returns></returns> private static List <JobExecution> GetJobExecutionsWithStatusGreaterThan(string jobIdentifier, BatchStatus minStatus, IJobExplorer jobExplorer) { long?executionId = GetLongIdentifier(jobIdentifier); if (executionId != null) { JobExecution jobExecution = jobExplorer.GetJobExecution(executionId.Value); if (jobExecution.Status.IsGreaterThan(minStatus)) { return(new List <JobExecution> { jobExecution }); } //empmty list return(new List <JobExecution>()); } int start = 0; int count = 100; List <JobExecution> executions = new List <JobExecution>(); IList <JobInstance> lastInstances = jobExplorer.GetJobInstances(jobIdentifier, start, count); while (lastInstances.Any()) { foreach (JobInstance jobInstance in lastInstances) { IList <JobExecution> jobExecutions = jobExplorer.GetJobExecutions(jobInstance); if (jobExecutions == null || !jobExecutions.Any()) { continue; } executions.AddRange(jobExecutions.Where(jobExecution => jobExecution.Status.IsGreaterThan(minStatus))); } start += count; lastInstances = jobExplorer.GetJobInstances(jobIdentifier, start, count); } return(executions); }
/// <summary> /// Retrieves the stopped job executions for the given job identifier; /// Might be null if nothing found. /// </summary> /// <param name="jobIdentifier"></param> /// <param name="jobExplorer"></param> /// <returns></returns> private static List <JobExecution> GetStoppedJobExecutions(string jobIdentifier, IJobExplorer jobExplorer) { List <JobExecution> jobExecutions = GetJobExecutionsWithStatusGreaterThan(jobIdentifier, BatchStatus.Started, jobExplorer); if (!jobExecutions.Any()) { return(null); } return(jobExecutions.Where(jobExecution => jobExecution.Status != BatchStatus.Abandoned).ToList()); }
/// <summary> /// Retrieves the running job executions for the given job identifier; /// Might be null if nothing found. /// </summary> /// <param name="jobIdentifier"></param> /// <param name="jobExplorer"></param> /// <returns></returns> private static List <JobExecution> GetRunningJobExecutions(string jobIdentifier, IJobExplorer jobExplorer) { List <JobExecution> jobExecutions = GetJobExecutionsWithStatusGreaterThan(jobIdentifier, BatchStatus.Completed, jobExplorer); if (!jobExecutions.Any()) { return(null); } return(jobExecutions.Where(jobExecution => jobExecution.IsRunning()).ToList()); }
/// <summary> /// Retrieves all job executions for a given minimal status /// </summary> /// <param name="jobIdentifier"></param> /// <param name="minStatus"></param> /// <param name="jobExplorer"></param> /// <returns></returns> private static List<JobExecution> GetJobExecutionsWithStatusGreaterThan(string jobIdentifier, BatchStatus minStatus, IJobExplorer jobExplorer) { long? executionId = GetLongIdentifier(jobIdentifier); if (executionId != null) { JobExecution jobExecution = jobExplorer.GetJobExecution(executionId.Value); if (jobExecution.Status.IsGreaterThan(minStatus)) { return new List<JobExecution> { jobExecution }; } //empmty list return new List<JobExecution>(); } int start = 0; int count = 100; List<JobExecution> executions = new List<JobExecution>(); IList<JobInstance> lastInstances = jobExplorer.GetJobInstances(jobIdentifier, start, count); while (lastInstances.Any()) { foreach (JobInstance jobInstance in lastInstances) { IList<JobExecution> jobExecutions = jobExplorer.GetJobExecutions(jobInstance); if (jobExecutions == null || !jobExecutions.Any()) { continue; } executions.AddRange(jobExecutions.Where(jobExecution => jobExecution.Status.IsGreaterThan(minStatus))); } start += count; lastInstances = jobExplorer.GetJobInstances(jobIdentifier, start, count); } return executions; }
/// <summary> /// Retrieves the stopped job executions for the given job identifier; /// Might be null if nothing found. /// </summary> /// <param name="jobIdentifier"></param> /// <param name="jobExplorer"></param> /// <returns></returns> private static List<JobExecution> GetStoppedJobExecutions(string jobIdentifier, IJobExplorer jobExplorer) { List<JobExecution> jobExecutions = GetJobExecutionsWithStatusGreaterThan(jobIdentifier, BatchStatus.Started, jobExplorer); if (!jobExecutions.Any()) { return null; } return jobExecutions.Where(jobExecution => jobExecution.Status != BatchStatus.Abandoned).ToList(); }
/// <summary> /// Retrieves the running job executions for the given job identifier; /// Might be null if nothing found. /// </summary> /// <param name="jobIdentifier"></param> /// <param name="jobExplorer"></param> /// <returns></returns> private static List<JobExecution> GetRunningJobExecutions(string jobIdentifier, IJobExplorer jobExplorer) { List<JobExecution> jobExecutions = GetJobExecutionsWithStatusGreaterThan(jobIdentifier, BatchStatus.Completed, jobExplorer); if (!jobExecutions.Any()) { return null; } return jobExecutions.Where(jobExecution => jobExecution.IsRunning()).ToList(); }
/// <summary> /// Retrieves the last failed job execution for the given job identifier; /// Might be null if not found. /// </summary> /// <param name="jobIdentifier"></param> /// <param name="jobExplorer"></param> /// <returns></returns> private static JobExecution GetLastFailedJobExecution(string jobIdentifier, IJobExplorer jobExplorer) { List<JobExecution> jobExecutions = GetJobExecutionsWithStatusGreaterThan(jobIdentifier, BatchStatus.Stopping, jobExplorer); if (!jobExecutions.Any()) { return null; } return jobExecutions[0]; }