@Test public void addPublicationShouldNotifyMediaDriver() { whenReceiveBroadcastOnMessage( ControlProtocolEvents.ON_PUBLICATION_READY, publicationReadyBuffer, (buffer) -> publicationReady.length()); conductor.addPublication(CHANNEL, STREAM_ID_1); verify(driverProxy).addPublication(CHANNEL, STREAM_ID_1); }
@Test public void addPublicationShouldMapLogFile() { whenReceiveBroadcastOnMessage( ControlProtocolEvents.ON_PUBLICATION_READY, publicationReadyBuffer, (buffer) -> publicationReady.length()); conductor.addPublication(CHANNEL, STREAM_ID_1); verify(logBuffersFactory).map(SESSION_ID_1 + "-log"); }
@Test public void closingPublicationShouldPurgeCache() { whenReceiveBroadcastOnMessage( ControlProtocolEvents.ON_PUBLICATION_READY, publicationReadyBuffer, (buffer) -> publicationReady.length()); final Publication firstPublication = conductor.addPublication(CHANNEL, STREAM_ID_1); whenReceiveBroadcastOnMessage( ControlProtocolEvents.ON_OPERATION_SUCCESS, operationSuccessBuffer, (buffer) -> OperationSucceededFlyweight.LENGTH); firstPublication.close(); whenReceiveBroadcastOnMessage( ControlProtocolEvents.ON_PUBLICATION_READY, publicationReadyBuffer, (buffer) -> publicationReady.length()); final Publication secondPublication = conductor.addPublication(CHANNEL, STREAM_ID_1); assertThat(firstPublication, not(sameInstance(secondPublication))); }
@Test public void shouldNotMapBuffersForUnknownCorrelationId() { whenReceiveBroadcastOnMessage( ControlProtocolEvents.ON_PUBLICATION_READY, publicationReadyBuffer, (buffer) -> { publicationReady.correlationId(UNKNOWN_CORRELATION_ID); publicationReady.registrationId(UNKNOWN_CORRELATION_ID); return publicationReady.length(); }); whenReceiveBroadcastOnMessage( ControlProtocolEvents.ON_PUBLICATION_READY, publicationReadyBuffer, (buffer) -> { publicationReady.correlationId(CORRELATION_ID); return publicationReady.length(); }); final Publication publication = conductor.addPublication(CHANNEL, STREAM_ID_1); conductor.doWork(); verify(logBuffersFactory, times(1)).map(anyString()); assertThat(publication.registrationId(), is(CORRELATION_ID)); }
@Test public void closingPublicationShouldNotifyMediaDriver() { whenReceiveBroadcastOnMessage( ControlProtocolEvents.ON_PUBLICATION_READY, publicationReadyBuffer, (buffer) -> publicationReady.length()); final Publication publication = conductor.addPublication(CHANNEL, STREAM_ID_1); whenReceiveBroadcastOnMessage( ControlProtocolEvents.ON_OPERATION_SUCCESS, operationSuccessBuffer, (buffer) -> OperationSucceededFlyweight.LENGTH); publication.close(); verify(driverProxy).removePublication(CORRELATION_ID); }
public void onPublicationReady( final long correlationId, final long registrationId, final int streamId, final int sessionId, final String logFileName, final int positionCounterId, final int channelStatusCounterId, final boolean isExclusive) { publicationReady .correlationId(correlationId) .registrationId(registrationId) .sessionId(sessionId) .streamId(streamId) .publicationLimitCounterId(positionCounterId) .channelStatusCounterId(channelStatusCounterId) .logFileName(logFileName); final int msgTypeId = isExclusive ? ON_EXCLUSIVE_PUBLICATION_READY : ON_PUBLICATION_READY; transmit(msgTypeId, buffer, 0, publicationReady.length()); }
@Test public void closingPublicationDoesNotRemoveOtherPublications() { whenReceiveBroadcastOnMessage( ControlProtocolEvents.ON_PUBLICATION_READY, publicationReadyBuffer, (buffer) -> publicationReady.length()); final Publication publication = conductor.addPublication(CHANNEL, STREAM_ID_1); whenReceiveBroadcastOnMessage( ControlProtocolEvents.ON_PUBLICATION_READY, publicationReadyBuffer, (buffer) -> { publicationReady.streamId(STREAM_ID_2); publicationReady.sessionId(SESSION_ID_2); publicationReady.logFileName(SESSION_ID_2 + "-log"); publicationReady.correlationId(CORRELATION_ID_2); publicationReady.registrationId(CORRELATION_ID_2); return publicationReady.length(); }); conductor.addPublication(CHANNEL, STREAM_ID_2); whenReceiveBroadcastOnMessage( ControlProtocolEvents.ON_OPERATION_SUCCESS, operationSuccessBuffer, (buffer) -> OperationSucceededFlyweight.LENGTH); publication.close(); verify(driverProxy).removePublication(CORRELATION_ID); verify(driverProxy, never()).removePublication(CORRELATION_ID_2); }
@Test(expected = RegistrationException.class) public void shouldFailToClosePublicationOnMediaDriverError() { whenReceiveBroadcastOnMessage( ControlProtocolEvents.ON_PUBLICATION_READY, publicationReadyBuffer, (buffer) -> publicationReady.length()); final Publication publication = conductor.addPublication(CHANNEL, STREAM_ID_1); whenReceiveBroadcastOnMessage( ControlProtocolEvents.ON_ERROR, errorMessageBuffer, (buffer) -> { errorResponse.errorCode(INVALID_CHANNEL); errorResponse.errorMessage("channel unknown"); errorResponse.offendingCommandCorrelationId(CLOSE_CORRELATION_ID); return errorResponse.length(); }); publication.close(); }
public void onPublicationReady( final long correlationId, final long registrationId, final int streamId, final int sessionId, final String logFileName, final int positionCounterId, final int channelStatusCounterId, final boolean isExclusive) { publicationReady .correlationId(correlationId) .registrationId(registrationId) .sessionId(sessionId) .streamId(streamId) .publicationLimitCounterId(positionCounterId) .channelStatusCounterId(channelStatusCounterId) .logFileName(logFileName); final int msgTypeId = isExclusive ? ON_EXCLUSIVE_PUBLICATION_READY : ON_PUBLICATION_READY; transmit(msgTypeId, buffer, 0, publicationReady.length()); }
public void onPublicationReady( final long correlationId, final long registrationId, final int streamId, final int sessionId, final String logFileName, final int positionCounterId, final int channelStatusCounterId, final boolean isExclusive) { publicationReady .correlationId(correlationId) .registrationId(registrationId) .sessionId(sessionId) .streamId(streamId) .publicationLimitCounterId(positionCounterId) .channelStatusCounterId(channelStatusCounterId) .logFileName(logFileName); final int msgTypeId = isExclusive ? ON_EXCLUSIVE_PUBLICATION_READY : ON_PUBLICATION_READY; transmit(msgTypeId, buffer, 0, publicationReady.length()); }