use of io.aeron.DriverProxy in project Aeron by real-logic.
the class DriverConductorTest method setUp.
@Before
public void setUp() throws Exception {
// System GC required in order to ensure that the direct byte buffers get cleaned and avoid OOM.
System.gc();
when(mockRawLogFactory.newNetworkPublication(anyString(), anyInt(), anyInt(), anyLong(), anyInt())).thenReturn(LogBufferHelper.newTestLogBuffers(TERM_BUFFER_LENGTH));
when(mockRawLogFactory.newNetworkedImage(anyString(), anyInt(), anyInt(), anyLong(), eq(TERM_BUFFER_LENGTH))).thenReturn(LogBufferHelper.newTestLogBuffers(TERM_BUFFER_LENGTH));
when(mockRawLogFactory.newIpcPublication(anyInt(), anyInt(), anyLong(), anyInt())).thenReturn(LogBufferHelper.newTestLogBuffers(TERM_BUFFER_LENGTH));
currentTimeNs = 0;
final UnsafeBuffer counterBuffer = new UnsafeBuffer(ByteBuffer.allocateDirect(BUFFER_LENGTH));
final CountersManager countersManager = new CountersManager(new UnsafeBuffer(ByteBuffer.allocateDirect(BUFFER_LENGTH * 2)), counterBuffer);
final MediaDriver.Context ctx = new MediaDriver.Context().unicastFlowControlSupplier(Configuration.unicastFlowControlSupplier()).multicastFlowControlSupplier(Configuration.multicastFlowControlSupplier()).toConductorFromReceiverCommandQueue(new OneToOneConcurrentArrayQueue<>(1024)).toConductorFromSenderCommandQueue(new OneToOneConcurrentArrayQueue<>(1024)).errorLog(mockErrorLog).rawLogBuffersFactory(mockRawLogFactory).countersManager(countersManager).nanoClock(nanoClock).sendChannelEndpointSupplier(Configuration.sendChannelEndpointSupplier()).receiveChannelEndpointSupplier(Configuration.receiveChannelEndpointSupplier()).congestControlSupplier(Configuration.congestionControlSupplier());
ctx.toDriverCommands(fromClientCommands);
ctx.clientProxy(mockClientProxy);
ctx.countersValuesBuffer(counterBuffer);
final SystemCounters mockSystemCounters = mock(SystemCounters.class);
ctx.systemCounters(mockSystemCounters);
when(mockSystemCounters.get(any())).thenReturn(mockErrorCounter);
ctx.epochClock(new SystemEpochClock());
ctx.receiverProxy(receiverProxy);
ctx.senderProxy(senderProxy);
ctx.fromReceiverDriverConductorProxy(fromReceiverConductorProxy);
ctx.fromSenderDriverConductorProxy(fromSenderConductorProxy);
ctx.clientLivenessTimeoutNs(CLIENT_LIVENESS_TIMEOUT_NS);
ctx.receiveChannelEndpointThreadLocals(new ReceiveChannelEndpointThreadLocals(ctx));
driverProxy = new DriverProxy(fromClientCommands);
driverConductor = new DriverConductor(ctx);
doAnswer(closeChannelEndpointAnswer).when(receiverProxy).closeReceiveChannelEndpoint(any());
}
use of io.aeron.DriverProxy in project Aeron by real-logic.
the class DriverConductorTest method shouldTimeoutNetworkPublicationWithSpy.
@Test
public void shouldTimeoutNetworkPublicationWithSpy() throws Exception {
final DriverProxy spyDriverProxy = new DriverProxy(fromClientCommands);
driverProxy.addPublication(CHANNEL_4000, STREAM_ID_1);
spyDriverProxy.addSubscription(spyForChannel(CHANNEL_4000), STREAM_ID_1);
driverConductor.doWork();
final ArgumentCaptor<NetworkPublication> captor = ArgumentCaptor.forClass(NetworkPublication.class);
verify(senderProxy, times(1)).newNetworkPublication(captor.capture());
final NetworkPublication publication = captor.getValue();
doWorkUntil(() -> nanoClock.nanoTime() >= CLIENT_LIVENESS_TIMEOUT_NS / 2);
spyDriverProxy.sendClientKeepalive();
doWorkUntil(() -> nanoClock.nanoTime() >= CLIENT_LIVENESS_TIMEOUT_NS + 1000);
spyDriverProxy.sendClientKeepalive();
doWorkUntil(() -> nanoClock.nanoTime() >= CLIENT_LIVENESS_TIMEOUT_NS * 2);
verify(senderProxy).removeNetworkPublication(eq(publication));
verify(mockClientProxy).onUnavailableImage(eq(networkPublicationCorrelationId(publication)), eq(STREAM_ID_1), anyString());
}
use of io.aeron.DriverProxy in project Aeron by real-logic.
the class IpcPublicationTest method setUp.
@SuppressWarnings("unchecked")
@Before
public void setUp() throws Exception {
final RingBuffer fromClientCommands = new ManyToOneRingBuffer(new UnsafeBuffer(ByteBuffer.allocateDirect(Configuration.CONDUCTOR_BUFFER_LENGTH)));
final RawLogFactory mockRawLogFactory = mock(RawLogFactory.class);
final UnsafeBuffer counterBuffer = new UnsafeBuffer(ByteBuffer.allocateDirect(BUFFER_LENGTH));
final CountersManager countersManager = new CountersManager(new UnsafeBuffer(ByteBuffer.allocateDirect(BUFFER_LENGTH * 2)), counterBuffer);
when(mockRawLogFactory.newIpcPublication(anyInt(), anyInt(), anyLong(), anyInt())).thenReturn(LogBufferHelper.newTestLogBuffers(TERM_BUFFER_LENGTH));
final MediaDriver.Context ctx = new MediaDriver.Context().toDriverCommands(fromClientCommands).rawLogBuffersFactory(mockRawLogFactory).clientProxy(mock(ClientProxy.class)).toConductorFromReceiverCommandQueue(mock(OneToOneConcurrentArrayQueue.class)).toConductorFromSenderCommandQueue(mock(OneToOneConcurrentArrayQueue.class)).epochClock(new SystemEpochClock()).countersManager(countersManager).systemCounters(mock(SystemCounters.class)).nanoClock(nanoClock);
ctx.countersValuesBuffer(counterBuffer);
driverProxy = new DriverProxy(fromClientCommands);
driverConductor = new DriverConductor(ctx);
driverProxy.addPublication(CommonContext.IPC_CHANNEL, STREAM_ID);
driverConductor.doWork();
ipcPublication = driverConductor.getIpcSharedPublication(STREAM_ID);
publisherLimit = new UnsafeBufferPosition(counterBuffer, ipcPublication.publisherLimitId());
}
Aggregations