コード例 #1
0
 public void Initialize()
 {
     _jobInstance = new JobInstance(1, "testJob");
     _jobExecution = new JobExecution(_jobInstance, new JobParameters());
     _stepExecution1 = new StepExecution("testStep1", _jobExecution, 1);
     _stepExecution2 = new StepExecution("testStep2", _jobExecution, 2);
 }
コード例 #2
0
 /// <summary>
 /// Method for re-constituting the step executions from
 /// existing instances.
 /// </summary>
 /// <param name="stepExecution"></param>
 public void AddStepExecution(StepExecution stepExecution)
 {
     if (!_stepExecutions.Contains(stepExecution))
     {
         _stepExecutions.TryAdd((stepExecution));
     }
 }
コード例 #3
0
        /// <summary>
        /// Registers a step execution with the current job execution.
        /// </summary>
        /// <param name="stepName"></param>
        /// <returns>the name of the step the new execution is associated with</returns>
        public StepExecution CreateStepExecution(string stepName)
        {
            StepExecution stepExecution = new StepExecution(stepName, this);

            _stepExecutions.TryAdd(stepExecution);
            return(stepExecution);
        }
コード例 #4
0
        /// <summary>
        /// Performs the actual check and returns the code "EMPTY" or "NOT_EMPTY" accordingly
        /// </summary>
        /// <param name="stepExecution"></param>
        /// <returns>"EMPTY" or "NOT_EMPTY"</returns>
        public ExitStatus AfterStep(StepExecution stepExecution)
        {
            string exitCode = Empty;

            try
            {
                FileInfo file = FileToCheck.GetFileInfo();

                if (file.Exists && (file.Attributes & FileAttributes.Directory) != FileAttributes.Directory &&
                    file.Length > 0)
                {
                    if (Logger.IsDebugEnabled)
                    {
                        Logger.Debug("File [{0}] is not empty ! length =[{1}]", file.FullName, file.Length);
                    }
                    exitCode = NotEmpty;
                }
                else
                {
                    if (Logger.IsDebugEnabled)
                    {
                        Logger.Debug("File [{0}] is empty .", file.FullName);
                    }
                }
            }
            catch (IOException)
            {
                Logger.Error("Error accessing file " + FileToCheck.GetFilename());
            }
           
            return new ExitStatus(exitCode);
        }
コード例 #5
0
        public void TestUpdateStepExecution2()
        {
            var stepExecution = new StepExecution("testStep", _jobExecution);
            _stepExecutionDao.SaveStepExecution(stepExecution);
            stepExecution.Version = 1;

            _stepExecutionDao.UpdateStepExecution(stepExecution);
        }
コード例 #6
0
 /// <summary>
 /// @see IStepExecutionListener#BeforeStep
 /// Launched before the step. Initializes the writers associated streams, if any.
 /// </summary>
 /// <param name="stepExecution"></param>
 public void BeforeStep(StepExecution stepExecution)
 {
     StepContextManager.Context = stepExecution.ExecutionContext;
     foreach (var writer in Writers)
     {
         writer.InitStream();
     }
 }
コード例 #7
0
        public void TestSaveStepExecution()
        {
            var stepExecution = new StepExecution("testStep", _jobExecution);

            _stepExecutionDao.SaveStepExecution(stepExecution);

            Assert.AreEqual(1L, stepExecution.Id);
            Assert.AreEqual(0, stepExecution.Version);
        }
コード例 #8
0
        /// <summary>
        /// Registers a step execution with the current job execution.
        /// </summary>
        /// <param name="stepName"></param>
        /// <returns>the name of the step the new execution is associated with</returns>
        public StepExecution CreateStepExecution(string stepName)
        {
            StepExecution stepExecution = new StepExecution(stepName, this);

            if (!_stepExecutions.Contains(stepExecution))
            {
                _stepExecutions.TryAdd(stepExecution);
            }
            return(stepExecution);
        }
コード例 #9
0
        public void TestSaveStepExecution()
        {
            ResetSequence("BATCH_STEP_EXECUTION_SEQ");
            Insert(@"TestData\DbDao\StepExecutionTestData1.xml");
            var stepExecution = new StepExecution("TestStep", _jobExecution);

            _stepExecutionDao.SaveStepExecution(stepExecution);

            Assert.AreEqual(1, stepExecution.Id);
            Assert.AreEqual(0, stepExecution.Version);
        }
