use of org.apache.tez.dag.app.dag.Vertex in project tez by apache.
the class TestAMWebController method testVertexProgressResponse.
@Test(timeout = 5000)
public void testVertexProgressResponse() {
AMWebController amWebController = new AMWebController(mockRequestContext, mockAppContext, "TEST_HISTORY_URL");
AMWebController spy = spy(amWebController);
DAG mockDAG = mock(DAG.class);
Vertex mockVertex = mock(Vertex.class);
doReturn(true).when(spy).hasAccess();
doReturn("42").when(spy).$(WebUIService.DAG_ID);
doReturn("43").when(spy).$(WebUIService.VERTEX_ID);
doReturn(mockResponse).when(spy).response();
doReturn(TezDAGID.fromString("dag_1422960590892_0007_42")).when(mockDAG).getID();
doReturn(mockDAG).when(mockAppContext).getCurrentDAG();
doReturn(mockVertex).when(mockDAG).getVertex(any(TezVertexID.class));
doReturn(66.0f).when(mockVertex).getCompletedTaskProgress();
doNothing().when(spy).renderJSON(any());
doNothing().when(spy).setCorsHeaders();
spy.getVertexProgress();
verify(spy).renderJSON(singleResultCaptor.capture());
final Map<String, AMWebController.ProgressInfo> result = singleResultCaptor.getValue();
Assert.assertEquals(1, result.size());
Assert.assertTrue(result.containsKey("vertexProgress"));
AMWebController.ProgressInfo progressInfo = result.get("vertexProgress");
Assert.assertTrue("vertex_1422960590892_0007_42_43".equals(progressInfo.getId()));
Assert.assertEquals(66.0f, progressInfo.getProgress(), 0.1);
}
use of org.apache.tez.dag.app.dag.Vertex in project tez by apache.
the class TaskCommunicatorContextImpl method getFirstAttemptStartTime.
@Override
public long getFirstAttemptStartTime(String vertexName, int taskIndex) {
Preconditions.checkArgument(vertexName != null, "VertexName must be specified");
Preconditions.checkArgument(taskIndex >= 0, "TaskIndex must be > 0");
DAG dag = getDag();
Vertex vertex = dag.getVertex(vertexName);
Task task = vertex.getTask(taskIndex);
return task.getFirstAttemptStartTime();
}
use of org.apache.tez.dag.app.dag.Vertex in project tez by apache.
the class AMWebController method getVertexFromIndex.
Vertex getVertexFromIndex(DAG dag, Integer vertexIndex) {
final TezVertexID tezVertexID = TezVertexID.getInstance(dag.getID(), vertexIndex);
Vertex vertex = dag.getVertex(tezVertexID);
return vertex;
}
use of org.apache.tez.dag.app.dag.Vertex in project tez by apache.
the class AMWebController method getVerticesByIdx.
Collection<Vertex> getVerticesByIdx(DAG dag, Collection<Integer> indexes) {
Collection<Vertex> vertices = new ArrayList<Vertex>(indexes.size());
final TezDAGID tezDAGID = dag.getID();
for (Integer idx : indexes) {
final TezVertexID tezVertexID = TezVertexID.getInstance(tezDAGID, idx);
if (tezVertexID == null) {
continue;
}
final Vertex vertex = dag.getVertex(tezVertexID);
if (vertex != null) {
vertices.add(vertex);
}
}
return vertices;
}
use of org.apache.tez.dag.app.dag.Vertex in project tez by apache.
the class AMWebController method getRequestedTasks.
/**
* getRequestedTasks
* Heart of getTasksInfo. Given a dag and a limit, based on the incoming query parameters
* returns a list of task instances
*
* @param dag {DAG}
* @param limit {Integer}
*/
List<Task> getRequestedTasks(DAG dag, Integer limit) {
List<Task> tasks = new ArrayList<Task>();
List<List<Integer>> taskIDs = getIDsFromRequest(WebUIService.TASK_ID, limit, 2);
if (taskIDs == null) {
return null;
} else if (!taskIDs.isEmpty()) {
for (List<Integer> indexes : taskIDs) {
Vertex vertex = getVertexFromIndex(dag, indexes.get(0));
if (vertex == null) {
continue;
}
Task task = vertex.getTask(indexes.get(1));
if (task == null) {
continue;
} else {
tasks.add(task);
}
if (tasks.size() >= limit) {
break;
}
}
} else {
List<Integer> vertexIDs = getIntegersFromRequest(WebUIService.VERTEX_ID, limit);
if (vertexIDs == null) {
return null;
} else if (!vertexIDs.isEmpty()) {
for (Integer vertexID : vertexIDs) {
Vertex vertex = getVertexFromIndex(dag, vertexID);
if (vertex == null) {
continue;
}
List<Task> vertexTasks = new ArrayList<Task>(vertex.getTasks().values());
tasks.addAll(vertexTasks.subList(0, Math.min(vertexTasks.size(), limit - tasks.size())));
if (tasks.size() >= limit) {
break;
}
}
} else {
Collection<Vertex> vertices = dag.getVertices().values();
for (Vertex vertex : vertices) {
List<Task> vertexTasks = new ArrayList<Task>(vertex.getTasks().values());
tasks.addAll(vertexTasks.subList(0, Math.min(vertexTasks.size(), limit - tasks.size())));
if (tasks.size() >= limit) {
break;
}
}
}
}
return tasks;
}
Aggregations