public void RunTestSystemCommandTasklet()
        {
            SimpleJobLauncher    launcher            = new SimpleJobLauncher();
            IJobInstanceDao      jobInstanceDao      = new MapJobInstanceDao();
            IJobExecutionDao     jobExecutionDao     = new MapJobExecutionDao();
            IStepExecutionDao    stepExecutionDao    = new MapStepExecutionDao();
            IExecutionContextDao executionContextDao = new MapExecutionContextDao();

            IJobRepository jobRepository =
                new SimpleJobRepository(jobInstanceDao, jobExecutionDao, stepExecutionDao, executionContextDao);

            launcher.JobRepository = jobRepository;

            DefaultJobParametersConverter converter = new DefaultJobParametersConverter();
            NameValueCollection           props2    = new NameValueCollection
            {
                { "+dateDebut(date)", "1970/07/31" },
                { "+everything(long)", "42" },
                { "-balance(double)", "1000.0" },
                { "+name(string)", "thierry" },
                { "-default", "default" }
            };
            JobParameters jobParameters = converter.GetJobParameters(props2);

            IJob job = new SimpleJob("myTestJob");

            job.JobParametersValidator = new DummyValidator();
            job.Restartable            = false;
            TaskletStep step = new TaskletStep("simpleTS")
            {
                JobRepository = jobRepository
            };
            SystemCommandTasklet tasklet = new SystemCommandTasklet
            {
                Command                     = "DEL MyDummyTasklet2_out_*.txt",
                WorkingDirectory            = "C:/temp",
                Timeout                     = 10000000,
                SystemProcessExitCodeMapper = new SimpleSystemProcessExitCodeMapper()
            };

            step.Tasklet = tasklet;
            step.RegisterStepExecutionListener(tasklet);
            ((SimpleJob)job).AddStep(step);
            ((SimpleJob)job).JobRepository = jobRepository;
            ITaskExecutor taskExecutor = new SimpleAsyncTaskExecutor();

            launcher.TaskExecutor = taskExecutor;
            JobExecution jobExecution = launcher.Run(job, jobParameters);

            //wait for execution end (asynchronous)
            Assert.IsFalse(jobExecution.Status.IsUnsuccessful());
            Assert.IsFalse(jobExecution.Status.IsRunning());
        }
        public void RunTestASynchronousExecutor()
        {
            SimpleJobLauncher    launcher            = new SimpleJobLauncher();
            IJobInstanceDao      jobInstanceDao      = new MapJobInstanceDao();
            IJobExecutionDao     jobExecutionDao     = new MapJobExecutionDao();
            IStepExecutionDao    stepExecutionDao    = new MapStepExecutionDao();
            IExecutionContextDao executionContextDao = new MapExecutionContextDao();

            IJobRepository jobRepository =
                new SimpleJobRepository(jobInstanceDao, jobExecutionDao, stepExecutionDao, executionContextDao);

            launcher.JobRepository = jobRepository;

            DefaultJobParametersConverter converter = new DefaultJobParametersConverter();
            NameValueCollection           props2    = new NameValueCollection
            {
                { "+dateDebut(date)", "1970/07/31" },
                { "+everything(long)", "42" },
                { "-balance(double)", "1000.0" },
                { "+name(string)", "thierry" },
                { "-default", "default" }
            };
            JobParameters jobParameters = converter.GetJobParameters(props2);

            IJob job = new SimpleJob("myTestJob");

            job.JobParametersValidator = new DummyValidator();
            job.Restartable            = false;
            TaskletStep step = new TaskletStep("simpleTS")
            {
                JobRepository = jobRepository,
                Tasklet       = new MyDummyTasklet2()
            };

            ((SimpleJob)job).AddStep(step);
            ((SimpleJob)job).JobRepository = jobRepository;
            ITaskExecutor taskExecutor = new SimpleAsyncTaskExecutor();

            launcher.TaskExecutor = taskExecutor;
            JobExecution jobExecution = launcher.Run(job, jobParameters);

            //wait for execution end (asynchronous)
            Assert.IsFalse(jobExecution.Status.IsUnsuccessful());
            Assert.IsFalse(jobExecution.Status.IsRunning());
        }