コード例 #10
0
        public void TestSaveExecutionContextStep1()
        {
            var jobExecution = new JobExecution(1);
            var execution = new StepExecution("testStep", jobExecution, 2);
            var originalContext = new ExecutionContext();
            execution.ExecutionContext = originalContext;

            _executionContextDao.SaveExecutionContext(execution);
            var context = _executionContextDao.GetExecutionContext(execution);

            Assert.AreEqual(originalContext, context);
        }
コード例 #11
0
        public void TestUpdateStepExecution1()
        {
            var stepExecution = new StepExecution("testStep", _jobExecution);
            _stepExecutionDao.SaveStepExecution(stepExecution);
            stepExecution.BatchStatus = BatchStatus.Completed;

            _stepExecutionDao.UpdateStepExecution(stepExecution);
            var persisted = _stepExecutionDao.GetStepExecution(_jobExecution, 1);

            Assert.AreEqual(1, stepExecution.Version);
            Assert.AreEqual(BatchStatus.Completed, persisted.BatchStatus);
        }
コード例 #12
0
        /// <summary>
        /// Equals override.
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public override bool Equals(Object obj)
        {
            Object jobExecutionId = GetJobExecutionId();

            if (jobExecutionId == null || !(obj is StepExecution) || Id == null)
            {
                return(base.Equals(obj));
            }
            StepExecution other = (StepExecution)obj;

            return(_stepName.Equals(other.StepName) && (jobExecutionId.Equals(other.GetJobExecutionId()) &&
                                                        Id.Equals(other.Id)));
        }
コード例 #13
0
        public void TestSaveExecutionContextStep1()
        {
            Insert(@"TestData\DbDao\ExecutionContextTestData.xml");
            var jobExecution = new JobExecution(1);
            var execution = new StepExecution("TestStep", jobExecution, 1);
            var originalContext = new ExecutionContext();
            execution.ExecutionContext = originalContext;

            _executionContextDao.SaveExecutionContext(execution);
            var context = _executionContextDao.GetExecutionContext(execution);

            Assert.AreEqual(originalContext, context);
        }
コード例 #14
0
 /// <summary>
 /// Add some step executions.  For internal use only.
 /// </summary>
 /// <param name="stepExecutions">step executions to add to the current list</param>
 public void AddStepExecutions(IList <StepExecution> stepExecutions)
 {
     if (stepExecutions != null)
     {
         foreach (StepExecution item in stepExecutions)
         {
             StepExecution removedItem = item;
             _stepExecutions.TryTake(out removedItem);
         }
         foreach (StepExecution item in stepExecutions)
         {
             _stepExecutions.TryAdd(item);
         }
     }
 }
コード例 #15
0
        public void TestSaveStepExecutions()
        {
            var stepExecution1 = new StepExecution("testStep", _jobExecution);
            var stepExecution2 = new StepExecution("testStep", _jobExecution);
            ICollection<StepExecution> executions = new List<StepExecution>();
            executions.Add(stepExecution1);
            executions.Add(stepExecution2);

            _stepExecutionDao.SaveStepExecutions(executions);

            Assert.AreEqual(1L, stepExecution1.Id);
            Assert.AreEqual(0, stepExecution1.Version);
            Assert.AreEqual(2L, stepExecution2.Id);
            Assert.AreEqual(0, stepExecution2.Version);
        }
コード例 #16
0
        public void TestSaveStepExecutions()
        {
            ResetSequence("BATCH_STEP_EXECUTION_SEQ");
            Insert(@"TestData\DbDao\StepExecutionTestData1.xml");
            var stepExecution1 = new StepExecution("TestStep", _jobExecution);
            var stepExecution2 = new StepExecution("TestStep", _jobExecution);
            ICollection<StepExecution> executions = new List<StepExecution>();
            executions.Add(stepExecution1);
            executions.Add(stepExecution2);

            _stepExecutionDao.SaveStepExecutions(executions);

            Assert.AreEqual(1, stepExecution1.Id);
            Assert.AreEqual(0, stepExecution1.Version);
            Assert.AreEqual(2, stepExecution2.Id);
            Assert.AreEqual(0, stepExecution2.Version);
        }
コード例 #17
0
 /// <summary>
 /// Logic launched after the step. Will launch the postprocessor.
 /// @see IStepExecutionListener#AfterStep
 /// </summary>
 /// <param name="stepExecution"></param>
 /// <returns></returns>
 public virtual ExitStatus AfterStep(StepExecution stepExecution)
 {
     ExitStatus returnStatus = stepExecution.ExitStatus;
     if (!"FAILED".Equals(returnStatus.ExitCode))
     {
         try
         {
             returnStatus = Postprocess();
         }
         catch (Exception e)
         {
             // Need to catch exception to log and set status to FAILED, while
             // Spring batch would only log and keep the status COMPLETED
             Logger.Error(e, "Exception during postprocessor");
             returnStatus = ExitStatus.Failed;
         }
     }
     return returnStatus;
 }
