clientProxy.onSubscriptionReady(registrationId, ChannelEndpointStatus.NO_ID_ALLOCATED); final IpcPublication publication = (IpcPublication)subscriberPosition.subscribable(); clientProxy.onAvailableImage( publication.registrationId(), streamId,
void clientTimeout(final long clientId) { clientProxy.onClientTimeout(clientId); }
@Test public void shouldInformClientsOfRemovedCounter() { final long registrationId = driverProxy.addCounter( COUNTER_TYPE_ID, counterKeyAndLabel, COUNTER_KEY_OFFSET, COUNTER_KEY_LENGTH, counterKeyAndLabel, COUNTER_LABEL_OFFSET, COUNTER_LABEL_LENGTH); driverConductor.doWork(); final long removeCorrelationId = driverProxy.removeCounter(registrationId); driverConductor.doWork(); final ArgumentCaptor<Integer> captor = ArgumentCaptor.forClass(Integer.class); final InOrder inOrder = inOrder(mockClientProxy); inOrder.verify(mockClientProxy).onCounterReady(eq(registrationId), captor.capture()); inOrder.verify(mockClientProxy).operationSucceeded(removeCorrelationId); inOrder.verify(mockClientProxy).onUnavailableCounter(eq(registrationId), captor.capture()); verify(spyCountersManager).free(captor.getValue()); }
void onRemoveCounter(final long registrationId, final long correlationId) { CounterLink counterLink = null; final ArrayList<CounterLink> counterLinks = this.counterLinks; for (int i = 0, size = counterLinks.size(); i < size; i++) { final CounterLink link = counterLinks.get(i); if (registrationId == link.registrationId()) { counterLink = link; fastUnorderedRemove(counterLinks, i); break; } } if (null == counterLink) { throw new ControlProtocolException(UNKNOWN_COUNTER, "unknown counter: " + registrationId); } clientProxy.operationSucceeded(correlationId); clientProxy.onUnavailableCounter(registrationId, counterLink.counterId()); counterLink.close(); }
@Test public void shouldErrorOnAddSubscriptionWithInvalidChannel() { driverProxy.addSubscription(INVALID_URI, STREAM_ID_1); driverConductor.doWork(); driverConductor.doWork(); verify(senderProxy, never()).newNetworkPublication(any()); verify(mockClientProxy).onError(anyLong(), eq(INVALID_CHANNEL), anyString()); verify(mockClientProxy, never()).operationSucceeded(anyLong()); verify(mockErrorCounter).increment(); verify(mockErrorHandler).onError(any(Throwable.class)); }
@Test public void shouldErrorOnRemoveSubscriptionOnUnknownRegistrationId() { final long id1 = driverProxy.addSubscription(CHANNEL_4000, STREAM_ID_1); driverProxy.removeSubscription(id1 + 100); driverConductor.doWork(); final InOrder inOrder = inOrder(receiverProxy, mockClientProxy); inOrder.verify(receiverProxy).addSubscription(any(), anyInt()); inOrder.verify(mockClientProxy).onSubscriptionReady(eq(id1), anyInt()); inOrder.verify(mockClientProxy).onError(anyLong(), eq(UNKNOWN_SUBSCRIPTION), anyString()); inOrder.verifyNoMoreInteractions(); verify(mockErrorHandler).onError(any(Throwable.class)); }
@Test public void shouldBeAbleToAddThenRemoveTheAddIpcPublicationWithExistingSubscription() { final long idSub = driverProxy.addSubscription(CHANNEL_IPC, STREAM_ID_1); final long idPubOne = driverProxy.addPublication(CHANNEL_IPC, STREAM_ID_1); driverConductor.doWork(); final IpcPublication ipcPublicationOne = driverConductor.getSharedIpcPublication(STREAM_ID_1); assertNotNull(ipcPublicationOne); final long idPubOneRemove = driverProxy.removePublication(idPubOne); driverConductor.doWork(); final long idPubTwo = driverProxy.addPublication(CHANNEL_IPC, STREAM_ID_1); driverConductor.doWork(); final IpcPublication ipcPublicationTwo = driverConductor.getSharedIpcPublication(STREAM_ID_1); assertNotNull(ipcPublicationTwo); final InOrder inOrder = inOrder(mockClientProxy); inOrder.verify(mockClientProxy).onSubscriptionReady(eq(idSub), anyInt()); inOrder.verify(mockClientProxy).onPublicationReady( anyLong(), eq(idPubOne), eq(STREAM_ID_1), anyInt(), any(), anyInt(), anyInt(), eq(false)); inOrder.verify(mockClientProxy).onAvailableImage( eq(ipcPublicationOne.registrationId()), eq(STREAM_ID_1), eq(ipcPublicationOne.sessionId()), anyLong(), anyInt(), eq(ipcPublicationOne.rawLog().fileName()), anyString()); inOrder.verify(mockClientProxy).operationSucceeded(eq(idPubOneRemove)); inOrder.verify(mockClientProxy).onPublicationReady( anyLong(), eq(idPubTwo), eq(STREAM_ID_1), anyInt(), any(), anyInt(), anyInt(), eq(false)); inOrder.verify(mockClientProxy).onAvailableImage( eq(ipcPublicationTwo.registrationId()), eq(STREAM_ID_1), eq(ipcPublicationTwo.sessionId()), anyLong(), anyInt(), eq(ipcPublicationTwo.rawLog().fileName()), anyString()); }
@Test public void shouldBeAbleToAddIpcPublicationThenSubscription() { final long idPub = driverProxy.addPublication(CHANNEL_IPC, STREAM_ID_1); final long idSub = driverProxy.addSubscription(CHANNEL_IPC, STREAM_ID_1); driverConductor.doWork(); final IpcPublication ipcPublication = driverConductor.getSharedIpcPublication(STREAM_ID_1); assertNotNull(ipcPublication); final InOrder inOrder = inOrder(mockClientProxy); inOrder.verify(mockClientProxy).onPublicationReady( anyLong(), eq(idPub), eq(STREAM_ID_1), anyInt(), any(), anyInt(), anyInt(), eq(false)); inOrder.verify(mockClientProxy).onSubscriptionReady(eq(idSub), anyInt()); inOrder.verify(mockClientProxy).onAvailableImage( eq(ipcPublication.registrationId()), eq(STREAM_ID_1), eq(ipcPublication.sessionId()), anyLong(), anyInt(), eq(ipcPublication.rawLog().fileName()), anyString()); }
inOrder.verify(mockClientProxy, times(1)).onSubscriptionReady(eq(subOneId), anyInt()); inOrder.verify(mockClientProxy, times(1)).onAvailableImage( eq(publicationImage.correlationId()), eq(STREAM_ID_1), anyString(), anyString()); inOrder.verify(mockClientProxy, times(1)).onUnavailableImage( eq(publicationImage.correlationId()), eq(subOneId), eq(STREAM_ID_1), anyString()); inOrder.verify(mockClientProxy, times(1)).onSubscriptionReady(eq(subTwoId), anyInt()); inOrder.verifyNoMoreInteractions();
void onRemovePublication(final long registrationId, final long correlationId) { PublicationLink publicationLink = null; final ArrayList<PublicationLink> publicationLinks = this.publicationLinks; for (int i = 0, size = publicationLinks.size(); i < size; i++) { final PublicationLink publication = publicationLinks.get(i); if (registrationId == publication.registrationId()) { publicationLink = publication; fastUnorderedRemove(publicationLinks, i); break; } } if (null == publicationLink) { throw new ControlProtocolException(UNKNOWN_PUBLICATION, "unknown publication: " + registrationId); } publicationLink.close(); clientProxy.operationSucceeded(correlationId); }
@Test public void shouldNotAddNetworkPublicationThenSingleSpyWithDifferentSessionId() { final int sessionIdPub = -4097; final int sessionIdSub = -4098; final String sessionIdPubParam = "|" + CommonContext.SESSION_ID_PARAM_NAME + "=" + sessionIdPub; final String sessionIdSubParam = "|" + CommonContext.SESSION_ID_PARAM_NAME + "=" + sessionIdSub; driverProxy.addPublication(CHANNEL_4000 + sessionIdPubParam, STREAM_ID_1); driverProxy.addSubscription(spyForChannel(CHANNEL_4000 + sessionIdSubParam), 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(); assertFalse(publication.hasSpies()); verify(mockClientProxy, never()).onAvailableImage( anyLong(), eq(STREAM_ID_1), anyInt(), anyLong(), anyInt(), anyString(), anyString()); }
clientProxy.onPublicationReady( correlationId, ipcPublication.registrationId(), clientProxy.onAvailableImage( ipcPublication.registrationId(), streamId,
public void onChannelEndpointError(final long statusIndicatorId, final Exception error) { final String errorMessage = error.getClass().getSimpleName() + " : " + error.getMessage(); clientProxy.onError(statusIndicatorId, CHANNEL_ENDPOINT_ERROR, errorMessage); }
void transitionToLinger(final IpcPublication publication) { for (int i = 0, size = subscriptionLinks.size(); i < size; i++) { final SubscriptionLink link = subscriptionLinks.get(i); if (link.isLinked(publication)) { clientProxy.onUnavailableImage( publication.registrationId(), link.registrationId(), publication.streamId(), CommonContext.IPC_CHANNEL); } } }
@Test public void shouldBeAbleToAddSinglePublication() { driverProxy.addPublication(CHANNEL_4000, STREAM_ID_1); driverConductor.doWork(); verify(senderProxy).registerSendChannelEndpoint(any()); final ArgumentCaptor<NetworkPublication> captor = ArgumentCaptor.forClass(NetworkPublication.class); verify(senderProxy, times(1)).newNetworkPublication(captor.capture()); final NetworkPublication publication = captor.getValue(); assertThat(publication.streamId(), is(STREAM_ID_1)); verify(mockClientProxy).onPublicationReady( anyLong(), anyLong(), eq(STREAM_ID_1), anyInt(), any(), anyInt(), anyInt(), eq(false)); }
@Test public void shouldErrorOnRemovePublicationOnUnknownRegistrationId() { final long id = driverProxy.addPublication(CHANNEL_4000, STREAM_ID_1); driverProxy.removePublication(id + 1); driverConductor.doWork(); final InOrder inOrder = inOrder(senderProxy, mockClientProxy); inOrder.verify(senderProxy).newNetworkPublication(any()); inOrder.verify(mockClientProxy).onPublicationReady( anyLong(), eq(id), eq(STREAM_ID_1), anyInt(), any(), anyInt(), anyInt(), eq(false)); inOrder.verify(mockClientProxy).onError(anyLong(), eq(UNKNOWN_PUBLICATION), anyString()); inOrder.verifyNoMoreInteractions(); verify(mockErrorCounter).increment(); verify(mockErrorHandler).onError(any(Throwable.class)); }
@Test public void shouldRemoveSingleCounter() { final long registrationId = driverProxy.addCounter( COUNTER_TYPE_ID, counterKeyAndLabel, COUNTER_KEY_OFFSET, COUNTER_KEY_LENGTH, counterKeyAndLabel, COUNTER_LABEL_OFFSET, COUNTER_LABEL_LENGTH); driverConductor.doWork(); final long removeCorrelationId = driverProxy.removeCounter(registrationId); driverConductor.doWork(); final ArgumentCaptor<Integer> captor = ArgumentCaptor.forClass(Integer.class); final InOrder inOrder = inOrder(mockClientProxy); inOrder.verify(mockClientProxy).onCounterReady(eq(registrationId), captor.capture()); inOrder.verify(mockClientProxy).operationSucceeded(removeCorrelationId); verify(spyCountersManager).free(captor.getValue()); }
inOrder.verify(mockClientProxy, times(2)).onAvailableImage( eq(publicationImage.correlationId()), eq(STREAM_ID_1), anyString(), anyString()); inOrder.verify(mockClientProxy, times(1)).onUnavailableImage( eq(publicationImage.correlationId()), eq(subId1), eq(STREAM_ID_1), anyString()); inOrder.verify(mockClientProxy, times(1)).onUnavailableImage( eq(publicationImage.correlationId()), eq(subId2), eq(STREAM_ID_1), anyString());
void onAddCounter( final int typeId, final DirectBuffer keyBuffer, final int keyOffset, final int keyLength, final DirectBuffer labelBuffer, final int labelOffset, final int labelLength, final long correlationId, final long clientId) { final AeronClient client = getOrAddClient(clientId); final AtomicCounter counter = countersManager.newCounter( typeId, keyBuffer, keyOffset, keyLength, labelBuffer, labelOffset, labelLength); counterLinks.add(new CounterLink(counter, correlationId, client)); clientProxy.onCounterReady(correlationId, counter.id()); }
@Test public void shouldBeAbleToAddSingleSpy() { final long id = driverProxy.addSubscription(spyForChannel(CHANNEL_4000), STREAM_ID_1); driverConductor.doWork(); verify(receiverProxy, never()).registerReceiveChannelEndpoint(any()); verify(receiverProxy, never()).addSubscription(any(), eq(STREAM_ID_1)); verify(mockClientProxy).onSubscriptionReady(eq(id), anyInt()); assertNull(driverConductor.receiverChannelEndpoint(UdpChannel.parse(CHANNEL_4000))); }