@Test public void testBasic() throws IOException, ParseException { JobWorkerHealth jobWorkerHealth = new JobWorkerHealth( 1, Lists.newArrayList(1.2, 0.9, 0.7), 10, 2, 2, "testHost"); Mockito.when(mJobMasterClient.getAllWorkerHealth()) .thenReturn(Lists.newArrayList(jobWorkerHealth)); List<JobInfo> jobInfos = new ArrayList<>(); jobInfos.add(createJobInfo(1, "Test1", Status.RUNNING, "2019-10-17 12:00:00")); jobInfos.add(createJobInfo(2, "Test2", Status.FAILED, "2019-10-17 12:30:15")); Mockito.when(mJobMasterClient.getJobServiceSummary()) .thenReturn(new JobServiceSummary(jobInfos)); new JobServiceMetricsCommand(mJobMasterClient, mPrintStream, "MM-dd-yyyy HH:mm:ss:SSS").run(); String output = new String(mOutputStream.toByteArray(), StandardCharsets.UTF_8); String[] lineByLine = output.split("\n"); assertEquals("Worker: testHost Task Pool Size: 10 Unfinished Tasks: 2" + " Active Tasks: 2 Load Avg: 1.2, 0.9, 0.7", lineByLine[0]); assertEquals("", lineByLine[1]); lineByLine = ArrayUtils.subarray(lineByLine, 2, lineByLine.length); assertEquals("Status: CREATED Count: 0", lineByLine[0]); assertEquals("Status: CANCELED Count: 0", lineByLine[1]); assertEquals("Status: FAILED Count: 1", lineByLine[2]); assertEquals("Status: RUNNING Count: 1", lineByLine[3]); assertEquals("Status: COMPLETED Count: 0", lineByLine[4]); assertEquals("", lineByLine[5]); lineByLine = ArrayUtils.subarray(lineByLine, 6, lineByLine.length); assertEquals("10 Most Recently Modified Jobs:", lineByLine[0]); assertEquals( "Timestamp: 01-17-2019 12:30:15:000 Id: 2 Name: Test2" + " Status: FAILED", lineByLine[1]); assertEquals( "Timestamp: 01-17-2019 12:00:00:000 Id: 1 Name: Test1" + " Status: RUNNING", lineByLine[2]); assertEquals("", lineByLine[3]); assertEquals("10 Most Recently Failed Jobs:", lineByLine[4]); assertEquals( "Timestamp: 01-17-2019 12:30:15:000 Id: 2 Name: Test2" + " Status: FAILED", lineByLine[5]); assertEquals("", lineByLine[6]); assertEquals("10 Longest Running Jobs:", lineByLine[7]); assertEquals( "Timestamp: 01-17-2019 12:00:00:000 Id: 1 Name: Test1" + " Status: RUNNING", lineByLine[8]); }
public int run() throws IOException { List<JobWorkerHealth> allWorkerHealth = mJobMasterClient.getAllWorkerHealth(); for (JobWorkerHealth workerHealth : allWorkerHealth) { mPrintStream.print(String.format("Worker: %-10s ", workerHealth.getHostname())); mPrintStream.print(String.format("Task Pool Size: %-7s", workerHealth.getTaskPoolSize())); mPrintStream.print(String.format("Unfinished Tasks: %-7s", workerHealth.getUnfinishedTasks())); mPrintStream.print(String.format("Active Tasks: %-7s", workerHealth.getNumActiveTasks())); mPrintStream.println(String.format("Load Avg: %s", StringUtils.join(workerHealth.getLoadAverage(), ", "))); } mPrintStream.println(); JobServiceSummary jobServiceSummary = mJobMasterClient.getJobServiceSummary(); Collection<StatusSummary> jobStatusSummaries = jobServiceSummary.getSummaryPerStatus(); for (StatusSummary statusSummary : jobStatusSummaries) { mPrintStream.print(String.format("Status: %-10s", statusSummary.getStatus())); mPrintStream.println(String.format("Count: %s", statusSummary.getCount())); } mPrintStream.println(); mPrintStream.println(String.format("%s Most Recently Modified Jobs:", JobServiceSummary.RECENT_LENGTH)); List<JobInfo> lastActivities = jobServiceSummary.getRecentActivities(); printJobInfos(lastActivities); mPrintStream.println(String.format("%s Most Recently Failed Jobs:", JobServiceSummary.RECENT_LENGTH)); List<JobInfo> lastFailures = jobServiceSummary.getRecentFailures(); printJobInfos(lastFailures); mPrintStream.println(String.format("%s Longest Running Jobs:", JobServiceSummary.RECENT_LENGTH)); List<JobInfo> longestRunning = jobServiceSummary.getLongestRunning(); printJobInfos(longestRunning); return 0; }
JobServiceMetricsCommand { public int run() throws IOException { List<JobWorkerHealth> allWorkerHealth = mJobMasterClient.getAllWorkerHealth(); for (JobWorkerHealth workerHealth : allWorkerHealth) { mPrintStream.print(String.format("Worker: %-10s ", workerHealth.getHostname())); mPrintStream.print(String.format("Task Pool Size: %-7s", workerHealth.getTaskPoolSize())); mPrintStream.print(String.format("Unfinished Tasks: %-7s", workerHealth.getUnfinishedTasks())); mPrintStream.print(String.format("Active Tasks: %-7s", workerHealth.getNumActiveTasks())); mPrintStream.println(String.format("Load Avg: %s", StringUtils.join(workerHealth.getLoadAverage(), ", "))); } mPrintStream.println(); JobServiceSummary jobServiceSummary = mJobMasterClient.getJobServiceSummary(); Collection<StatusSummary> jobStatusSummaries = jobServiceSummary.getSummaryPerStatus(); for (StatusSummary statusSummary : jobStatusSummaries) { mPrintStream.print(String.format("Status: %-10s", statusSummary.getStatus())); mPrintStream.println(String.format("Count: %s", statusSummary.getCount())); } mPrintStream.println(); mPrintStream.println(String.format("%s Most Recently Modified Jobs:", JobServiceSummary.RECENT_LENGTH)); List<JobInfo> lastActivities = jobServiceSummary.getRecentActivities(); printJobInfos(lastActivities); mPrintStream.println(String.format("%s Most Recently Failed Jobs:", JobServiceSummary.RECENT_LENGTH)); List<JobInfo> lastFailures = jobServiceSummary.getRecentFailures(); printJobInfos(lastFailures); mPrintStream.println(String.format("%s Longest Running Jobs:", JobServiceSummary.RECENT_LENGTH)); List<JobInfo> longestRunning = jobServiceSummary.getLongestRunning(); printJobInfos(longestRunning); return 0; } }
JobServiceMetricsCommand { public int run() throws IOException { List<JobWorkerHealth> allWorkerHealth = mJobMasterClient.getAllWorkerHealth(); for (JobWorkerHealth workerHealth : allWorkerHealth) { mPrintStream.print(String.format("Worker: %-10s ", workerHealth.getHostname())); mPrintStream.print(String.format("Task Pool Size: %-7s", workerHealth.getTaskPoolSize())); mPrintStream.print(String.format("Unfinished Tasks: %-7s", workerHealth.getUnfinishedTasks())); mPrintStream.print(String.format("Active Tasks: %-7s", workerHealth.getNumActiveTasks())); mPrintStream.println(String.format("Load Avg: %s", StringUtils.join(workerHealth.getLoadAverage(), ", "))); } mPrintStream.println(); JobServiceSummary jobServiceSummary = mJobMasterClient.getJobServiceSummary(); Collection<StatusSummary> jobStatusSummaries = jobServiceSummary.getSummaryPerStatus(); for (StatusSummary statusSummary : jobStatusSummaries) { mPrintStream.print(String.format("Status: %-10s", statusSummary.getStatus())); mPrintStream.println(String.format("Count: %s", statusSummary.getCount())); } mPrintStream.println(); mPrintStream.println(String.format("%s Most Recently Modified Jobs:", JobServiceSummary.RECENT_LENGTH)); List<JobInfo> lastActivities = jobServiceSummary.getRecentActivities(); printJobInfos(lastActivities); mPrintStream.println(String.format("%s Most Recently Failed Jobs:", JobServiceSummary.RECENT_LENGTH)); List<JobInfo> lastFailures = jobServiceSummary.getRecentFailures(); printJobInfos(lastFailures); mPrintStream.println(String.format("%s Longest Running Jobs:", JobServiceSummary.RECENT_LENGTH)); List<JobInfo> longestRunning = jobServiceSummary.getLongestRunning(); printJobInfos(longestRunning); return 0; } JobServiceMetricsCommand(JobMasterClient JobMasterClient, PrintStream printStream,
      String dateFormatPattern); }
