package binky.reportrunner.service.impl; import java.util.Calendar; import java.util.Date; import java.util.LinkedList; import java.util.List; import java.util.UUID; import junit.framework.TestCase; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import binky.reportrunner.data.RunnerGroup; import binky.reportrunner.data.RunnerJob; import binky.reportrunner.data.RunnerJobParameter; import binky.reportrunner.data.RunnerJob_pk; import binky.reportrunner.scheduler.SchedulerException; import binky.reportrunner.service.GroupService; import binky.reportrunner.service.ReportService; public class ReportServiceImplTest extends TestCase { ReportService reportService; GroupService groupService; private RunnerGroup group; private RunnerJob j; protected void setUp() throws Exception { ApplicationContext ctx = new ClassPathXmlApplicationContext( "applicationContext.xml"); reportService = (ReportService)ctx.getBean("runnerJobService"); groupService = (GroupService)ctx.getBean("groupService"); group = new RunnerGroup(); group.setGroupName(getUID()); groupService.saveOrUpdate(group); this.j=getTestJob(); reportService.addUpdateJob(j); } private String getUID() { return UUID.randomUUID().toString(); } @Override protected void tearDown() throws Exception { reportService.deleteJob(j.getPk().getJobName(), group.getGroupName()); groupService.delete(group.getGroupName()); } private RunnerJob getTestJob() { RunnerJob j = new RunnerJob(); RunnerJob_pk pk = new RunnerJob_pk(); pk.setGroup(group); pk.setJobName(getUID()); j.setPk(pk); j.setScheduled(true); j.setStartDate(Calendar.getInstance().getTime()); j.setCronString("0 0 * ? * *"); RunnerJobParameter p = new RunnerJobParameter(); p.setRunnerJob(j); p.setParameterIdx(1); List<RunnerJobParameter> ps = new LinkedList<RunnerJobParameter>(); ps.add(p); j.setParameters(ps); return j; } public void testAddUpdateJob() { RunnerJob c = reportService.getJob(j.getPk().getJobName(), group.getGroupName()); assertNotNull(c); } public void testDeleteJob() { try { reportService.deleteJob(j.getPk().getJobName(), group.getGroupName()); RunnerJob c = reportService.getJob(j.getPk().getJobName(), group.getGroupName()); assertNull(c); } catch (SchedulerException e) { e.printStackTrace(); fail(e.getMessage()); } } public void testGetJob() { RunnerJob c = reportService.getJob(j.getPk().getJobName(), group.getGroupName()); assertNotNull(c); } public void testListJobs() { assertTrue(reportService.listJobs(group.getGroupName()).size()>0); } public void testIsJobActive() { try { assertTrue(reportService.isJobActive(j.getPk().getJobName(), group.getGroupName())); } catch (SchedulerException e) { e.printStackTrace(); fail(e.getMessage()); } } public void testPauseJob() { try { reportService.pauseJob(j.getPk().getJobName(), group.getGroupName()); assertFalse(reportService.isJobActive(j.getPk().getJobName(), group.getGroupName())); } catch (SchedulerException e) { e.printStackTrace(); fail(e.getMessage()); } } public void testResumeJob() { try { reportService.pauseJob(j.getPk().getJobName(), group.getGroupName()); reportService.resumeJob(j.getPk().getJobName(), group.getGroupName()); assertTrue(reportService.isJobActive(j.getPk().getJobName(), group.getGroupName())); } catch (SchedulerException e) { e.printStackTrace(); fail(e.getMessage()); } } public void testGetNextRunTime() { try { Date next=reportService.getNextRunTime(j.getPk().getJobName(), group.getGroupName()); assertTrue(next.getTime()>Calendar.getInstance().getTimeInMillis()); } catch (SchedulerException e) { e.printStackTrace(); fail(e.getMessage()); } } public void testPauseGroup() { try { reportService.pauseGroup(group.getGroupName()); assertFalse(reportService.isJobActive(j.getPk().getJobName(), group.getGroupName())); reportService.resumeGroup(group.getGroupName()); } catch (SchedulerException e) { e.printStackTrace(); fail(e.getMessage()); } } public void testResumeGroup() { try { reportService.pauseGroup(group.getGroupName()); reportService.resumeGroup(group.getGroupName()); assertTrue(reportService.isJobActive(j.getPk().getJobName(), group.getGroupName())); } catch (SchedulerException e) { e.printStackTrace(); fail(e.getMessage()); } } }