コード例 #18
0
ファイル: JobExecution.cs プロジェクト: pkubryk/SummerBatch
 /// <summary>
 /// Registers a step execution with the current job execution.
 /// </summary>
 /// <param name="stepName"></param>
 /// <returns>the name of the step the new execution is associated with</returns>
 public StepExecution CreateStepExecution(string stepName)
 {
     StepExecution stepExecution = new StepExecution(stepName, this);
     _stepExecutions.TryAdd(stepExecution);
     return stepExecution;
 }
コード例 #19
0
        public void TestSaveExecutionContextStep2()
        {
            var jobExecution = new JobExecution(1);
            var execution = new StepExecution("testStep", jobExecution, 2);
            var originalContext = new ExecutionContext();
            execution.ExecutionContext = originalContext;
            originalContext.PutString("test1", "test1");
            originalContext.PutLong("test2", 2L);

            _executionContextDao.SaveExecutionContext(execution);
            var context = _executionContextDao.GetExecutionContext(execution);

            Assert.AreEqual(originalContext, context);
        }
コード例 #20
0
 /// <summary>
 /// Method for re-constituting the step executions from
 /// existing instances.
 /// </summary>
 /// <param name="stepExecution"></param>
 public void AddStepExecution(StepExecution stepExecution)
 {
     _stepExecutions.TryAdd(stepExecution);
 }
コード例 #21
0
 /// <summary>
 /// Custom constructor using a step execution.
 /// </summary>
 /// <param name="execution"></param>
 public StepContribution(StepExecution execution)
 {
     _parentSkipCount = execution.SkipCount;
 }
コード例 #22
0
        public void TestAddStepExecutions1()
        {
            var stepExecution = new StepExecution("testStep", _jobExecution);
            _stepExecutionDao.SaveStepExecution(stepExecution);

            _stepExecutionDao.AddStepExecutions(_jobExecution);

            Assert.AreEqual(1, _jobExecution.StepExecutions.Count);
            Assert.IsTrue(_jobExecution.StepExecutions.Contains(stepExecution));
        }
コード例 #23
0
        public void TestSaveExecutionContexts()
        {
            Insert(@"TestData\DbDao\ExecutionContextTestData.xml");
            var jobExecution = new JobExecution(1);
            var execution1 = new StepExecution("TestStep", jobExecution, 1);
            var execution2 = new StepExecution("TestStep", jobExecution, 2);
            execution1.ExecutionContext = new ExecutionContext();
            execution2.ExecutionContext = new ExecutionContext();
            execution2.ExecutionContext.PutString("test1", "test1");
            execution2.ExecutionContext.PutLong("test2", 2L);

            IList<StepExecution> executions = new List<StepExecution>();
            executions.Add(execution1);
            executions.Add(execution2);
            _executionContextDao.SaveExecutionContexts(executions);
            var context1 = _executionContextDao.GetExecutionContext(execution1);
            var context2 = _executionContextDao.GetExecutionContext(execution2);

            Assert.AreEqual(execution1.ExecutionContext, context1);
            Assert.AreEqual(execution2.ExecutionContext, context2);
        }
コード例 #24
0
ファイル: JobExecution.cs プロジェクト: pkubryk/SummerBatch
 /// <summary>
 /// Method for re-constituting the step executions from
 /// existing instances.
 /// </summary>
 /// <param name="stepExecution"></param>
 public void AddStepExecution(StepExecution stepExecution)
 {
     _stepExecutions.TryAdd(stepExecution);
 }
コード例 #25
0
 /// <summary>
 /// @see IStepExecutionListener#AfterStep
 ///  Launched after the step. Not used, thus does nothing.
 /// </summary>
 /// <param name="stepExecution"></param>
 /// <returns></returns>
 public ExitStatus AfterStep(StepExecution stepExecution)
 {
     return ExitStatus.Completed;
 }
コード例 #26
0
        /// <summary>
        /// Logic launched before the step. Will register the contexts and launch the preprocessor.
        /// @see IStepExecutionListener#BeforeStep
        /// </summary>
        /// <param name="stepExecution"></param>
        public virtual void BeforeStep(StepExecution stepExecution)
        {
            RegisterContexts(stepExecution);
            Preprocess();

        }
