use of org.agrona.ErrorHandler in project aeron by real-logic.
the class CommonContextTest method setupErrorHandlerReturnsAnErrorHandlerThatFirstInvokesLoggingErrorHandlerBeforeCallingSuppliedErrorHandler.
@Test
void setupErrorHandlerReturnsAnErrorHandlerThatFirstInvokesLoggingErrorHandlerBeforeCallingSuppliedErrorHandler() {
final Throwable throwable = new Throwable("Hello, world!");
final ErrorHandler userErrorHandler = mock(ErrorHandler.class);
final AssertionError userHandlerError = new AssertionError("user handler error");
doThrow(userHandlerError).when(userErrorHandler).onError(throwable);
final DistinctErrorLog distinctErrorLog = mock(DistinctErrorLog.class);
doReturn(true).when(distinctErrorLog).record(any(Throwable.class));
final InOrder inOrder = inOrder(userErrorHandler, distinctErrorLog);
final ErrorHandler errorHandler = CommonContext.setupErrorHandler(userErrorHandler, distinctErrorLog);
assertNotNull(errorHandler);
assertNotSame(userErrorHandler, errorHandler);
final AssertionError error = assertThrowsExactly(AssertionError.class, () -> errorHandler.onError(throwable));
assertSame(userHandlerError, error);
inOrder.verify(distinctErrorLog).record(throwable);
inOrder.verify(userErrorHandler).onError(throwable);
inOrder.verifyNoMoreInteractions();
}
use of org.agrona.ErrorHandler in project aeron by real-logic.
the class CommonContextTest method setupErrorHandlerReturnsALoggingErrorHandlerInstanceIfNoUserErrorHandlerSupplied.
@Test
void setupErrorHandlerReturnsALoggingErrorHandlerInstanceIfNoUserErrorHandlerSupplied() {
final DistinctErrorLog distinctErrorLog = mock(DistinctErrorLog.class);
final ErrorHandler errorHandler = CommonContext.setupErrorHandler(null, distinctErrorLog);
assertNotNull(errorHandler);
final LoggingErrorHandler loggingErrorHandler = assertInstanceOf(LoggingErrorHandler.class, errorHandler);
assertSame(distinctErrorLog, loggingErrorHandler.distinctErrorLog());
}
use of org.agrona.ErrorHandler in project aeron by real-logic.
the class ClusterBackupMediaDriver method launch.
/**
* Launch a new {@link ClusterBackupMediaDriver} with provided contexts.
*
* @param driverCtx for configuring the {@link MediaDriver}.
* @param archiveCtx for configuring the {@link Archive}.
* @param clusterBackupCtx for the configuration of the {@link ClusterBackup}.
* @return a new {@link ClusterBackupMediaDriver} with the provided contexts.
*/
public static ClusterBackupMediaDriver launch(final MediaDriver.Context driverCtx, final Archive.Context archiveCtx, final ClusterBackup.Context clusterBackupCtx) {
MediaDriver driver = null;
Archive archive = null;
ClusterBackup clusterBackup = null;
try {
driver = MediaDriver.launch(driverCtx.spiesSimulateConnection(true));
final int errorCounterId = SystemCounterDescriptor.ERRORS.id();
final AtomicCounter errorCounter = null != archiveCtx.errorCounter() ? archiveCtx.errorCounter() : new AtomicCounter(driverCtx.countersValuesBuffer(), errorCounterId);
final ErrorHandler errorHandler = null != archiveCtx.errorHandler() ? archiveCtx.errorHandler() : driverCtx.errorHandler();
archive = Archive.launch(archiveCtx.aeronDirectoryName(driverCtx.aeronDirectoryName()).mediaDriverAgentInvoker(driver.sharedAgentInvoker()).errorHandler(errorHandler).errorCounter(errorCounter));
clusterBackup = ClusterBackup.launch(clusterBackupCtx.aeronDirectoryName(driverCtx.aeronDirectoryName()));
return new ClusterBackupMediaDriver(driver, archive, clusterBackup);
} catch (final Exception ex) {
CloseHelper.quietCloseAll(clusterBackup, archive, driver);
throw ex;
}
}
use of org.agrona.ErrorHandler in project aeron by real-logic.
the class DynamicJoin method close.
void close() {
final ErrorHandler countedErrorHandler = ctx.countedErrorHandler();
CloseHelper.closeAll(countedErrorHandler, consensusPublication);
if (null != snapshotReplication) {
snapshotReplication.close(localArchive);
}
}
use of org.agrona.ErrorHandler in project aeron by real-logic.
the class AuthorisationServiceTest method shouldAllowAnyCommandIfAllowAllIsUsed.
@Test
void shouldAllowAnyCommandIfAllowAllIsUsed() {
final byte[] encodedCredentials = { 0x1, 0x2, 0x3 };
final ErrorHandler errorHandler = mock(ErrorHandler.class);
final int protocolId = 77;
final int actionId = ThreadLocalRandom.current().nextInt();
assertTrue(ALLOW_ALL.isAuthorised(protocolId, actionId, null, encodedCredentials));
verifyNoInteractions(errorHandler);
}
Aggregations