use of org.apache.tez.dag.app.dag.Vertex in project tez by apache.
the class TestDAGImpl method testGroupDAGCompletionWithCommitSuccess.
@SuppressWarnings("unchecked")
@Test(timeout = 5000)
public void testGroupDAGCompletionWithCommitSuccess() {
// should have only 2 commits. 1 vertex3 commit and 1 group commit.
initDAG(groupDag);
startDAG(groupDag);
dispatcher.await();
for (int i = 0; i < 3; ++i) {
Vertex v = groupDag.getVertex("vertex" + (i + 1));
dispatcher.getEventHandler().handle(new VertexEventTaskCompleted(TezTaskID.getInstance(v.getVertexId(), 0), TaskState.SUCCEEDED));
dispatcher.await();
Assert.assertEquals(VertexState.SUCCEEDED, v.getState());
Assert.assertEquals(i + 1, groupDag.getSuccessfulVertices());
}
Assert.assertEquals(3, groupDag.getSuccessfulVertices());
Assert.assertTrue(1.0f == groupDag.getCompletedTaskProgress());
Assert.assertEquals(DAGState.SUCCEEDED, groupDag.getState());
Assert.assertEquals(2, TotalCountingOutputCommitter.totalCommitCounter);
}
use of org.apache.tez.dag.app.dag.Vertex in project tez by apache.
the class TestDAGImpl method testDAGStart.
@Test(timeout = 5000)
public void testDAGStart() {
initDAG(dag);
startDAG(dag);
dispatcher.await();
for (int i = 0; i < 6; ++i) {
TezVertexID vId = TezVertexID.getInstance(dagId, i);
Vertex v = dag.getVertex(vId);
Assert.assertEquals(VertexState.RUNNING, v.getState());
if (i < 2) {
Assert.assertEquals(0, v.getDistanceFromRoot());
} else if (i == 2) {
Assert.assertEquals(1, v.getDistanceFromRoot());
} else if (i > 2 && i < 5) {
Assert.assertEquals(2, v.getDistanceFromRoot());
} else if (i == 5) {
Assert.assertEquals(3, v.getDistanceFromRoot());
}
}
for (int i = 0; i < 6; ++i) {
TezVertexID vId = TezVertexID.getInstance(dagId, i);
LOG.info("Distance from root: v" + i + ":" + dag.getVertex(vId).getDistanceFromRoot());
}
}
use of org.apache.tez.dag.app.dag.Vertex in project tez by apache.
the class TestDAGImpl method testConfiguration.
@Test(timeout = 5000)
public void testConfiguration() throws AMUserCodeException {
initDAG(dag);
// dag override the default configuration
Assert.assertEquals(3, dag.getConf().getInt(TezConfiguration.TEZ_AM_TASK_MAX_FAILED_ATTEMPTS, TezConfiguration.TEZ_AM_TASK_MAX_FAILED_ATTEMPTS_DEFAULT));
Vertex v1 = dag.getVertex("vertex1");
Vertex v2 = dag.getVertex("vertex2");
// v1 override the dagConfiguration
Assert.assertEquals(2, v1.getConf().getInt(TezConfiguration.TEZ_AM_TASK_MAX_FAILED_ATTEMPTS, TezConfiguration.TEZ_AM_TASK_MAX_FAILED_ATTEMPTS_DEFAULT));
// v2 inherit the configuration from dag
Assert.assertEquals(3, v2.getConf().getInt(TezConfiguration.TEZ_AM_TASK_MAX_FAILED_ATTEMPTS, TezConfiguration.TEZ_AM_TASK_MAX_FAILED_ATTEMPTS_DEFAULT));
}
use of org.apache.tez.dag.app.dag.Vertex in project tez by apache.
the class TestDAGImpl method testVertexReRunning.
@SuppressWarnings("unchecked")
@Test(timeout = 5000)
public void testVertexReRunning() {
initDAG(dag);
dag.dagScheduler = mock(DAGScheduler.class);
startDAG(dag);
dispatcher.await();
TezVertexID vId = TezVertexID.getInstance(dagId, 1);
Vertex v = dag.getVertex(vId);
dispatcher.getEventHandler().handle(new VertexEventTaskCompleted(TezTaskID.getInstance(vId, 0), TaskState.SUCCEEDED));
dispatcher.getEventHandler().handle(new VertexEventTaskCompleted(TezTaskID.getInstance(vId, 1), TaskState.SUCCEEDED));
dispatcher.await();
Assert.assertEquals(VertexState.SUCCEEDED, v.getState());
Assert.assertEquals(1, dag.getSuccessfulVertices());
Assert.assertEquals(1, dag.numCompletedVertices);
dispatcher.getEventHandler().handle(new VertexEventTaskReschedule(TezTaskID.getInstance(vId, 0)));
dispatcher.await();
Assert.assertEquals(VertexState.RUNNING, v.getState());
Assert.assertEquals(0, dag.getSuccessfulVertices());
Assert.assertEquals(0, dag.numCompletedVertices);
dispatcher.getEventHandler().handle(new VertexEventTaskCompleted(TezTaskID.getInstance(vId, 0), TaskState.SUCCEEDED));
dispatcher.await();
Assert.assertEquals(VertexState.SUCCEEDED, v.getState());
Assert.assertEquals(1, dag.getSuccessfulVertices());
Assert.assertEquals(1, dag.numCompletedVertices);
}
use of org.apache.tez.dag.app.dag.Vertex in project tez by apache.
the class TestDAGImpl method _testDAGKillVertexSuccessAfterTerminated.
// Vertices succeed after a DAG kill has been processed. Should be ignored.
@SuppressWarnings("unchecked")
private void _testDAGKillVertexSuccessAfterTerminated(DAGTerminationCause terminationCause) {
initDAG(dag);
startDAG(dag);
dispatcher.await();
dispatcher.getEventHandler().handle(new DAGEventVertexCompleted(TezVertexID.getInstance(dagId, 0), VertexState.SUCCEEDED));
dispatcher.await();
Assert.assertEquals(DAGState.RUNNING, dag.getState());
dispatcher.getEventHandler().handle(new DAGEventVertexCompleted(TezVertexID.getInstance(dagId, 1), VertexState.SUCCEEDED));
dispatcher.getEventHandler().handle(new DAGEventTerminateDag(dagId, terminationCause, null));
dispatcher.await();
Assert.assertEquals(terminationCause.getFinishedState(), dag.getState());
// Vertex SUCCESS gets processed after the DAG has reached the KILLED state. Should be ignored.
for (int i = 2; i < 6; ++i) {
dispatcher.getEventHandler().handle(new DAGEventVertexCompleted(TezVertexID.getInstance(dagId, i), VertexState.SUCCEEDED));
}
dispatcher.await();
int killedCount = 0;
for (Map.Entry<TezVertexID, Vertex> vEntry : dag.getVertices().entrySet()) {
if (vEntry.getValue().getState() == VertexState.KILLED) {
killedCount++;
}
}
Assert.assertEquals(4, killedCount);
Assert.assertEquals(terminationCause, dag.getTerminationCause());
Assert.assertEquals(2, dag.getSuccessfulVertices());
for (Vertex v : dag.getVertices().values()) {
Assert.assertEquals(VertexTerminationCause.DAG_TERMINATED, v.getTerminationCause());
}
Assert.assertEquals(1, dagFinishEventHandler.dagFinishEvents);
}
Aggregations