@Override public Void apply(JobCatalogListener listener) { listener.onUpdateJob(_updatedJob); return null; } }
Mockito.doThrow(new RuntimeException("injected l2 failure")).when(l2).onUpdateJob(Mockito.eq(js1_2)); Mockito.verify(l1).onUpdateJob(Mockito.eq(js1_2)); Mockito.verify(l1).onDeleteJob(Mockito.eq(js2.getUri()), Mockito.eq(js2.getVersion())); Mockito.verify(l2).onUpdateJob(Mockito.eq(js1_2)); Mockito.verify(l2).onDeleteJob(Mockito.eq(js2.getUri()), Mockito.eq(js2.getVersion())); Mockito.verify(l3).onUpdateJob(Mockito.eq(js1_2)); Mockito.verify(l3).onDeleteJob(Mockito.eq(js2.getUri()), Mockito.eq(js2.getVersion()));
@Test public void testCallbacks() throws Exception { InMemoryJobCatalog cat = new InMemoryJobCatalog(); cat.startAsync(); cat.awaitRunning(1, TimeUnit.SECONDS); JobCatalogListener l = Mockito.mock(JobCatalogListener.class); JobSpec js1_1 = JobSpec.builder("test:job1").withVersion("1").build(); JobSpec js1_2 = JobSpec.builder("test:job1").withVersion("2").build(); JobSpec js1_3 = JobSpec.builder("test:job1").withVersion("3").build(); JobSpec js2 = JobSpec.builder("test:job2").withVersion("1").build(); cat.put(js1_1); cat.addListener(l); cat.put(js1_2); cat.put(js2); cat.put(js1_3); cat.remove(js2.getUri()); cat.remove(new URI("test:dummy_job")); cat.removeListener(l); cat.remove(js1_3.getUri()); Mockito.verify(l).onAddJob(Mockito.eq(js1_1)); Mockito.verify(l).onUpdateJob(Mockito.eq(js1_2)); Mockito.verify(l).onAddJob(Mockito.eq(js2)); Mockito.verify(l).onUpdateJob(Mockito.eq(js1_3)); Mockito.verify(l).onDeleteJob(Mockito.eq(js2.getUri()), Mockito.eq(js2.getVersion())); Mockito.verifyNoMoreInteractions(l); cat.stopAsync(); cat.awaitTerminated(1, TimeUnit.SECONDS); }
return null; }).when(l).onUpdateJob(Mockito.any(JobSpec.class));
return null; }).when(l).onUpdateJob(Mockito.any(JobSpec.class));
Mockito.verify(l).onUpdateJob(Mockito.eq(js1_2)); Mockito.verify(l).onDeleteJob(Mockito.eq(js1_2.getUri()), Mockito.eq(js1_2.getVersion()));
@Override public Void apply(JobCatalogListener listener) { listener.onUpdateJob(_updatedJob); return null; } }