use of org.ow2.proactive.scheduler.common.job.JobInfo in project scheduling by ow2-proactive.
the class RecoveredSchedulerStateTest method createJob.
public InternalJob createJob(JobStatus jobStatus, int id) {
InternalTaskFlowJob job = new InternalTaskFlowJob("MyJob", JobPriority.HIGH, OnTaskError.CANCEL_JOB, "Description");
InternalScriptTask internalScriptTask = new InternalScriptTask(job);
job.addTasks(ImmutableList.<InternalTask>of(internalScriptTask));
job.setId(JobIdImpl.makeJobId("" + id));
JobInfoImpl jobInfo = (JobInfoImpl) job.getJobInfo();
jobInfo.setStatus(jobStatus);
return job;
}
use of org.ow2.proactive.scheduler.common.job.JobInfo in project scheduling by ow2-proactive.
the class TestLoadJobsPagination method testSorting.
@Test
public void testSorting() throws Exception {
// 1
InternalJob job1 = defaultSubmitJob(createJob("A", JobPriority.IDLE), "user_a");
// 2
defaultSubmitJob(createJob("B", JobPriority.LOWEST), "user_b");
// 3
InternalJob job3 = defaultSubmitJob(createJob("C", JobPriority.LOW), "user_c");
// 4
defaultSubmitJob(createJob("A", JobPriority.NORMAL), "user_d");
// 5
InternalJob job5 = defaultSubmitJob(createJob("B", JobPriority.HIGH), "user_e");
// 6
defaultSubmitJob(createJob("C", JobPriority.HIGHEST), "user_f");
// change status for some jobs
job1.failed(null, JobStatus.KILLED);
dbManager.updateAfterJobKilled(job1, Collections.<TaskId>emptySet());
job3.setPaused();
dbManager.updateJobAndTasksState(job3);
job5.start();
InternalTask taskJob5 = startTask(job5, job5.getITasks().get(0));
dbManager.jobTaskStarted(job5, taskJob5, true);
List<JobInfo> jobs;
jobs = dbManager.getJobs(0, 10, null, true, true, true, sortParameters(new SortParameter<>(JobSortParameter.ID, SortOrder.ASC))).getList();
checkJobs(jobs, 1, 2, 3, 4, 5, 6);
jobs = dbManager.getJobs(0, 10, null, true, true, true, sortParameters(new SortParameter<>(JobSortParameter.ID, SortOrder.DESC))).getList();
checkJobs(jobs, 6, 5, 4, 3, 2, 1);
jobs = dbManager.getJobs(0, 10, null, true, true, true, sortParameters(new SortParameter<>(JobSortParameter.NAME, SortOrder.ASC), new SortParameter<>(JobSortParameter.ID, SortOrder.ASC))).getList();
checkJobs(jobs, 1, 4, 2, 5, 3, 6);
jobs = dbManager.getJobs(0, 10, null, true, true, true, sortParameters(new SortParameter<>(JobSortParameter.NAME, SortOrder.ASC), new SortParameter<>(JobSortParameter.ID, SortOrder.DESC))).getList();
checkJobs(jobs, 4, 1, 5, 2, 6, 3);
jobs = dbManager.getJobs(0, 10, null, true, true, true, sortParameters(new SortParameter<>(JobSortParameter.OWNER, SortOrder.ASC))).getList();
checkJobs(jobs, 1, 2, 3, 4, 5, 6);
jobs = dbManager.getJobs(0, 10, null, true, true, true, sortParameters(new SortParameter<>(JobSortParameter.OWNER, SortOrder.DESC))).getList();
checkJobs(jobs, 6, 5, 4, 3, 2, 1);
jobs = dbManager.getJobs(0, 10, null, true, true, true, sortParameters(new SortParameter<>(JobSortParameter.PRIORITY, SortOrder.ASC))).getList();
checkJobs(jobs, 1, 2, 3, 4, 5, 6);
jobs = dbManager.getJobs(0, 10, null, true, true, true, sortParameters(new SortParameter<>(JobSortParameter.PRIORITY, SortOrder.DESC))).getList();
checkJobs(jobs, 6, 5, 4, 3, 2, 1);
jobs = dbManager.getJobs(0, 10, null, true, true, true, sortParameters(new SortParameter<>(JobSortParameter.STATE, SortOrder.ASC), new SortParameter<>(JobSortParameter.ID, SortOrder.ASC))).getList();
checkJobs(jobs, 2, 4, 6, 3, 5, 1);
jobs = dbManager.getJobs(0, 10, null, true, true, true, sortParameters(new SortParameter<>(JobSortParameter.STATE, SortOrder.DESC), new SortParameter<>(JobSortParameter.ID, SortOrder.ASC))).getList();
checkJobs(jobs, 1, 3, 5, 2, 4, 6);
}
use of org.ow2.proactive.scheduler.common.job.JobInfo in project scheduling by ow2-proactive.
the class TestLoadJobsPagination method testPagingAndFilteting.
@Test
public void testPagingAndFilteting() throws Exception {
InternalJob job;
InternalTask task;
// pending job - 1
defaultSubmitJob(createJob());
// job for user1 - 2
defaultSubmitJob(createJob(), "user1");
// running job - 3
job = defaultSubmitJob(createJob());
job.start();
task = startTask(job, job.getITasks().get(0));
dbManager.jobTaskStarted(job, task, true);
// killed job - 4
job = defaultSubmitJob(createJob());
job.failed(null, JobStatus.KILLED);
dbManager.updateAfterJobKilled(job, Collections.<TaskId>emptySet());
// job for user2 - 5
defaultSubmitJob(createJob(), "user2");
// finished job - 6
job = defaultSubmitJob(createJob());
job.start();
task = startTask(job, job.getITasks().get(0));
dbManager.jobTaskStarted(job, task, true);
TaskResultImpl result = new TaskResultImpl(null, new TestResult(0, "result"), null, 0);
job.terminateTask(false, task.getId(), null, null, result);
job.terminate();
dbManager.updateAfterTaskFinished(job, task, new TaskResultImpl(null, new TestResult(0, "result"), null, 0));
// canceled job - 7
job = defaultSubmitJob(createJob());
job.failed(job.getITasks().get(0).getId(), JobStatus.CANCELED);
dbManager.updateAfterJobKilled(job, Collections.<TaskId>emptySet());
// job marked as removed, method 'getJobs' shouldn't return it
job = defaultSubmitJob(createJob());
dbManager.removeJob(job.getId(), System.currentTimeMillis(), false);
List<JobInfo> jobs;
List<SortParameter<JobSortParameter>> sortParameters = new ArrayList<>();
sortParameters.add(new SortParameter<>(JobSortParameter.ID, SortOrder.ASC));
jobs = dbManager.getJobs(5, 1, null, true, true, true, sortParameters).getList();
JobInfo jobInfo = jobs.get(0);
Assert.assertEquals("6", jobInfo.getJobId().value());
Assert.assertEquals(JobStatus.FINISHED, jobInfo.getStatus());
Assert.assertEquals("TestLoadJobsPagination", jobInfo.getJobId().getReadableName());
Assert.assertEquals(1, jobInfo.getTotalNumberOfTasks());
Assert.assertEquals(1, jobInfo.getNumberOfFinishedTasks());
Assert.assertEquals(0, jobInfo.getNumberOfRunningTasks());
Assert.assertEquals(0, jobInfo.getNumberOfPendingTasks());
Assert.assertEquals(JobPriority.NORMAL, jobInfo.getPriority());
Assert.assertEquals(DEFAULT_USER_NAME, jobInfo.getJobOwner());
jobs = dbManager.getJobs(0, 10, null, true, true, true, sortParameters).getList();
checkJobs(jobs, 1, 2, 3, 4, 5, 6, 7);
jobs = dbManager.getJobs(-1, -1, null, true, true, true, sortParameters).getList();
checkJobs(jobs, 1, 2, 3, 4, 5, 6, 7);
jobs = dbManager.getJobs(-1, 5, null, true, true, true, sortParameters).getList();
checkJobs(jobs, 1, 2, 3, 4, 5);
jobs = dbManager.getJobs(2, -1, null, true, true, true, sortParameters).getList();
checkJobs(jobs, 3, 4, 5, 6, 7);
jobs = dbManager.getJobs(0, 0, null, true, true, true, sortParameters).getList();
checkJobs(jobs, 1, 2, 3, 4, 5, 6, 7);
jobs = dbManager.getJobs(0, 1, null, true, true, true, sortParameters).getList();
checkJobs(jobs, 1);
jobs = dbManager.getJobs(0, 3, null, true, true, true, sortParameters).getList();
checkJobs(jobs, 1, 2, 3);
jobs = dbManager.getJobs(1, 10, null, true, true, true, sortParameters).getList();
checkJobs(jobs, 2, 3, 4, 5, 6, 7);
jobs = dbManager.getJobs(5, 10, null, true, true, true, sortParameters).getList();
checkJobs(jobs, 6, 7);
jobs = dbManager.getJobs(6, 10, null, true, true, true, sortParameters).getList();
checkJobs(jobs, 7);
jobs = dbManager.getJobs(7, 10, null, true, true, true, sortParameters).getList();
checkJobs(jobs);
jobs = dbManager.getJobs(0, 10, DEFAULT_USER_NAME, true, true, true, sortParameters).getList();
checkJobs(jobs, 1, 3, 4, 6, 7);
jobs = dbManager.getJobs(0, 10, "user1", true, true, true, sortParameters).getList();
checkJobs(jobs, 2);
jobs = dbManager.getJobs(0, 10, DEFAULT_USER_NAME, true, false, false, sortParameters).getList();
checkJobs(jobs, 1);
jobs = dbManager.getJobs(0, 10, DEFAULT_USER_NAME, false, true, false, sortParameters).getList();
checkJobs(jobs, 3);
jobs = dbManager.getJobs(0, 10, DEFAULT_USER_NAME, false, false, true, sortParameters).getList();
checkJobs(jobs, 4, 6, 7);
jobs = dbManager.getJobs(0, 10, DEFAULT_USER_NAME, false, true, true, sortParameters).getList();
checkJobs(jobs, 3, 4, 6, 7);
jobs = dbManager.getJobs(0, 10, DEFAULT_USER_NAME, true, false, true, sortParameters).getList();
checkJobs(jobs, 1, 4, 6, 7);
jobs = dbManager.getJobs(0, 10, DEFAULT_USER_NAME, true, true, false, sortParameters).getList();
checkJobs(jobs, 1, 3);
jobs = dbManager.getJobs(0, 10, DEFAULT_USER_NAME, false, false, false, sortParameters).getList();
checkJobs(jobs);
}
use of org.ow2.proactive.scheduler.common.job.JobInfo in project scheduling by ow2-proactive.
the class TestKillTaskWhileExecutingScripts method submitAndCheckJob.
private void submitAndCheckJob(Job job, String tname) throws Exception {
// test submission and event reception
FileUtils.deleteQuietly(EndlessExecutable.STARTED_FILE);
JobId id = schedulerHelper.submitJob(job);
log("Job submitted, id " + id.toString());
log("Waiting for jobSubmitted Event");
Job receivedJob = schedulerHelper.waitForEventJobSubmitted(id);
assertEquals(receivedJob.getId(), id);
log("Waiting for job running");
JobInfo jInfo = schedulerHelper.waitForEventJobRunning(id);
log("Waiting for task " + tname + " running");
schedulerHelper.waitForEventTaskRunning(id, tname);
assertEquals(jInfo.getJobId(), id);
log("Waiting until file marker is created");
while (!EndlessExecutable.STARTED_FILE.exists()) {
Thread.sleep(50);
}
log("Kill job");
assertTrue(schedulerHelper.killJob(id.toString()));
schedulerHelper.checkNodesAreClean();
}
use of org.ow2.proactive.scheduler.common.job.JobInfo in project scheduling by ow2-proactive.
the class RunningTaskRecoveryWhenNodesAreReservedInBatchTest method action.
@Test
public void action() throws Throwable {
nodes = schedulerHelper.createRMNodeStarterNodes(RunningTaskRecoveryWhenNodesAreReservedInBatchTest.class.getSimpleName(), NB_NODES);
for (int i = 0; i < NB_NODES; i++) {
schedulerHelper.waitForAnyNodeEvent(RMEventType.NODE_ADDED);
}
JobId jobid = schedulerHelper.submitJob(new File(JOB_DESCRIPTOR.toURI()).getAbsolutePath());
schedulerHelper.waitForEventJobRunning(jobid);
schedulerHelper.waitForEventTaskFinished(jobid, "Groovy_Task");
JobState jobState = schedulerHelper.getSchedulerInterface().getJobState(jobid);
SchedulerTHelper.log("Total number of tasks: " + jobState.getTotalNumberOfTasks());
List<TaskState> tasks = jobState.getTasks();
TaskState fifthTask = tasks.get(5);
SchedulerTHelper.log("Wait for the fifth task running");
// we wait for the fifth task to be running so that when we kill the
// scheduler we have a mix of pending/submitted/running tasks
schedulerHelper.waitForEventTaskRunning(fifthTask.getJobId(), fifthTask.getName());
SchedulerTHelper.log("Fifth task is running");
// restart scheduler
printRmStateAndReturnNotFreeNodeNumber();
printJobStateAndReturnNumberOfRunningTasks(jobid);
TestScheduler.kill();
schedulerHelper = new SchedulerTHelper(false, new File(SCHEDULER_CONFIGURATION_RESTART.toURI()).getAbsolutePath(), new File(RM_CONFIGURATION_RESTART.toURI()).getAbsolutePath(), null, false);
SchedulerTHelper.log("Wait for job to finish");
JobInfo jobInfo = schedulerHelper.waitForEventJobFinished(jobid);
assertThat(jobInfo.getNumberOfFailedTasks()).isEqualTo(0);
assertThat(jobInfo.getNumberOfInErrorTasks()).isEqualTo(0);
// wait for all nodes released
while (printRmStateAndReturnNotFreeNodeNumber() != 0) {
schedulerHelper.waitForAnyNodeEvent(RMEventType.NODE_STATE_CHANGED);
}
// all nodes should be free now
int notFreeNodeNumber = printRmStateAndReturnNotFreeNodeNumber();
assertThat(notFreeNodeNumber).isEqualTo(0);
}
Aggregations