/** * Helper query (directly uses {@link Query}). Gives the count of all non-ended (waiting in queue, running...) job instances. */ public int getQueueAllCount() { return Query.create().setQueryHistoryInstances(false).setQueryLiveInstances(true).run().size(); }
/** * Helper query (directly uses {@link Query}). Gives the count of all non-ended (waiting in queue, running...) job instances. */ public int getQueueAllCount() { return Query.create().setQueryHistoryInstances(false).setQueryLiveInstances(true).run().size(); }
@Override public List<com.enioka.jqm.api.JobInstance> getJobs() { return Query.create().setQueryHistoryInstances(true).setQueryLiveInstances(true).run(); }
@Override public void waitChild(int id) { JqmClient c = getJqmClient(); Query q = Query.create().setQueryHistoryInstances(false).setQueryLiveInstances(true).setJobInstanceId(id); while (!c.getJobs(q).isEmpty()) { try { Thread.sleep(1000); handleInstructions(); } catch (InterruptedException e) { Thread.currentThread().interrupt(); break; } } }
@Override public void waitChild(int id) { JqmClient c = getJqmClient(); Query q = Query.create().setQueryHistoryInstances(false).setQueryLiveInstances(true).setJobInstanceId(id); while (!c.getJobs(q).isEmpty()) { try { Thread.sleep(1000); handleInstructions(); } catch (InterruptedException e) { Thread.currentThread().interrupt(); break; } } }
@Override public List<com.enioka.jqm.api.JobInstance> getActiveJobs() { return Query.create().setQueryHistoryInstances(false).setQueryLiveInstances(true).addSortAsc(Sort.ID).run(); }
@Override public void waitChildren() { JqmClient c = getJqmClient(); Query q = Query.create().setQueryHistoryInstances(false).setQueryLiveInstances(true).setParentId(ji.getId()); while (!c.getJobs(q).isEmpty()) { try { Thread.sleep(1000); handleInstructions(); } catch (InterruptedException e) { Thread.currentThread().interrupt(); break; } } }
@Override public void waitChildren() { JqmClient c = getJqmClient(); Query q = Query.create().setQueryHistoryInstances(false).setQueryLiveInstances(true).setParentId(ji.getId()); while (!c.getJobs(q).isEmpty()) { try { Thread.sleep(1000); handleInstructions(); } catch (InterruptedException e) { Thread.currentThread().interrupt(); break; } } }
@Override public List<com.enioka.jqm.api.JobInstance> getUserActiveJobs(String user) { if (user == null || user.isEmpty()) { throw new JqmInvalidRequestException("user cannot be null or empty"); } return Query.create().setUser(user).setQueryHistoryInstances(false).setQueryLiveInstances(true).addSortAsc(Sort.ID).run(); }
return Query.create().setJobInstanceId(idJob).setQueryHistoryInstances(true).setQueryLiveInstances(true).run().get(0);
@Test public void testQuery() throws Exception { CreationTools.createJobDef(null, true, "pyl.KillMe", null, "jqm-tests/jqm-test-pyl/target/test.jar", TestHelpers.qNormal, 42, "jqm-test-kill", null, "Franquin", "ModuleMachin", "other", "other", false, cnx); cnx.commit(); JqmClientFactory.getClient().enqueue("jqm-test-kill", "test"); JqmClientFactory.getClient().enqueue("jqm-test-kill", "test"); JqmClientFactory.getClient().enqueue("jqm-test-kill", "test"); JqmClientFactory.getClient().enqueue("jqm-test-kill", "test"); JqmClientFactory.getClient().enqueue("jqm-test-kill", "test"); jqmlogger.debug("COUNT RUNNING " + cnx.runSelectSingle("ji_select_count_running", Integer.class)); jqmlogger.debug("COUNT ALL " + cnx.runSelectSingle("ji_select_count_all", Integer.class)); Assert.assertEquals(0, Query.create().setQueryLiveInstances(true).setQueryHistoryInstances(false) .addStatusFilter(com.enioka.jqm.api.State.RUNNING).addStatusFilter(com.enioka.jqm.api.State.ENDED).run().size()); Assert.assertEquals(5, Query.create().setQueryLiveInstances(true).setQueryHistoryInstances(false) .addStatusFilter(com.enioka.jqm.api.State.SUBMITTED).run().size()); }
@Test public void testPauseInQueue() throws Exception { CreationTools.createJobDef(null, true, "App", null, "jqm-tests/jqm-test-datetimemaven/target/test.jar", TestHelpers.qVip, 42, "MarsuApplication", null, "Franquin", "ModuleMachin", "other", "other", false, cnx); int i = JobRequest.create("MarsuApplication", "TestUser").submit(); JqmClientFactory.getClient().pauseQueuedJob(i); JobRequest.create("MarsuApplication", "TestUser").submit(); addAndStartEngine(); TestHelpers.waitFor(1, 5000, cnx); List<JobInstance> res1 = Query.create().addSortAsc(Sort.DATEENQUEUE).run(); List<JobInstance> res2 = Query.create().addSortAsc(Sort.DATEENQUEUE).setQueryHistoryInstances(false).setQueryLiveInstances(true) .run(); Assert.assertEquals(1, res1.size()); Assert.assertEquals(1, res2.size()); Assert.assertEquals(State.HOLDED, res2.get(0).getState()); Assert.assertEquals(State.ENDED, res1.get(0).getState()); }
Assert.assertEquals(3, Query.create().setQueryLiveInstances(true).setQueryHistoryInstances(false) .addStatusFilter(com.enioka.jqm.api.State.RUNNING).run().size()); Assert.assertEquals(1, Query.create().setQueryLiveInstances(true).setQueryHistoryInstances(false) .addStatusFilter(com.enioka.jqm.api.State.SUBMITTED).run().size()); List<JobInstance> running = Query.create().setQueryLiveInstances(true).setQueryHistoryInstances(false) .addStatusFilter(com.enioka.jqm.api.State.RUNNING).run(); JqmClientFactory.getClient().killJob(running.get(0).getId()); Assert.assertEquals(3, Query.create().setQueryLiveInstances(true).setQueryHistoryInstances(false) .addStatusFilter(com.enioka.jqm.api.State.RUNNING).run().size()); Assert.assertEquals(0, Query.create().setQueryLiveInstances(true).setQueryHistoryInstances(false) .addStatusFilter(com.enioka.jqm.api.State.SUBMITTED).run().size()); running = Query.create().setQueryLiveInstances(true).setQueryHistoryInstances(false) .addStatusFilter(com.enioka.jqm.api.State.RUNNING).run(); JqmClientFactory.getClient().killJob(running.get(0).getId());
Assert.assertEquals(3, Query.create().setQueryLiveInstances(true).setQueryHistoryInstances(false) .addStatusFilter(com.enioka.jqm.api.State.RUNNING).run().size()); Assert.assertEquals(2, Query.create().setQueryLiveInstances(true).setQueryHistoryInstances(false) .addStatusFilter(com.enioka.jqm.api.State.SUBMITTED).run().size()); Assert.assertEquals(3, Query.create().setQueryLiveInstances(true).setQueryHistoryInstances(false) .addStatusFilter(com.enioka.jqm.api.State.RUNNING).run().size()); Assert.assertEquals(0, Query.create().setQueryLiveInstances(true).setQueryHistoryInstances(false) .addStatusFilter(com.enioka.jqm.api.State.SUBMITTED).run().size());
sleep(1); // Additional - check no more than two running! List<com.enioka.jqm.api.JobInstance> res = Query.create().setQueryLiveInstances(true).setQueryHistoryInstances(false) .addSortAsc(Sort.ID).run();
int toKill = Query.create().setQueryHistoryInstances(false).setQueryLiveInstances(true).addStatusFilter(State.RUNNING).run().get(0) .getId(); JqmClientFactory.getClient().killJob(toKill); for (JobInstance ji : Query.create().setQueryHistoryInstances(false).setQueryLiveInstances(true).addStatusFilter(State.RUNNING) .run())