JobServiceMetricsCommand { public int run() throws IOException { List<JobWorkerHealth> allWorkerHealth = mJobMasterClient.getAllWorkerHealth(); for (JobWorkerHealth workerHealth : allWorkerHealth) { mPrintStream.print(String.format("Worker: %-10s ", workerHealth.getHostname())); mPrintStream.print(String.format("Task Pool Size: %-7s", workerHealth.getTaskPoolSize())); mPrintStream.print(String.format("Unfinished Tasks: %-7s", workerHealth.getUnfinishedTasks())); mPrintStream.print(String.format("Active Tasks: %-7s", workerHealth.getNumActiveTasks())); mPrintStream.println(String.format("Load Avg: %s", StringUtils.join(workerHealth.getLoadAverage(), ", "))); } mPrintStream.println(); JobServiceSummary jobServiceSummary = mJobMasterClient.getJobServiceSummary(); Collection<StatusSummary> jobStatusSummaries = jobServiceSummary.getSummaryPerStatus(); for (StatusSummary statusSummary : jobStatusSummaries) { mPrintStream.print(String.format("Status: %-10s", statusSummary.getStatus())); mPrintStream.println(String.format("Count: %s", statusSummary.getCount())); } mPrintStream.println(); mPrintStream.println(String.format("%s Most Recently Modified Jobs:", JobServiceSummary.RECENT_LENGTH)); List<JobInfo> lastActivities = jobServiceSummary.getRecentActivities(); printJobInfos(lastActivities); mPrintStream.println(String.format("%s Most Recently Failed Jobs:", JobServiceSummary.RECENT_LENGTH)); List<JobInfo> lastFailures = jobServiceSummary.getRecentFailures(); printJobInfos(lastFailures); mPrintStream.println(String.format("%s Longest Running Jobs:", JobServiceSummary.RECENT_LENGTH)); List<JobInfo> longestRunning = jobServiceSummary.getLongestRunning(); printJobInfos(longestRunning); return 0; } JobServiceMetricsCommand(JobMasterClient JobMasterClient, PrintStream printStream,
      String dateFormatPattern); int run(); }
