@Test public void testGetJobs() { List<JobSpec> expected = new ArrayList<>(); for (String aName : new String[]{ "Allen Ginsberg", "Louis Gluck"}) { JobSpec aJob = TestAgent.getTestJob(aName, dao); try { dao.createJob(aJob); } catch (Exception ex) { ex.printStackTrace(); } expected.add(aJob); } List<JobSpec> actual = dao.getJobs(); assertEquals(expected, actual); }
public void run() { for (int i = 0; i < size; i++) { JobSpec job = TestAgent.getTestJob(UUID.randomUUID().toString(), dao); long id = dao.createJob(job); job = dao.getJob(id); PlannedJob aJob = new PlannedJob(job, Utils.getCurrentTime()); try { dao.addToQueue(aJob); } catch (Exception ex) { ex.printStackTrace(); } expected.add(aJob); } } };
public static JobSpec getTestScript(String aName, JobDao dao) { JobSpec aJob = getTestJob(aName, dao); aJob.setType(JobType.Script); aJob.setCode("echo 'beep';"); aJob.setResultTable(null); return aJob; }
@Test public void testBasicDependent() { JobSpec expected = TestAgent.getTestJob("Mrs Dalloway", dao); JobSpec childJob = TestAgent.getTestJob("A child", dao); try { dao.createJob(expected); childJob.setParent(expected.getId()); dao.createJob(childJob); } catch (Exception ex) { ex.printStackTrace(); } JobSpec actual = dao.getJob(expected.getId()); assertEquals(expected, actual); }
@Test public void testBasic() { JobSpec expected = TestAgent.getTestJob("William Faulkner", dao); try { dao.createJob(expected); } catch (Exception ex) { ex.printStackTrace(); } JobSpec actual = dao.getJob(expected.getId()); assertEquals(expected, actual); }
@Test public void updateJob() { JobSpec expected = TestAgent.getTestJob("Thomas Bernhard", dao); try { dao.createJob(expected); expected.setDescription("The Woodcutters"); Thread.sleep(10); dao.updateJob(expected); } catch (Exception ex) { ex.printStackTrace(); } JobSpec actual = dao.getJob(expected.getId()); assertEquals(expected, actual); }
@Test(timeout=10000) public void testBasicLarge() throws Exception { int count = 100; for (int i = 1; i <= count; i++) { JobSpec aJob = getTestJob(String.valueOf(i), dao); try { dao.createJob(aJob); } catch (Exception ex) { ex.printStackTrace(); } } runRunnable(agentDriver); assertEquals(count, dao.getQueue(null).size()); waitUntilJobsFinished(consumer, count); assertEquals(0, dao.getQueue(null).size()); assertEquals(count, dao.getJobRuns(null, count).size()); assertEquals(0, consumer.getFailedQueries(count).size()); assertEquals(count, consumer.getFinishedJobs(count).size()); assertEquals(count, consumer.getSuccesfulQueries(count).size()); }
@Test public void deleteJob() { JobSpec expected = TestAgent.getTestJob("Jane Austen", dao); try { dao.createJob(expected); expected.setName("Virginia Woolf"); Thread.sleep(10); dao.updateJob(expected); dao.deleteJob(expected.getId()); } catch (Exception ex) { ex.printStackTrace(); } JobSpec actual = dao.getJob(expected.getId()); assertEquals(null, actual); }
@Test public void testBasicDependent() throws Exception { String jobName = "TE Lawrence"; JobSpec parent = getTestJob(jobName, dao); JobSpec child = getTestJob(jobName + " arabia", dao); child.setCronString(null); try { dao.createJob(parent); child.setParent(parent.getId()); long id = dao.createJob(child); } catch (Exception ex) { ex.printStackTrace(); } TestAgent.runRunnable(agentDriver); assertEquals(1, dao.getQueue(null).size()); runRunnable(consumer); Thread.sleep(100); // child job should have been queued assertEquals(1, dao.getQueue(null).size()); runRunnable(consumer); waitUntilJobsFinished(consumer, 2); assertEquals(2, consumer.getSuccesfulQueries(AgentConsumer.LIMIT_JOB_RUNS) .values().size()); } }
@Test public void testQueueLarge() { int count = 1000; for (int i = 1; i <= count; i++) { JobSpec aJob = TestAgent.getTestJob("Vincent Van Gogh", dao); long id = dao.createJob(aJob); aJob = dao.getJob(id); PlannedJob pj = new PlannedJob(aJob, Utils.getCurrentTime()); dao.addToQueue(pj); } assertEquals(count, dao.getQueue(null).size()); }
@Test public void testQueueJob() throws Exception { JobSpec job = TestAgent.getTestJob("blah", dao); long id = dao.createJob(job); job = dao.getJob(id); PlannedJob aJob = new PlannedJob(job, Utils.getCurrentTime()); List<PlannedJob> expected = new ArrayList<>(); expected.add(aJob); try { dao.addToQueue(aJob); } catch (Exception ex) { ex.printStackTrace(); } List<PlannedJob> actual = dao.getQueue(aJob.getJobSpec().getId()); assertEquals(expected, actual); PlannedJob actualPJ = null; try { actualPJ = dao.removeFromQueue(); } catch (Exception ex) { ex.printStackTrace(); } assertEquals(aJob, actualPJ); expected = new ArrayList<>(); actual = dao.getQueue(null); assertEquals(expected, actual); }
@Test public void testPersistJobRuns() { JobSpec aJob = TestAgent.getTestJob("Roxane Gay", dao); dao.createJob(aJob); PlannedJob pj = new PlannedJob(aJob, Utils.getCurrentTime()); CallableJob cj = new CallableQuery(pj, dao, reporting, "example.com", mailInfo, null, drivers.get(0), null, 1); consumer.submitJob(cj); TestAgent.waitUntilJobsFinished(consumer, 1); assertEquals(1, consumer.getSuccesfulQueries(limit).size()); // Let job run and result doesn't matter // Now we should be able to get job history from a new consumer // and the job above should exist! JobDao local = new H2TestJobDaoImpl(); local.setDataSource(H2TestUtil.getDataSource()); assertEquals(1, local.getJobRuns(null, AgentConsumer.LIMIT_JOB_RUNS).values().size()); }
@Test public void testGetJobVersions() { JobSpec expected = TestAgent.getTestJob("Franz Kafka", dao); try { dao.createJob(expected); expected = dao.getJob(expected.getId()); expected.setDescription("Metamorphosis"); dao.updateJob(expected); } catch (Exception ex) { ex.printStackTrace(); } JobSpec actual = dao.getJob(expected.getId()); assertEquals(expected, actual); List<JobSpec> versions = dao.getJobVersions(actual.getId()); assertEquals(2, versions.size()); }
@Test(timeout=2000) public void testBasic() throws Exception { String jobName = "Jean Paul Sartre"; for (JobSpec aJob : new JobSpec[]{ getTestJob(jobName, dao), getTestScript(jobName, dao) }) { aJob.setResultTable(null); try { dao.createJob(aJob); } catch (Exception ex) { ex.printStackTrace(); } runRunnable(agentDriver); List<PlannedJob> expected = new ArrayList<>(); expected.add(new PlannedJob(aJob, Utils.getCurrentTime())); assertEquals(expected, dao.getQueue(aJob.getId())); expected.clear(); runRunnable(consumer); assertEquals(expected, dao.getQueue(null)); dao.deleteJob(aJob.getId()); } }
@Test public void testCleanupPreviouslyRunningJobs() { JobSpec aJob = TestAgent.getTestJob("Mary Wollstonecraft", dao); long id = dao.createJob(aJob); PlannedJob pj = new PlannedJob(dao.getJob(id), Utils.getCurrentTime()); SleepyCallableQuery cj = new SleepyCallableQuery( pj, dao, reporting, "example.com", mailInfo, null, null, drivers.get(0), 1, 10000); consumer.submitJob(cj); doSleep(); assertEquals(0, consumer.getFailedQueries(limit).size()); assertEquals(1, dao.getRunningJobs().size()); AgentConsumer.cleanupPreviouslyRunningJobs(dao, dao.getRunningJobs()); assertEquals(0, dao.getRunningJobs().size()); assertEquals(1, consumer.getFailedQueries(limit).size()); }
@Test(timeout=2000) public void testBasicWithFail() throws Exception { String resultTable = "SHOULDNT_EXIST"; // make sure table doesn't exist dropTable(resultTable); JobSpec aJob = getTestJob("Michael Scott", dao); aJob.setResultTable(resultTable); // Second query should not be executed since the first one fails aJob.setCode("select * from something_that_fails; " + String.format("CREATE TABLE %s AS SELECT time, url, type FROM %s;", aJob.getResultTable(), H2TestJobDaoImpl.testTableName)); try { dao.createJob(aJob); } catch (Exception ex) { ex.printStackTrace(); } runRunnable(agentDriver); List<PlannedJob> expected = new ArrayList<>(); expected.add(new PlannedJob(aJob, Utils.getCurrentTime())); assertEquals(expected, dao.getQueue(aJob.getId())); expected.clear(); runRunnable(consumer); assertEquals(expected, dao.getQueue(null)); List<String> actual = getResults(aJob); assertEquals(new ArrayList<String>(), actual); assertEquals(false, dao.showTables().contains(resultTable)); }
@Test public void testReplacedReportQuery() { JobSpec aJob = TestAgent.getTestJob("Mark Rothko", dao); aJob.setResultQuery("select * from blah where dt=${YYYMMDDHH}"); dao.createJob(aJob); PlannedJob pj = new PlannedJob(aJob, Utils.getCurrentTime()); CallableQuery cq = new CallableQuery(pj, dao, null, "example.com", null, null, null, null, 1); String expected = "select * from blah where dt=1970010100"; Assert.assertEquals(expected, cq.getReplacedReportQuery()); }
@Test public void testGetFailedQueries() { JobSpec aJob = TestAgent.getTestJob("David Foster Wallace", dao); aJob.setCode("not a valid query..."); dao.createJob(aJob); PlannedJob pj = new PlannedJob(aJob, Utils.getCurrentTime()); CallableJob cj = new CallableQuery(pj, dao, reporting, "example.com", mailInfo, null, drivers.get(0), null, 1); consumer.submitJob(cj); TestAgent.waitForFail(consumer, 1); boolean isSuccess = cj.isSuccess(); assertEquals(false, isSuccess); assertEquals(true, cj.isDone()); Map<Long, CallableJob> expected = new HashMap<>(); expected.put(cj.getJobId(), cj); assertEquals(expected, consumer.getFailedQueries(limit)); assertEquals(1, consumer.getFinishedJobs(limit).size()); }
@Test public void testJobNoResubmit() throws BackendException { consumer.SLEEP_FOR = 1; JobSpec aJob = TestAgent.getTestJob("Hannah Arendt", dao); aJob.setCode("not a valid query..."); aJob.setShouldRerun(false); dao.createJob(aJob); PlannedJob pj = new PlannedJob(aJob, Utils.getCurrentTime()); CallableJob cj = new CallableQuery(pj, dao, reporting, "example.com", mailInfo, null, drivers.get(0), null, 1); consumer.submitJob(cj); // let the job run and fail TestAgent.waitUntilJobsFinished(consumer, 1); boolean isSuccess = cj.isSuccess(); assertEquals(false, isSuccess); Map<Long, CallableJob> expected = new HashMap<>(); expected.put(cj.getJobId(), cj); assertEquals(expected, consumer.getFailedQueries(limit)); // See if the job retries TestAgent.runRunnable(consumer); TestAgentConsumer.doSleep(); assertEquals(0, dao.getRunningJobs().size()); Map<Long, CallableJob> jobRuns = dao.getJobRuns(null, AgentConsumer.LIMIT_JOB_RUNS); assertEquals("jobRuns: " + jobRuns, 1, jobRuns.values().size()); assertEquals(1, consumer.getFinishedJobs(limit).size()); assertEquals(0, consumer.getSuccesfulQueries(limit).size()); }
@Test public void testCancelPendingJob() throws BackendException { JobSpec aJob = TestAgent.getTestJob("Foucault", dao); aJob.setShouldRerun(true); long id = dao.createJob(aJob); PlannedJob pj = new PlannedJob(dao.getJob(id), Utils.getCurrentTime()); dao.addToQueue(pj); int actual = dao.cancelJob(pj); assertEquals(1, actual); actual = dao.cancelJob(pj); assertEquals(0, actual); TestAgent.runRunnable(consumer); assertEquals(0, dao.getRunningJobs().size()); assertEquals(0, consumer.getFinishedJobs(limit).size()); assertEquals(0, consumer.getSuccesfulQueries(limit).size()); assertEquals(0, consumer.getFailedQueries(limit).size()); }