@BeforeClass public void setUp() { this.mockEventSubmitter = mock(EventSubmitter.class); this.jobExecutionEventSubmitter = new JobExecutionEventSubmitter(this.mockEventSubmitter); }
@Override public void onJobCancellation(JobContext jobContext) { this.jobExecutionEventSubmitter.submitJobExecutionEvents(jobContext.getJobState()); } }
/** * Submits metadata about a given {@link JobState} and each of its {@link TaskState}s. This method will submit a * single event for the {@link JobState} called {@link #JOB_STATE_EVENT}. It will submit an event for each * {@link TaskState} called {@link #TASK_STATE_EVENT}. * * @param jobState is the {@link JobState} to emit events for */ public void submitJobExecutionEvents(JobState jobState) { submitJobStateEvent(jobState); submitTaskStateEvents(jobState); }
/** * Submits an event for each {@link TaskState} in the given {@link JobState}. */ private void submitTaskStateEvents(JobState jobState) { // Build Job Metadata applicable for TaskStates ImmutableMap.Builder<String, String> jobMetadataBuilder = new ImmutableMap.Builder<>(); jobMetadataBuilder.put(METADATA_JOB_ID, jobState.getJobId()); jobMetadataBuilder.put(METADATA_JOB_NAME, jobState.getJobName()); jobMetadataBuilder.put(METADATA_JOB_TRACKING_URL, jobState.getTrackingURL().or(UNKNOWN_VALUE)); Map<String, String> jobMetadata = jobMetadataBuilder.build(); // Submit event for each TaskState for (TaskState taskState : jobState.getTaskStates()) { submitTaskStateEvent(taskState, jobMetadata); } }
/** * Submits an event for each {@link TaskState} in the given {@link JobState}. */ private void submitTaskStateEvents(JobState jobState) { // Build Job Metadata applicable for TaskStates ImmutableMap.Builder<String, String> jobMetadataBuilder = new ImmutableMap.Builder<>(); jobMetadataBuilder.put(METADATA_JOB_ID, jobState.getJobId()); jobMetadataBuilder.put(METADATA_JOB_NAME, jobState.getJobName()); jobMetadataBuilder.put(METADATA_JOB_TRACKING_URL, jobState.getTrackingURL().or(UNKNOWN_VALUE)); Map<String, String> jobMetadata = jobMetadataBuilder.build(); // Submit event for each TaskState for (TaskState taskState : jobState.getTaskStates()) { submitTaskStateEvent(taskState, jobMetadata); } }
@Override public void onJobCompletion(JobContext jobContext) { this.jobExecutionEventSubmitter.submitJobExecutionEvents(jobContext.getJobState()); }
/** * Submits metadata about a given {@link JobState} and each of its {@link TaskState}s. This method will submit a * single event for the {@link JobState} called {@link #JOB_STATE_EVENT}. It will submit an event for each * {@link TaskState} called {@link #TASK_STATE_EVENT}. * * @param jobState is the {@link JobState} to emit events for */ public void submitJobExecutionEvents(JobState jobState) { submitJobStateEvent(jobState); submitTaskStateEvents(jobState); }
JobExecutionEventSubmitter jobExecutionEventSubmitter = new JobExecutionEventSubmitter(this.eventSubmitter); this.mandatoryJobListeners.add(new JobExecutionEventSubmitterListener(jobExecutionEventSubmitter));
@Test public void testSubmitJobExecutionEvents() { JobState mockJobState = mock(JobState.class, Mockito.RETURNS_SMART_NULLS); when(mockJobState.getState()).thenReturn(JobState.RunningState.SUCCESSFUL); when(mockJobState.getLauncherType()).thenReturn(LauncherTypeEnum.$UNKNOWN); when(mockJobState.getTrackingURL()).thenReturn(Optional.<String> absent()); TaskState mockTaskState1 = createMockTaskState(); TaskState mockTaskState2 = createMockTaskState(); when(mockJobState.getTaskStates()).thenReturn(Lists.newArrayList(mockTaskState1, mockTaskState2)); this.jobExecutionEventSubmitter.submitJobExecutionEvents(mockJobState); verify(this.mockEventSubmitter, atLeastOnce()).submit(any(String.class), any(Map.class)); }
JobExecutionEventSubmitter jobExecutionEventSubmitter = new JobExecutionEventSubmitter(this.eventSubmitter); this.mandatoryJobListeners.add(new JobExecutionEventSubmitterListener(jobExecutionEventSubmitter));
@Override public void onJobCancellation(JobContext jobContext) { this.jobExecutionEventSubmitter.submitJobExecutionEvents(jobContext.getJobState()); } }
@Override public void onJobCompletion(JobContext jobContext) { this.jobExecutionEventSubmitter.submitJobExecutionEvents(jobContext.getJobState()); }