コード例 #27
0
        public void TestAddStepExecutions1()
        {
            Insert(@"TestData\DbDao\StepExecutionTestData2.xml");
            var stepExecution = new StepExecution("TestStep", _jobExecution, 1);

            _stepExecutionDao.AddStepExecutions(_jobExecution);

            Assert.AreEqual(1, _jobExecution.StepExecutions.Count);
            Assert.IsTrue(_jobExecution.StepExecutions.Contains(stepExecution));
        }
コード例 #28
0
 public void BeforeStep(StepExecution stepExecution)
 {
     _logger.Info("Starting uppercase test with seperate listener");
 }
コード例 #29
0
 /// <summary>
 /// Do nothing before step
 /// </summary>
 /// <param name="stepExecution"></param>
 public void BeforeStep(StepExecution stepExecution)
 {
     // Do nothing
 }
コード例 #30
0
            public ExitStatus AfterStep(StepExecution stepExecution)
            {
                JobExecution job = stepExecution.JobExecution;
                var jobName = job.JobInstance.JobName;

                var filePathName = Path.Combine(TestDataDirectoryLogs, "1_" + jobName + "_" + job.StartTime.Value.Ticks+ ".log");
                FileInfo fInfo = new FileInfo(filePathName);

                using (StreamWriter logSW = new StreamWriter(fInfo.FullName, true))
                {
                    logSW.WriteLine("Job Name: " + jobName + ", Id: " + job.Id + " ended with BatchError.");
                    for (int i = job.StepExecutions.Count - 1; i > 0; i--)
                    {
                        var stepName = job.StepExecutions.ElementAt(i).StepName;
                        var exitCode = job.StepExecutions.ElementAt(i).ExitStatus.ExitCode;
                        var batchStatus = job.StepExecutions.ElementAt(i).BatchStatus;
                        var summary = job.StepExecutions.ElementAt(i).GetSummary();
                        ICollection<Exception> exceptions = job.StepExecutions.ElementAt(i).GetFailureExceptions();

                        logSW.WriteLine(summary);
                        logSW.WriteLine("Step: " + stepName + ", Batch Status: " + batchStatus + ", Exit Status: " + exitCode);
                        for (int j = 0; j < exceptions.Count; j++)
                        {
                            logSW.WriteLine("Exception @ Step[" + stepName + "]: " + exceptions.ElementAt(j).InnerException);
                        }
                    }
                }

                return ExitStatus.Completed;
            }
コード例 #31
0
 public ExitStatus AfterStep(StepExecution stepExecution)
 {
     _logger.Info("Ending uppercase test with seperate listener");
     return ExitStatus.Completed;
 }
コード例 #32
0
        public void TestUpdateStepExecution1()
        {
            Insert(@"TestData\DbDao\StepExecutionTestData2.xml");
            var stepExecution = new StepExecution("TestStep", _jobExecution, 1)
            {
                BatchStatus = BatchStatus.Completed,
                Version = 0
            };

            _stepExecutionDao.UpdateStepExecution(stepExecution);
            var persisted = _stepExecutionDao.GetStepExecution(_jobExecution, 1);

            Assert.AreEqual(1, stepExecution.Version);
            Assert.AreEqual(BatchStatus.Completed, persisted.BatchStatus);
        }
コード例 #33
0
 /// <summary>
 /// Custom constructor using a step execution.
 /// </summary>
 /// <param name="execution"></param>
 public StepContribution(StepExecution execution)
 {
     _parentSkipCount = execution.SkipCount;
 }
コード例 #34
0
 /// <summary>
 /// registers both job and step contexts.
 /// </summary>
 /// <param name="stepExecution"></param>
 private void RegisterContexts(StepExecution stepExecution)
 {
     JobExecution jobExecution = stepExecution.JobExecution;
     JobContextManager.Context = jobExecution.ExecutionContext;
     StepContextManager.Context = stepExecution.ExecutionContext;
 }
コード例 #35
0
        public void TestUpdateStepExecution2()
        {
            Insert(@"TestData\DbDao\StepExecutionTestData2.xml");
            var stepExecution = new StepExecution("TestStep", _jobExecution) { Version = 1 };

            _stepExecutionDao.UpdateStepExecution(stepExecution);
        }
コード例 #36
0
 /// <summary>
 /// see IStepExecutionListener#AfterStep
 /// </summary>
 /// <param name="stepExecution"></param>
 /// <returns></returns>
 public ExitStatus AfterStep(StepExecution stepExecution)
 {
     return new ExitStatus("OK");
 }