/** * Test. * * @throws IOException e * @throws SchedulerException e */ @Test public void testJob() throws IOException, SchedulerException { // job quartz JobGlobalListener.initJobGlobalListener(); JobGlobalListener.getJobCounter().clear(); // Grab the Scheduler instance from the Factory final Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); try { // and start it off scheduler.start(); final Random random = new Random(); // Define a Trigger that will fire "later" final JobDetail job2 = new JobDetail("job" + random.nextInt(), null, JobTestImpl.class); final SimpleTrigger trigger2 = new SimpleTrigger( "trigger" + random.nextInt(), null, new Date(System.currentTimeMillis() + 60000)); trigger2.setRepeatInterval(2 * 24L * 60 * 60 * 1000); scheduler.scheduleJob(job2, trigger2); scheduler.pauseJob(job2.getName(), job2.getGroup()); try { final JobDetail job3 = new JobDetail("job" + random.nextInt(), null, JobTestImpl.class); // cron trigger that will never fire final Trigger trigger3 = new CronTrigger("crontrigger" + random.nextInt(), null, "0 0 0 * * ? 2030"); scheduler.scheduleJob(job3, trigger3); // other trigger that will never fire final NthIncludedDayTrigger trigger4 = new NthIncludedDayTrigger("nth trigger" + random.nextInt(), null); trigger4.setN(1); trigger4.setIntervalType(NthIncludedDayTrigger.INTERVAL_TYPE_YEARLY); trigger4.setJobName(job3.getName()); scheduler.scheduleJob(trigger4); } catch (final ParseException e) { throw new IllegalStateException(e); } // JavaInformations doit être réinstancié pour récupérer les jobs // (mais "Aucun job" dans le counter) final List<JavaInformations> javaInformationsList2 = Collections.singletonList(new JavaInformations(null, true)); final HtmlReport htmlReport = new HtmlReport(collector, null, javaInformationsList2, Period.TOUT, writer); htmlReport.toHtml(null, null); assertNotEmptyAndClear(writer); // on lance 10 jobs pour être à peu près sûr qu'il y en a un qui fait une erreur // (aléatoirement il y en a 2/10 qui font une erreur) final Map<JobDetail, SimpleTrigger> triggersByJob = new LinkedHashMap<JobDetail, SimpleTrigger>(); for (int i = 0; i < 10; i++) { // Define a Trigger that will fire "now" final JobDetail job = new JobDetail("job" + random.nextInt(), null, JobTestImpl.class); job.setDescription("description"); final SimpleTrigger trigger = new SimpleTrigger("trigger" + random.nextInt(), null, new Date()); // Schedule the job with the trigger scheduler.scheduleJob(job, trigger); triggersByJob.put(job, trigger); } // JobTestImpl fait un sleep de 2s au plus, donc on attend les jobs pour les compter try { Thread.sleep(3000); } catch (final InterruptedException e) { throw new IllegalStateException(e); } for (final Map.Entry<JobDetail, SimpleTrigger> entry : triggersByJob.entrySet()) { // et on les relance pour qu'ils soient en cours entry.getValue().setRepeatInterval(60000); scheduler.scheduleJob(entry.getKey(), entry.getValue()); } // JavaInformations doit être réinstancié pour récupérer les jobs setProperty(Parameter.SYSTEM_ACTIONS_ENABLED, Boolean.FALSE.toString()); final List<JavaInformations> javaInformationsList3 = Collections.singletonList(new JavaInformations(null, true)); final HtmlReport htmlReport3 = new HtmlReport(collector, null, javaInformationsList3, Period.TOUT, writer); htmlReport3.toHtml(null, null); assertNotEmptyAndClear(writer); } finally { scheduler.shutdown(); JobGlobalListener.getJobCounter().clear(); JobGlobalListener.destroyJobGlobalListener(); } }