use of org.ow2.proactive.scheduler.common.task.TaskResult in project scheduling by ow2-proactive.
the class TestTaskResultData method testMultipleResults.
@Test
public void testMultipleResults() throws Throwable {
TaskFlowJob job = new TaskFlowJob();
job.addTask(createDefaultTask("task1"));
job.addTask(createDefaultTask("task2"));
job.addTask(createDefaultTask("task3"));
InternalJob internalJob = defaultSubmitJobAndLoadInternal(true, job);
InternalTask task1 = internalJob.getTask("task1");
InternalTask task2 = internalJob.getTask("task2");
InternalTask task3 = internalJob.getTask("task3");
dbManager.updateAfterTaskFinished(internalJob, task1, new TaskResultImpl(null, new TestResult(0, "1_1"), null, 0));
dbManager.updateAfterTaskFinished(internalJob, task1, new TaskResultImpl(null, new TestResult(0, "1_2"), null, 0));
dbManager.updateAfterTaskFinished(internalJob, task1, new TaskResultImpl(null, new TestResult(0, "1_3"), null, 0));
dbManager.updateAfterTaskFinished(internalJob, task2, new TaskResultImpl(null, new TestResult(0, "2_1"), null, 0));
dbManager.updateAfterTaskFinished(internalJob, task2, new TaskResultImpl(null, new TestResult(0, "2_2"), null, 0));
dbManager.updateAfterTaskFinished(internalJob, task2, new TaskResultImpl(null, new TestResult(0, "2_3"), null, 0));
dbManager.updateAfterTaskFinished(internalJob, task3, new TaskResultImpl(null, new TestResult(0, "3_1"), null, 0));
dbManager.updateAfterTaskFinished(internalJob, task3, new TaskResultImpl(null, new TestResult(0, "3_2"), null, 0));
dbManager.updateAfterTaskFinished(internalJob, task3, new TaskResultImpl(null, new TestResult(0, "3_3"), null, 0));
TestResult result;
result = (TestResult) dbManager.loadLastTaskResult(task1.getId()).value();
Assert.assertEquals("1_3", result.getB());
result = (TestResult) dbManager.loadTaskResult(internalJob.getId(), task1.getName(), 0).value();
Assert.assertEquals("1_3", result.getB());
result = (TestResult) dbManager.loadLastTaskResult(task2.getId()).value();
Assert.assertEquals("2_3", result.getB());
result = (TestResult) dbManager.loadTaskResult(internalJob.getId(), task2.getName(), 0).value();
Assert.assertEquals("2_3", result.getB());
result = (TestResult) dbManager.loadLastTaskResult(task3.getId()).value();
Assert.assertEquals("3_3", result.getB());
result = (TestResult) dbManager.loadTaskResult(internalJob.getId(), task3.getName(), 0).value();
Assert.assertEquals("3_3", result.getB());
result = (TestResult) dbManager.loadTaskResult(task2.getId(), 0).value();
Assert.assertEquals("2_3", result.getB());
result = (TestResult) dbManager.loadTaskResult(internalJob.getId(), task2.getName(), 0).value();
Assert.assertEquals("2_3", result.getB());
result = (TestResult) dbManager.loadTaskResult(task2.getId(), 1).value();
Assert.assertEquals("2_2", result.getB());
result = (TestResult) dbManager.loadTaskResult(internalJob.getId(), task2.getName(), 1).value();
Assert.assertEquals("2_2", result.getB());
result = (TestResult) dbManager.loadTaskResult(task2.getId(), 2).value();
Assert.assertEquals("2_1", result.getB());
result = (TestResult) dbManager.loadTaskResult(internalJob.getId(), task2.getName(), 2).value();
Assert.assertEquals("2_1", result.getB());
Assert.assertNull(dbManager.loadTaskResult(task2.getId(), 3));
Assert.assertNull(dbManager.loadTaskResult(internalJob.getId(), task2.getName(), 3));
List<TaskId> taskIds = Arrays.asList(task1.getId(), task2.getId(), task3.getId());
System.out.println("Load results for 3 tasks");
Map<TaskId, TaskResult> results = dbManager.loadTasksResults(internalJob.getId(), taskIds);
Assert.assertEquals(3, results.size());
result = (TestResult) results.get(task1.getId()).value();
Assert.assertEquals("1_3", result.getB());
result = (TestResult) results.get(task2.getId()).value();
Assert.assertEquals("2_3", result.getB());
result = (TestResult) results.get(task3.getId()).value();
Assert.assertEquals("3_3", result.getB());
taskIds = Arrays.asList(task2.getId(), task3.getId());
System.out.println("Load results for 2 tasks");
results = dbManager.loadTasksResults(internalJob.getId(), taskIds);
Assert.assertEquals(2, results.size());
result = (TestResult) results.get(task2.getId()).value();
Assert.assertEquals("2_3", result.getB());
result = (TestResult) results.get(task3.getId()).value();
Assert.assertEquals("3_3", result.getB());
}
use of org.ow2.proactive.scheduler.common.task.TaskResult in project scheduling by ow2-proactive.
the class TestTaskResultData method testLog4jLogs.
@Test
public void testLog4jLogs() throws Exception {
InternalJob job = saveSingleTask(createDefaultTask("task"));
InternalTask task = (InternalTask) job.getTasks().get(0);
LinkedList<LoggingEvent> events = new LinkedList<>();
for (int i = 0; i < 3; i++) {
events.add(new LoggingEvent("", Logger.getLogger(TestTaskResultData.class), Level.INFO, "info" + i, null));
events.add(new LoggingEvent("", Logger.getLogger(TestTaskResultData.class), Level.ERROR, "error" + i, null));
}
TaskResultImpl result = new TaskResultImpl(null, "result", new Log4JTaskLogs(events, "0"), 0);
dbManager.updateAfterTaskFinished(job, task, result);
TaskResult restoredResult = dbManager.loadLastTaskResult(task.getId());
TaskLogs logs = restoredResult.getOutput();
Assert.assertNotNull(logs);
String logsString = logs.getStdoutLogs(false);
Assert.assertTrue(logsString.contains("info0"));
Assert.assertTrue(logsString.contains("info1"));
Assert.assertTrue(logsString.contains("info2"));
logsString = logs.getStderrLogs(false);
Assert.assertTrue(logsString.contains("error0"));
Assert.assertTrue(logsString.contains("error1"));
Assert.assertTrue(logsString.contains("error2"));
}
use of org.ow2.proactive.scheduler.common.task.TaskResult in project scheduling by ow2-proactive.
the class TestKillPendingTask method testKillPendingTasks.
@Test
public void testKillPendingTasks() throws Throwable {
String task1Name = "task1";
String task2Name = "task2";
JobId id = schedulerHelper.submitJob(new File(jobDescriptor.toURI()).getAbsolutePath());
// check events reception
log("Job submitted, id " + id.toString());
log("Waiting for jobSubmitted");
schedulerHelper.waitForEventJobSubmitted(id);
schedulerHelper.killTask(id.toString(), task1Name);
log("Waiting for task finished : " + task1Name);
schedulerHelper.waitForEventTaskFinished(id, task1Name);
schedulerHelper.killTask(id.toString(), task2Name);
log("Waiting for task finished : " + task2Name);
schedulerHelper.waitForEventTaskFinished(id, task2Name);
log("Waiting for job finished");
schedulerHelper.waitForEventJobFinished(id);
JobResult res = schedulerHelper.getJobResult(id);
Map<String, TaskResult> results = res.getAllResults();
// check that all tasks results are defined
assertTrue(results.get(task1Name).hadException());
assertNotNull(results.get(task1Name).getException());
assertTrue(results.get(task2Name).hadException());
assertNotNull(results.get(task2Name).getException());
}
use of org.ow2.proactive.scheduler.common.task.TaskResult in project scheduling by ow2-proactive.
the class TestKilledJobResult method printResult.
private void printResult(JobResult jobResult) throws Throwable {
for (TaskResult taskResult : jobResult.getAllResults().values()) {
log("Task result for " + taskResult.getTaskId() + " " + taskResult.getTaskId().getReadableName());
if (taskResult.getException() != null) {
log("Task exception:");
taskResult.getException().printStackTrace(System.out);
} else {
log("Task output:");
log(taskResult.getOutput().getAllLogs(false));
log("Task result value: " + taskResult.value());
}
}
}
use of org.ow2.proactive.scheduler.common.task.TaskResult in project scheduling by ow2-proactive.
the class RunningTaskRecoveryWithRecoveredNodeTestBase method action.
@Test
public void action() throws Throwable {
nodes = schedulerHelper.createRMNodeStarterNodes(RunningTaskRecoveryWithForkedTaskExecutorTest.class.getSimpleName(), NB_NODES);
JobId jobid = schedulerHelper.submitJob(new File(JOB_DESCRIPTOR.toURI()).getAbsolutePath());
schedulerHelper.waitForEventJobRunning(jobid);
TaskState taskState = schedulerHelper.getSchedulerInterface().getJobState(jobid).getTasks().get(0);
schedulerHelper.waitForEventTaskRunning(taskState.getJobId(), taskState.getName());
taskState = schedulerHelper.getSchedulerInterface().getJobState(jobid).getTasks().get(0);
String firstExecutionHostInfo = taskState.getTaskInfo().getExecutionHostName();
// wait and restart scheduler
Thread.sleep(RESTART_SCHEDULER_INTER_TIME_IN_MILLISECONDS);
TestScheduler.kill();
Thread.sleep(RESTART_SCHEDULER_INTER_TIME_IN_MILLISECONDS);
schedulerHelper = new SchedulerTHelper(false, new File(getSchedulerReStartConfigurationURL().toURI()).getAbsolutePath(), new File(RM_CONFIGURATION_RESTART.toURI()).getAbsolutePath(), null, false);
Scheduler scheduler = schedulerHelper.getSchedulerInterface();
TestListenJobLogs.TestAppender appender = new TestListenJobLogs.TestAppender(LOGGER_NAME);
String loggerName = Log4JTaskLogs.JOB_LOGGER_PREFIX + jobid;
logForwardingService.removeAllAppenders(LOGGER_NAME);
logForwardingService.addAppender(loggerName, appender);
scheduler.listenJobLogs(jobid, logForwardingService.getAppenderProvider());
System.out.println("Number of nodes: " + schedulerHelper.getResourceManager().getState().getAllNodes().size());
for (String freeNodeUrl : schedulerHelper.getResourceManager().getState().getFreeNodes()) {
// previous executing node should not be free when the nodes are added back to the rm
Assert.assertFalse(firstExecutionHostInfo.contains(freeNodeUrl));
}
// we should have just one running task
JobState jobState = scheduler.getJobState(jobid);
Assert.assertEquals(0, jobState.getNumberOfPendingTasks());
Assert.assertEquals(1, jobState.getNumberOfRunningTasks());
taskState = jobState.getTasks().get(0);
Assert.assertEquals(firstExecutionHostInfo, taskState.getTaskInfo().getExecutionHostName());
appender.waitForLoggingEvent(LOG_EVENT_TIMEOUT, TASK_LOG_OUTPUT_STARTING_STRING + MAXIMUM_STEP_IN_TASK_LOOP);
schedulerHelper.waitForEventJobFinished(jobid);
TaskResult taskResult = scheduler.getJobResult(jobid).getResult(TASK_NAME);
Assert.assertFalse(taskResult.hadException());
Assert.assertEquals(OK_TASK_RESULT_VALUE, taskResult.value());
String logs = taskResult.getOutput().getStdoutLogs();
for (int i = 0; i < MAXIMUM_STEP_IN_TASK_LOOP; i++) {
Assert.assertTrue(logs.contains(TASK_LOG_OUTPUT_STARTING_STRING + i));
}
}
Aggregations