package org.apache.hadoop.mapred; import java.util.HashMap; import java.util.Map; import junit.framework.TestCase; public class TestTaskTrackerLoadInfo extends TestCase { public void testWIthRunningTasks() { Map<String, Object> trackerInfo = new HashMap<String, Object>(); trackerInfo.put("active", true); long lastSeen = System.currentTimeMillis(); trackerInfo.put("last_seen", lastSeen); trackerInfo.put("map_tasks_max", 8L); trackerInfo.put("reduce_tasks_max", 8L); Object[] tasks = new Object[4]; Map<String, Object> firstMap = new HashMap<String, Object>(); firstMap.put("job_id", 1L); firstMap.put("task_id", 20L); firstMap.put("attempt", 0L); firstMap.put("type", "map"); firstMap.put("state", "SUCCEEDED"); firstMap.put("phase", "MAP"); firstMap.put("progress", 1.0); firstMap.put("start_time", lastSeen); firstMap.put("running_time", 10L); tasks[0] = firstMap; Map<String, Object> secondMap = new HashMap<String, Object>(); secondMap.put("job_id", 1L); secondMap.put("task_id", 21L); secondMap.put("attempt", 0L); secondMap.put("type", "map"); secondMap.put("state", "RUNNING"); secondMap.put("phase", "MAP"); secondMap.put("progress", 0.5); secondMap.put("start_time", lastSeen); secondMap.put("running_time", 5L); tasks[1] = secondMap; Map<String, Object> firstReduce = new HashMap<String, Object>(); firstReduce.put("job_id", 1L); firstReduce.put("task_id", 22L); firstReduce.put("attempt", 0L); firstReduce.put("type", "reduce"); firstReduce.put("state", "RUNNING"); firstReduce.put("phase", "SHUFFLE"); firstReduce.put("progress", 0.0); firstReduce.put("start_time", lastSeen); firstReduce.put("running_time", 100L); tasks[2] = firstReduce; Map<String, Object> secondReduce = new HashMap<String, Object>(); secondReduce.put("job_id", 1L); secondReduce.put("task_id", 23L); secondReduce.put("attempt", 0L); secondReduce.put("type", "reduce"); secondReduce.put("state", "RUNNING"); secondReduce.put("phase", "SORT"); secondReduce.put("progress", 0.5); secondReduce.put("start_time", lastSeen); secondReduce.put("running_time", 50L); tasks[3] = secondReduce; trackerInfo.put("tasks", tasks); TaskTrackerLoadInfo info = new TaskTrackerLoadInfo("testTracker"); info.parseMap(trackerInfo); assertEquals(65, info.getTotalWastedTime()); assertEquals(55, info.getRunningTimeWasted()); assertEquals(2, info.getTotalMapTasks()); assertEquals(1, info.getRunningMapTasks()); assertEquals(2, info.getRunningReduceTasks()); } public void testEmptyReport() { Map<String, Object> trackerInfo = new HashMap<String, Object>(); trackerInfo.put("active", true); long lastSeen = System.currentTimeMillis(); trackerInfo.put("last_seen", lastSeen); trackerInfo.put("map_tasks_max", 8L); trackerInfo.put("map_tasks_running", 0L); trackerInfo.put("reduce_tasks_max", 8L); trackerInfo.put("reduce_tasks_running", 0L); trackerInfo.put("tasks", new Object[0]); TaskTrackerLoadInfo info = new TaskTrackerLoadInfo("testTracker"); info.parseMap(trackerInfo); assertEquals(lastSeen, info.getLastSeen()); assertEquals(8, info.getMaxMapTasks()); assertEquals(0, info.getRunningMapTasks()); assertEquals(8, info.getMaxReduceTasks()); assertEquals(0, info.getRunningReduceTasks()); assertEquals(0, info.getTotalWastedTime()); assertEquals(0, info.getTotalMapTasks()); assertEquals(0, info.getRunningTimeWasted()); } }