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_OnExecute_DownloadsFile() { // setup ReportJob job = new ReportJob(); job.Command = Guid.NewGuid().ToString(); job.OutputFilePath = Environment.CurrentDirectory; job.OutputFileName = Path.GetRandomFileName(); string expectedOutPath = Path.Combine(job.OutputFilePath, job.OutputFileName); // execute _reportExecutor.ExecuteJob(null, job); // assert _webClientWrapper.Received(1).UseDefaultCredentials = true; _webClientWrapper.Received(1).DownloadFile(job.Command, expectedOutPath); }
public void ExecuteJob_OnExecute_CreatesConnectionUsingFactory() { // setup string connString = Guid.NewGuid().ToString(); ConnectionSetting connSetting = new ConnectionSetting(Guid.NewGuid().ToString(), connString); ReportJob job = new ReportJob(); IDbConnection dbConn = Substitute.For <IDbConnection>(); _dbConnectionFactory.CreateConnection(connString, true).Returns(dbConn); IDbCommand cmd = Substitute.For <IDbCommand>(); dbConn.CreateCommand().Returns(cmd); // execute _reportExecutor.ExecuteJob(connSetting, job); // assert _dbConnectionFactory.Received(1).CreateConnection(connString, true); }