JobServiceMetricsCommand { public int run() throws IOException { List<JobWorkerHealth> allWorkerHealth = mJobMasterClient.getAllWorkerHealth(); for (JobWorkerHealth workerHealth : allWorkerHealth) { mPrintStream.print(String.format("Worker: %-10s ", workerHealth.getHostname())); mPrintStream.print(String.format("Task Pool Size: %-7s", workerHealth.getTaskPoolSize())); mPrintStream.print(String.format("Unfinished Tasks: %-7s", workerHealth.getUnfinishedTasks())); mPrintStream.print(String.format("Active Tasks: %-7s", workerHealth.getNumActiveTasks())); mPrintStream.println(String.format("Load Avg: %s", StringUtils.join(workerHealth.getLoadAverage(), ", "))); } mPrintStream.println(); JobServiceSummary jobServiceSummary = mJobMasterClient.getJobServiceSummary(); Collection<StatusSummary> jobStatusSummaries = jobServiceSummary.getSummaryPerStatus(); for (StatusSummary statusSummary : jobStatusSummaries) { mPrintStream.print(String.format("Status: %-10s", statusSummary.getStatus())); mPrintStream.println(String.format("Count: %s", statusSummary.getCount())); } mPrintStream.println(); mPrintStream.println(String.format("%s Most Recently Modified Jobs:", JobServiceSummary.RECENT_LENGTH)); List<JobInfo> lastActivities = jobServiceSummary.getRecentActivities(); printJobInfos(lastActivities); mPrintStream.println(String.format("%s Most Recently Failed Jobs:", JobServiceSummary.RECENT_LENGTH)); List<JobInfo> lastFailures = jobServiceSummary.getRecentFailures(); printJobInfos(lastFailures); mPrintStream.println(String.format("%s Longest Running Jobs:", JobServiceSummary.RECENT_LENGTH)); List<JobInfo> longestRunning = jobServiceSummary.getLongestRunning(); printJobInfos(longestRunning); return 0; } JobServiceMetricsCommand(JobMasterClient JobMasterClient, PrintStream printStream,
      String dateFormatPattern); int run();  }