Search in sources :

Example 36 with Vertex

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);
}
Also used : Vertex(org.apache.tez.dag.app.dag.Vertex) DAG(org.apache.tez.dag.app.dag.DAG) Matchers.anyString(org.mockito.Matchers.anyString) TezVertexID(org.apache.tez.dag.records.TezVertexID) Test(org.junit.Test)

Example 37 with Vertex

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();
}
Also used : Vertex(org.apache.tez.dag.app.dag.Vertex) Task(org.apache.tez.dag.app.dag.Task) DAG(org.apache.tez.dag.app.dag.DAG)

Example 38 with Vertex

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;
}
Also used : Vertex(org.apache.tez.dag.app.dag.Vertex) TezVertexID(org.apache.tez.dag.records.TezVertexID)

Example 39 with 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;
}
Also used : Vertex(org.apache.tez.dag.app.dag.Vertex) ArrayList(java.util.ArrayList) TezDAGID(org.apache.tez.dag.records.TezDAGID) TezVertexID(org.apache.tez.dag.records.TezVertexID)

Example 40 with Vertex

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;
}
Also used : Vertex(org.apache.tez.dag.app.dag.Vertex) Task(org.apache.tez.dag.app.dag.Task) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) List(java.util.List)

Aggregations

Vertex (org.apache.tez.dag.app.dag.Vertex)80 Test (org.junit.Test)31 TezVertexID (org.apache.tez.dag.records.TezVertexID)23 DAG (org.apache.tez.dag.app.dag.DAG)22 VertexEventRecoverVertex (org.apache.tez.dag.app.dag.event.VertexEventRecoverVertex)17 HashMap (java.util.HashMap)15 StateChangeNotifierForTest (org.apache.tez.dag.app.dag.TestStateChangeNotifier.StateChangeNotifierForTest)15 PlanTaskLocationHint (org.apache.tez.dag.api.records.DAGProtos.PlanTaskLocationHint)13 Map (java.util.Map)12 TezTaskID (org.apache.tez.dag.records.TezTaskID)11 VertexEventTaskCompleted (org.apache.tez.dag.app.dag.event.VertexEventTaskCompleted)9 LinkedHashMap (java.util.LinkedHashMap)8 VertexLocationHint (org.apache.tez.dag.api.VertexLocationHint)8 ArrayList (java.util.ArrayList)7 EventHandler (org.apache.hadoop.yarn.event.EventHandler)7 Task (org.apache.tez.dag.app.dag.Task)7 EdgeProperty (org.apache.tez.dag.api.EdgeProperty)6 TaskAttemptEventSchedule (org.apache.tez.dag.app.dag.event.TaskAttemptEventSchedule)6 OutputCommitter (org.apache.tez.runtime.api.OutputCommitter)6 TreeMap (java.util.TreeMap)5