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);
        }
Exemple #4
0
        public void ReportingServicesReportExecutorTest_SetUp()
        {
            _webClientWrapper = Substitute.For <IWebClientWrapper>();

            _reportExecutor = new ReportingServicesReportExecutor(_webClientWrapper);
        }