@Test public void fireProducerInitDontStopWhenOneFails() { long version = 31337; HollowProducer.ReadState readState = Mockito.mock(HollowProducer.ReadState.class); Mockito.when(readState.getVersion()).thenReturn(version); Mockito.doThrow(RuntimeException.class).when(listener).onProducerInit(1L, MILLISECONDS); listenerSupport.listeners().fireProducerInit(1L); Mockito.verify(listener).onProducerInit(Duration.ofMillis(1L)); }
@Test public void fireCycleStartDontStopWhenOneFails() { long version = 31337; HollowProducer.ReadState readState = Mockito.mock(HollowProducer.ReadState.class); Mockito.when(readState.getVersion()).thenReturn(version); Mockito.doThrow(RuntimeException.class).when(listener).onCycleStart(version); listenerSupport.listeners().fireCycleStart(version); Mockito.verify(listener).onCycleStart(version); }
@Test public void fireAnnouncementStartDontStopWhenOneFails() { long version = 31337; HollowProducer.ReadState readState = Mockito.mock(HollowProducer.ReadState.class); Mockito.when(readState.getVersion()).thenReturn(version); Mockito.doThrow(RuntimeException.class).when(listener).onAnnouncementStart(version); listenerSupport.listeners().fireAnnouncementStart(readState); Mockito.verify(listener).onAnnouncementStart(version); } }
@Test public void fireProducerRestoreStartDontStopWhenOneFails() { long version = 31337; HollowProducer.ReadState readState = Mockito.mock(HollowProducer.ReadState.class); Mockito.when(readState.getVersion()).thenReturn(version); Mockito.doThrow(RuntimeException.class).when(listener).onProducerRestoreStart(version); Status.RestoreStageBuilder b = new Status.RestoreStageBuilder(); listenerSupport.listeners().fireProducerRestoreComplete(b); ArgumentCaptor<Status> status = ArgumentCaptor.forClass( Status.class); ArgumentCaptor<Long> desired = ArgumentCaptor.forClass( long.class); ArgumentCaptor<Long> reached = ArgumentCaptor.forClass( long.class); ArgumentCaptor<Duration> elapsed = ArgumentCaptor.forClass( Duration.class); Mockito.verify(listener).onProducerRestoreComplete(status.capture(), desired.capture(), reached.capture(), elapsed.capture()); Assert.assertNotNull(status.getValue()); Assert.assertNotNull(elapsed.getValue()); }
private void stageBlob(long toVersion, Artifacts artifacts, Blob.Type blobType) throws IOException { HollowBlobWriter writer = new HollowBlobWriter(getWriteEngine()); switch (blobType) { case SNAPSHOT: artifacts.snapshot = blobStager.openSnapshot(toVersion); artifacts.snapshot.write(writer); break; case DELTA: artifacts.delta = blobStager.openDelta(readStates.current().getVersion(), toVersion); artifacts.delta.write(writer); break; case REVERSE_DELTA: artifacts.reverseDelta = blobStager.openReverseDelta(toVersion, readStates.current().getVersion()); artifacts.reverseDelta.write(writer); break; default: throw new IllegalStateException("unknown type, type=" + blobType); } }
private void announce(ListenerSupport.Listeners listeners, HollowProducer.ReadState readState) { if (announcer != null) { Status.StageWithStateBuilder status = listeners.fireAnnouncementStart(readState); try { announcer.announce(readState.getVersion()); status.success(); } catch (Throwable th) { status.fail(th); throw th; } finally { listeners.fireAnnouncementComplete(status); } } }
ReadStateHelper rollback() { if(pending == null) throw new IllegalStateException(); return new ReadStateHelper(newReadState(current.getVersion(), pending.getStateEngine()), null); }
StageWithStateBuilder readState(HollowProducer.ReadState readState) { this.readState = readState; return version(readState.getVersion()); }
long pendingVersion() { return pending != null ? pending.getVersion() : HollowConstants.VERSION_NONE; } }
Status.StageWithStateBuilder fireValidationStart(HollowProducer.ReadState readState) { long version = readState.getVersion(); fire(HollowProducerListener.class, l -> l.onValidationStart(version)); fire(ValidationStatusListener.class, l -> l.onValidationStatusStart(version)); return new Status.StageWithStateBuilder().readState(readState); }
@Test public void testFireValidationStartDontStopWhenOneFails() { long version = 31337; HollowProducer.ReadState readState = Mockito.mock(HollowProducer.ReadState.class); Mockito.when(readState.getVersion()).thenReturn(version); Mockito.doThrow(RuntimeException.class).when(validationStatusListener).onValidationStatusStart(version); listenerSupport.listeners().fireValidationStart(readState); Mockito.verify(listener).onValidationStart(version); Mockito.verify(validationStatusListener).onValidationStatusStart(version); Mockito.verify(producerAndValidationStatusListener).onValidationStart(version); }
Status.StageWithStateBuilder fireIntegrityCheckStart(HollowProducer.ReadState readState) { long version = readState.getVersion(); fire(IntegrityCheckListener.class, l -> l.onIntegrityCheckStart(version)); return new Status.StageWithStateBuilder().readState(readState); }
/** * Swap underlying state engines between current and pending while keeping the versions consistent; * used after delta integrity checks have altered the underlying state engines. * * @return */ ReadStateHelper swap() { return new ReadStateHelper(newReadState(current.getVersion(), pending.getStateEngine()), newReadState(pending.getVersion(), current.getStateEngine())); }
@Test public void fireNewDeltaChainDontStopWhenOneFails() { long version = 31337; HollowProducer.ReadState readState = Mockito.mock(HollowProducer.ReadState.class); Mockito.when(readState.getVersion()).thenReturn(version); Mockito.doThrow(RuntimeException.class).when(listener).onNewDeltaChain(version); listenerSupport.listeners().fireNewDeltaChain(version); Mockito.verify(listener).onNewDeltaChain(version); }
@Test public void testFireValidationStartDontStopWhenOneFails2() { long version = 31337; HollowProducer.ReadState readState = Mockito.mock(HollowProducer.ReadState.class); Mockito.when(readState.getVersion()).thenReturn(version); Mockito.doThrow(RuntimeException.class).when(validationStatusListener).onValidationStatusStart(version); listenerSupport.listeners().fireValidationStart(readState); Mockito.verify(listener).onValidationStart(version); Mockito.verify(validationStatusListener).onValidationStatusStart(version); Mockito.verify(producerAndValidationStatusListener).onValidationStart(version); }
@Test public void fireIntegrityCheckStartDontStopWhenOneFails() { long version = 31337; HollowProducer.ReadState readState = Mockito.mock(HollowProducer.ReadState.class); Mockito.when(readState.getVersion()).thenReturn(version); Mockito.doThrow(RuntimeException.class).when(listener).onIntegrityCheckStart(version); listenerSupport.listeners().fireIntegrityCheckStart(readState); Mockito.verify(listener).onIntegrityCheckStart(version); }
@Test public void testFireValidationStart() { long version = 31337; HollowProducer.ReadState readState = Mockito.mock(HollowProducer.ReadState.class); Mockito.when(readState.getVersion()).thenReturn(version); listenerSupport.listeners().fireValidationStart(readState); Mockito.verify(listener).onValidationStart(version); Mockito.verify(validationStatusListener).onValidationStatusStart(version); Mockito.verify(producerAndValidationStatusListener).onValidationStart(version); }
@Test public void firePublishStartDontStopWhenOneFails() { long version = 31337; HollowProducer.ReadState readState = Mockito.mock(HollowProducer.ReadState.class); Mockito.when(readState.getVersion()).thenReturn(version); Mockito.doThrow(RuntimeException.class).when(listener).onPublishStart(version); listenerSupport.listeners().firePublishStart(version); Mockito.verify(listener).onPublishStart(version); }
@Test public void firePopulateStartDontStopWhenOneFails() { long version = 31337; HollowProducer.ReadState readState = Mockito.mock(HollowProducer.ReadState.class); Mockito.when(readState.getVersion()).thenReturn(version); Mockito.doThrow(RuntimeException.class).when(listener).onPopulateStart(version); listenerSupport.listeners().firePopulateStart(version); Mockito.verify(listener).onPopulateStart(version); }
Status.StageWithStateBuilder fireAnnouncementStart(HollowProducer.ReadState readState) { long version = readState.getVersion(); fire(AnnouncementListener.class, l -> l.onAnnouncementStart(version)); return new Status.StageWithStateBuilder().readState(readState); }