in component-test/src/main/java/org/apache/fineract/cn/rhythm/TestBeats.java [96:117]
public void shouldRetryBeatPublishIfFirstAttemptFails() throws InterruptedException {
final String tenantIdentifier = tenantDataStoreContext.getTenantName();
final String applicationIdentifier = "funnybusiness-v4";
final String beatId = "bebopthedowop";
final LocalDateTime now = LocalDateTime.now(ZoneId.of("UTC"));
final Beat beat = new Beat();
beat.setIdentifier(beatId);
beat.setAlignmentHour(now.getHour());
final LocalDateTime expectedBeatTimestamp = getExpectedBeatTimestamp(now, beat.getAlignmentHour());
Mockito.doReturn(Optional.of("boop")).when(beatPublisherServiceMock).requestPermissionForBeats(Matchers.eq(tenantIdentifier), Matchers.eq(applicationIdentifier));
Mockito.when(beatPublisherServiceMock.publishBeat(beatId, tenantIdentifier, applicationIdentifier, expectedBeatTimestamp)).thenReturn(false, false, true);
this.testSubject.createBeat(applicationIdentifier, beat);
Assert.assertTrue(this.eventRecorder.wait(EventConstants.POST_BEAT, new BeatEvent(applicationIdentifier, beat.getIdentifier())));
Mockito.verify(beatPublisherServiceMock, Mockito.timeout(10_000).times(3)).publishBeat(beatId, tenantIdentifier, applicationIdentifier, expectedBeatTimestamp);
}