public void ExecuteJob(ConnectionSetting connection, ReportJob job) { try { // get the executor relevant to the command type IReportExecutor reportExecutor = _reportExecutorFactory.GetReportExecutor(job.CommandType); // mark the job as processing _logger.Info("Moving job {0} (Id: {1}) into processing state", job.ReportName, job.Id); _startJobCommand.Execute(connection, job.Id); // extract the data into a data table _logger.Info("Processing job for report {0} ({1})", job.ReportName, job.Id); reportExecutor.ExecuteJob(connection, job); // mark the job as processed _logger.Info("Marking job {0} (Id: {1}) as complete", job.ReportName, job.Id); _finaliseJobCommand.Execute(connection, job.Id); _logger.Info("Completed job for report {0} ({1})", job.ReportName, job.Id); } catch (Exception ex) { _logger.Error(ex, ex.Message); // mark the job as errored _logger.Info("Saving error information job for report {0} ({1})", job.ReportName, job.Id); _failJobCommand.Execute(connection, job.Id, ex); } }
public void ExecuteJob_OnSuccess_FinalisesJob() { // setup ConnectionSetting connSetting = new ConnectionSetting("MyConn", "MyConnString"); ReportJob reportJob = new ReportJob(); reportJob.Id = new Random().Next(1, 100); reportJob.CommandType = Guid.NewGuid().ToString(); reportJob.OutputFormat = Guid.NewGuid().ToString(); IReportExecutor reportExecutor = Substitute.For <IReportExecutor>(); _reportExecutorFactory.GetReportExecutor(reportJob.CommandType).Returns(reportExecutor); // execute _reportJobAgent.ExecuteJob(connSetting, reportJob); // assert _reportExecutorFactory.Received(1).GetReportExecutor(reportJob.CommandType); _startJobCommand.Received(1).Execute(connSetting, reportJob.Id); reportExecutor.Received(1).ExecuteJob(connSetting, reportJob); _finaliseJobCommand.Received(1).Execute(connSetting, reportJob.Id); _failJobCommand.Received(0).Execute(Arg.Any <ConnectionSetting>(), Arg.Any <int>(), Arg.Any <Exception>()); }
public void StoredProcedureReportExecutorTest_SetUp() { _dbConnectionFactory = Substitute.For <IDbConnectionFactory>(); _reportWriterFactory = Substitute.For <IReportWriterFactory>(); _dbParameterUtility = Substitute.For <IDbParameterUtility>(); _reportExecutor = new StoredProcedureReportExecutor(_dbConnectionFactory, _reportWriterFactory, _dbParameterUtility); }
public void ReportingServicesReportExecutorTest_SetUp() { _webClientWrapper = Substitute.For <IWebClientWrapper>(); _reportExecutor = new ReportingServicesReportExecutor(_webClientWrapper); }