use of org.ow2.proactive.scheduler.common.job.JobInfo in project scheduling by ow2-proactive.
the class TestPreemptRestartKillTask method TestPreemtRestartKillTask.
private void TestPreemtRestartKillTask(String jobDescriptorPath) throws Exception {
log("Submitting job");
log(schedulerHelper.getSchedulerInterface().getClass().toString());
schedulerHelper.addExtraNodes(3);
JobId id = schedulerHelper.submitJob(jobDescriptorPath);
log("Wait for event job submitted");
schedulerHelper.waitForEventJobSubmitted(id);
log("Wait for event t1 running");
schedulerHelper.waitForEventTaskRunning(id, "t1");
log("Wait for event t2 running");
schedulerHelper.waitForEventTaskRunning(id, "t2");
log("Wait for event t3 running");
schedulerHelper.waitForEventTaskRunning(id, "t3");
log("Wait for event t4 running");
schedulerHelper.waitForEventTaskRunning(id, "t4");
log("Preempt t1");
schedulerHelper.getSchedulerInterface().preemptTask(id, "t1", 1);
log("Wait for event t1 waiting for restart");
// running jobs list must have only one job, task t1 must have number of execution to 0
TaskInfo ti1 = schedulerHelper.waitForEventTaskWaitingForRestart(id, "t1");
// task result for t1 must be available with TaskPreemptedException
TaskResult tr1 = schedulerHelper.getSchedulerInterface().getTaskResult(id, "t1");
log("Restart t2");
schedulerHelper.getSchedulerInterface().restartTask(id, "t2", 1);
log("Wait for event t2 waiting for restart");
// running jobs list must have only one job, task t2 must have number of execution to 1
TaskInfo ti2 = schedulerHelper.waitForEventTaskWaitingForRestart(id, "t2");
// task result for t2 must be available with TaskRestartedException
TaskResult tr2 = schedulerHelper.getSchedulerInterface().getTaskResult(id, "t2");
log("Wait for event t2 running");
schedulerHelper.waitForEventTaskRunning(id, "t2");
log("Restart t2 again");
schedulerHelper.getSchedulerInterface().restartTask(id, "t2", 1);
log("Wait for event t2 waiting for restart again");
// running jobs list must have only one job, task t2 must have number of execution to 2
TaskInfo ti3 = schedulerHelper.waitForEventTaskWaitingForRestart(id, "t2");
// task result for t2 must be available with TaskRestartedException
TaskResult tr3 = schedulerHelper.getSchedulerInterface().getTaskResult(id, "t2");
// ensure every tasks are running at this point
schedulerHelper.waitForEventTaskRunning(id, "t1");
schedulerHelper.waitForEventTaskRunning(id, "t2");
log("Kill t3");
schedulerHelper.getSchedulerInterface().killTask(id, "t3");
log("Wait for event t3 finished");
schedulerHelper.waitForEventTaskFinished(id, "t3");
// task result for t3 must be available with TaskRestartedException
TaskResult tr4 = schedulerHelper.getSchedulerInterface().getTaskResult(id, "t3");
log("Kill t4");
schedulerHelper.getSchedulerInterface().killTask(id, "t4");
log("Wait for event job finished");
// finished jobs list must have only one job
JobInfo ji4 = schedulerHelper.waitForEventJobFinished(id);
// task result for t4 must be TaskRestartedException
JobState j4 = schedulerHelper.getSchedulerInterface().getJobState(id);
TaskResult tr5 = schedulerHelper.getSchedulerInterface().getTaskResult(id, "t4");
// check result j1
assertEquals(2, ti1.getNumberOfExecutionLeft());
assertTrue(tr1.getException() instanceof TaskPreemptedException);
// check result j2
assertEquals(3, ti2.getNumberOfExecutionLeft());
assertTrue(tr2.getException() instanceof TaskRestartedException);
// check result j3
assertEquals(2, ti3.getNumberOfExecutionLeft());
assertTrue(tr3.getException() instanceof TaskRestartedException);
// check result tr4
assertTrue(tr4.getException() instanceof TaskAbortedException);
// check result j4
assertEquals(JobStatus.CANCELED, ji4.getStatus());
TaskStatus t1Status = getTask(j4, "t1").getStatus();
assertTrue(t1Status.equals(TaskStatus.ABORTED) || t1Status.equals(TaskStatus.NOT_RESTARTED));
TaskStatus t2Status = getTask(j4, "t2").getStatus();
assertTrue(t2Status.equals(TaskStatus.ABORTED) || t2Status.equals(TaskStatus.NOT_RESTARTED));
assertEquals(TaskStatus.FAULTY, getTask(j4, "t3").getStatus());
assertEquals(TaskStatus.FAULTY, getTask(j4, "t4").getStatus());
// check result tr5
//
assertTrue(tr5.getException() instanceof Exception);
}
use of org.ow2.proactive.scheduler.common.job.JobInfo in project scheduling by ow2-proactive.
the class TestPreemptRestartKillTaskSchema33 method TestPreemtRestartKillTask.
private void TestPreemtRestartKillTask(String jobDescriptorPath) throws Exception {
log("Submitting job");
schedulerHelper.addExtraNodes(3);
JobId id = schedulerHelper.submitJob(jobDescriptorPath);
log("Wait for event job submitted");
schedulerHelper.waitForEventJobSubmitted(id);
log("Wait for event t1 running");
schedulerHelper.waitForEventTaskRunning(id, "t1");
log("Wait for event t2 running");
schedulerHelper.waitForEventTaskRunning(id, "t2");
log("Wait for event t3 running");
schedulerHelper.waitForEventTaskRunning(id, "t3");
log("Wait for event t4 running");
schedulerHelper.waitForEventTaskRunning(id, "t4");
log("Preempt t1");
schedulerHelper.getSchedulerInterface().preemptTask(id, "t1", 1);
log("Wait for event t1 waiting for restart");
// running jobs list must have only one job, task t1 must have number of execution to 0
TaskInfo ti1 = schedulerHelper.waitForEventTaskWaitingForRestart(id, "t1");
// task result for t1 must be available with TaskPreemptedException
TaskResult tr1 = schedulerHelper.getSchedulerInterface().getTaskResult(id, "t1");
log("Restart t2");
schedulerHelper.getSchedulerInterface().restartTask(id, "t2", 1);
log("Wait for event t2 waiting for restart");
// running jobs list must have only one job, task t2 must have number of execution to 1
TaskInfo ti2 = schedulerHelper.waitForEventTaskWaitingForRestart(id, "t2");
// task result for t2 must be available with TaskRestartedException
TaskResult tr2 = schedulerHelper.getSchedulerInterface().getTaskResult(id, "t2");
log("Wait for event t2 running");
schedulerHelper.waitForEventTaskRunning(id, "t2");
log("Restart t2 again");
schedulerHelper.getSchedulerInterface().restartTask(id, "t2", 1);
log("Wait for event t2 waiting for restart again");
// running jobs list must have only one job, task t2 must have number of execution to 2
TaskInfo ti3 = schedulerHelper.waitForEventTaskWaitingForRestart(id, "t2");
// task result for t2 must be available with TaskRestartedException
TaskResult tr3 = schedulerHelper.getSchedulerInterface().getTaskResult(id, "t2");
// ensure every tasks are running at this point
schedulerHelper.waitForEventTaskRunning(id, "t1");
schedulerHelper.waitForEventTaskRunning(id, "t2");
log("Kill t3");
schedulerHelper.getSchedulerInterface().killTask(id, "t3");
log("Wait for event t3 finished");
schedulerHelper.waitForEventTaskFinished(id, "t3");
// task result for t3 must be available with TaskRestartedException
TaskResult tr4 = schedulerHelper.getSchedulerInterface().getTaskResult(id, "t3");
log("Kill t4");
schedulerHelper.getSchedulerInterface().killTask(id, "t4");
log("Wait for event job finished");
// finished jobs list must have only one job
JobInfo ji4 = schedulerHelper.waitForEventJobFinished(id);
// task result for t4 must be TaskRestartedException
JobState j4 = schedulerHelper.getSchedulerInterface().getJobState(id);
TaskResult tr5 = schedulerHelper.getSchedulerInterface().getTaskResult(id, "t4");
// check result j1
assertEquals(2, ti1.getNumberOfExecutionLeft());
assertTrue(tr1.getException() instanceof TaskPreemptedException);
// check result j2
assertEquals(3, ti2.getNumberOfExecutionLeft());
assertTrue(tr2.getException() instanceof TaskRestartedException);
// check result j3
assertEquals(2, ti3.getNumberOfExecutionLeft());
assertTrue(tr3.getException() instanceof TaskRestartedException);
// check result tr4
assertTrue(tr4.getException() instanceof TaskAbortedException);
// check result j4
assertEquals(JobStatus.CANCELED, ji4.getStatus());
TaskStatus t1Status = getTask(j4, "t1").getStatus();
assertTrue(t1Status.equals(TaskStatus.ABORTED) || t1Status.equals(TaskStatus.NOT_RESTARTED));
TaskStatus t2Status = getTask(j4, "t2").getStatus();
assertTrue(t2Status.equals(TaskStatus.ABORTED) || t2Status.equals(TaskStatus.NOT_RESTARTED));
assertEquals(TaskStatus.FAULTY, getTask(j4, "t3").getStatus());
assertEquals(TaskStatus.FAULTY, getTask(j4, "t4").getStatus());
// check result tr5
//
assertTrue(tr5.getException() instanceof Exception);
}
use of org.ow2.proactive.scheduler.common.job.JobInfo in project scheduling by ow2-proactive.
the class TestMultipleHostsRequest method testMultipleHostsRequest.
@Test
public void testMultipleHostsRequest() throws Throwable {
String task1Name = "task1";
switch(OperatingSystem.getOperatingSystem()) {
case windows:
// set system Property for executable path
System.setProperty(executablePathPropertyName, new File(executablePathWindows.toURI()).getAbsolutePath());
break;
case unix:
SchedulerTHelper.setExecutable(new File(executablePath.toURI()).getAbsolutePath());
// set system Property for executable path
System.setProperty(executablePathPropertyName, new File(executablePath.toURI()).getAbsolutePath());
break;
default:
throw new IllegalStateException("Unsupported operating system");
}
// test submission and event reception
TaskFlowJob job = (TaskFlowJob) StaxJobFactory.getFactory().createJob(new File(jobDescriptor.toURI()).getAbsolutePath());
JobId id = schedulerHelper.submitJob(job);
schedulerHelper.addExtraNodes(3);
log("Job submitted, id " + id.toString());
log("Waiting for jobSubmitted Event");
JobState receivedState = schedulerHelper.waitForEventJobSubmitted(id);
assertEquals(receivedState.getId(), id);
log("Waiting for job running");
JobInfo jInfo = schedulerHelper.waitForEventJobRunning(id);
assertEquals(jInfo.getJobId(), id);
assertEquals(JobStatus.RUNNING, jInfo.getStatus());
schedulerHelper.waitForEventTaskRunning(id, task1Name);
TaskInfo tInfo = schedulerHelper.waitForEventTaskFinished(id, task1Name);
log(schedulerHelper.getSchedulerInterface().getTaskResult(id, "task1").getOutput().getAllLogs(false));
assertEquals(TaskStatus.FINISHED, tInfo.getStatus());
schedulerHelper.waitForEventJobFinished(id);
JobResult res = schedulerHelper.getJobResult(id);
// check that there is one exception in results
assertTrue(res.getExceptionResults().isEmpty());
// remove job
schedulerHelper.removeJob(id);
schedulerHelper.waitForEventJobRemoved(id);
}
use of org.ow2.proactive.scheduler.common.job.JobInfo in project scheduling by ow2-proactive.
the class SchedulerFrontend method getJobs.
/**
* {@inheritDoc}
*/
@Override
@ImmediateService
public Page<JobInfo> getJobs(int offset, int limit, JobFilterCriteria filterCriteria, List<SortParameter<JobSortParameter>> sortParameters) throws NotConnectedException, PermissionException {
UserIdentificationImpl ident = frontendState.checkPermission("getJobs", "You don't have permissions to load jobs");
boolean myJobsOnly = filterCriteria.isMyJobsOnly();
String user;
if (myJobsOnly) {
user = ident.getUsername();
} else {
user = null;
}
return dbManager.getJobs(offset, limit, user, filterCriteria.isPending(), filterCriteria.isRunning(), filterCriteria.isFinished(), sortParameters);
}
use of org.ow2.proactive.scheduler.common.job.JobInfo in project scheduling by ow2-proactive.
the class ClientJobState method update.
@Override
public void update(JobInfo info) {
if (!getId().equals(info.getJobId())) {
throw new IllegalArgumentException("This job info is not applicable for this job. (expected id is '" + getId() + "' but was '" + info.getJobId() + "'");
}
// update job info
this.jobInfo = new JobInfoImpl((JobInfoImpl) info);
// update skipped tasks
if (this.jobInfo.getTasksSkipped() != null) {
for (TaskId id : tasks.keySet()) {
if (this.jobInfo.getTasksSkipped().contains(id)) {
TaskInfoImpl taskInfo = (TaskInfoImpl) tasks.get(id).getTaskInfo();
taskInfo.setStatus(TaskStatus.SKIPPED);
}
}
}
// additions and modifications can be caused by control flow actions
if (this.jobInfo.getModifiedTasks() != null) {
addTasks(this.jobInfo.getModifiedTasks());
}
}
Aggregations