/** * Resets the internal client. */ protected synchronized IMessagingClient resetInternalClient() { IMessagingClient oldClient = this.messagingClient; this.messagingClient = new JmxWrapperForMessagingClient( null ); return oldClient; }
@Override public Map<String,String> getConfiguration() { final Map<String,String> result; synchronized( this ) { result = this.messagingClient.getConfiguration(); } return result; }
@Override public void addMessagingClientFactory( final IMessagingClientFactory factory ) { this.logger.fine( "A new messaging factory was added: " + factory.getType()); synchronized( this ) { if( this.messagingClient.isDismissClient() && factory.getType().equals( this.messagingType )) { // This is the messaging factory we were expecting... // We can try to switch to this incoming factory right now! switchMessagingType( this.messagingType ); } } }
JmxWrapperForMessagingClient client = new JmxWrapperForMessagingClient( messagingClient ); Assert.assertEquals( 0, client.getSentMessagesCount()); Assert.assertEquals( 0, client.getTimestampOfLastSentMessage()); Assert.assertEquals( 0, client.getFailedSendingCount()); Assert.assertEquals( 0, client.getTimestampOfLastSendingFailure()); Assert.assertEquals( 0, client.getReceivedMessagesCount()); Assert.assertEquals( 0, client.getTimestampOfLastReceivedMessage()); Assert.assertEquals( 0, client.getFailedReceptionCount()); Assert.assertEquals( 0, client.getTimestampOfLastReceptionFailure()); client.publish( Mockito.mock( MessagingContext.class ), Mockito.mock( Message.class )); Mockito.verify( messagingClient ).publish( Mockito.any( MessagingContext.class ), Mockito.any( Message.class )); Assert.assertEquals( 1, client.getSentMessagesCount()); Assert.assertNotEquals( 0, client.getTimestampOfLastSentMessage()); Assert.assertEquals( 0, client.getFailedSendingCount()); Assert.assertEquals( 0, client.getTimestampOfLastSendingFailure()); Assert.assertEquals( 0, client.getReceivedMessagesCount()); Assert.assertEquals( 0, client.getTimestampOfLastReceivedMessage()); Assert.assertEquals( 0, client.getFailedReceptionCount()); Assert.assertEquals( 0, client.getTimestampOfLastReceptionFailure());
@Test public void testSimpleWrappedMethods() throws Exception { // We do not run in OSGi, but it should not raise any error IMessagingClient messagingClient = Mockito.mock( IMessagingClient.class ); JmxWrapperForMessagingClient client = new JmxWrapperForMessagingClient( messagingClient ); // Simple wrapped methods client.closeConnection(); client.deleteMessagingServerArtifacts( Mockito.mock( Application.class )); Assert.assertEquals( 0, client.getConfiguration().size()); client.openConnection(); client.subscribe( Mockito.mock( MessagingContext.class )); client.unsubscribe( Mockito.mock( MessagingContext.class )); Mockito.verify( messagingClient ).closeConnection();; Mockito.verify( messagingClient ).deleteMessagingServerArtifacts( Mockito.any( Application.class ));; Mockito.verify( messagingClient ).getConfiguration(); Mockito.verify( messagingClient ).openConnection(); Mockito.verify( messagingClient ).subscribe( Mockito.any( MessagingContext.class )); Mockito.verify( messagingClient ).unsubscribe( Mockito.any( MessagingContext.class )); Mockito.verifyNoMoreInteractions( messagingClient ); }
@Test @SuppressWarnings( "unchecked" ) public void testUnregister_withRegistration_withException() { IMessagingClient messagingClient = Mockito.mock( IMessagingClient.class ); JmxWrapperForMessagingClient client = new JmxWrapperForMessagingClient( messagingClient ); ServiceRegistration<MessagingApiMBean> serviceReg = Mockito.mock( ServiceRegistration.class ); Mockito.doThrow( new RuntimeException( "for test" )).when( serviceReg ).unregister(); client.serviceReg = serviceReg; client.unregisterService(); Assert.assertNull( client.serviceReg ); Mockito.verify( serviceReg, Mockito.only()).unregister(); }
IMessagingClient rawClient = createMessagingClient( factoryName ); if( rawClient != null ) { newMessagingClient = new JmxWrapperForMessagingClient( rawClient ); newMessagingClient.setMessageQueue( this.messageProcessor.getMessageQueue()); openConnection( newMessagingClient );
@Test public void testSetOwnerProperties() { IMessagingClient messagingClient = Mockito.mock( IMessagingClient.class ); JmxWrapperForMessagingClient client = new JmxWrapperForMessagingClient( messagingClient ); Assert.assertNull( client.getId()); client.setOwnerProperties( RecipientKind.DM, "domain", "app", "/root" ); Mockito.verify( messagingClient ).setOwnerProperties( RecipientKind.DM, "domain", "app", "/root" ); Assert.assertNotNull( client.getId()); Assert.assertEquals( MessagingUtils.buildId( RecipientKind.DM, "domain", "app", "/root" ), client.getId()); }
@Test public void testTerminateClient_3() throws Exception { Logger logger = Logger.getLogger( getClass().getName()); JmxWrapperForMessagingClient client = Mockito.mock( JmxWrapperForMessagingClient.class ); Mockito.doThrow( new IOException( "for test" )).when( client ).closeConnection(); ReconfigurableClient.terminateClient( client, "", logger ); Mockito.verify( client ).closeConnection(); Mockito.verify( client ).unregisterService();; Mockito.verifyNoMoreInteractions( client ); }
/** * Closes the connection of a messaging client and terminates it properly. * @param client the client (never null) * @param errorMessage the error message to log in case of problem * @param logger a logger */ static void terminateClient( IMessagingClient client, String errorMessage, Logger logger ) { try { logger.fine( "The reconfigurable client is requesting its internal connection to be closed." ); if( client != null ) client.closeConnection(); } catch( Exception e ) { logger.warning( errorMessage + " " + e.getMessage()); Utils.logException( logger, e ); } finally { // "unregisterService" was not merged with "closeConnection" // on purpose. What is specific to JMX is restricted to this class // and this bundle. Sub-classes may use "closeConnection" without // any side effect on the JMX part. if( client instanceof JmxWrapperForMessagingClient ) ((JmxWrapperForMessagingClient) client).unregisterService(); } } }
JmxWrapperForMessagingClient client = new JmxWrapperForMessagingClient( messagingClient ); Assert.assertEquals( 0, client.getSentMessagesCount()); Assert.assertEquals( 0, client.getTimestampOfLastSentMessage()); Assert.assertEquals( 0, client.getFailedSendingCount()); Assert.assertEquals( 0, client.getTimestampOfLastSendingFailure()); Assert.assertEquals( 0, client.getReceivedMessagesCount()); Assert.assertEquals( 0, client.getTimestampOfLastReceivedMessage()); Assert.assertEquals( 0, client.getFailedReceptionCount()); Assert.assertEquals( 0, client.getTimestampOfLastReceptionFailure()); client.setMessageQueue( queue ); Mockito.verify( messagingClient ).setMessageQueue( queue ); Assert.assertEquals( 0, client.getSentMessagesCount()); Assert.assertEquals( 0, client.getTimestampOfLastSentMessage()); Assert.assertEquals( 0, client.getFailedSendingCount()); Assert.assertEquals( 0, client.getTimestampOfLastSendingFailure()); Assert.assertEquals( queue.getReceivedMessagesCount(), client.getReceivedMessagesCount()); Assert.assertEquals( queue.getTimestampOfLastReceivedMessage(), client.getTimestampOfLastReceivedMessage()); Assert.assertEquals( queue.getFailedReceptionCount(), client.getFailedReceptionCount()); Assert.assertEquals( queue.getTimestampOfLastReceptionFailure(), client.getTimestampOfLastReceptionFailure());
@Test @SuppressWarnings( "unchecked" ) public void testUnregister_withRegistration() { IMessagingClient messagingClient = Mockito.mock( IMessagingClient.class ); JmxWrapperForMessagingClient client = new JmxWrapperForMessagingClient( messagingClient ); ServiceRegistration<MessagingApiMBean> serviceReg = Mockito.mock( ServiceRegistration.class ); client.serviceReg = serviceReg; client.unregisterService(); Assert.assertNull( client.serviceReg ); Mockito.verify( serviceReg, Mockito.only()).unregister(); }
IMessagingClient rawClient = createMessagingClient( factoryName ); if( rawClient != null ) { newMessagingClient = new JmxWrapperForMessagingClient( rawClient ); newMessagingClient.setMessageQueue( this.messageProcessor.getMessageQueue()); openConnection( newMessagingClient );
@Test public void testTerminateClient_2() throws Exception { Logger logger = Logger.getLogger( getClass().getName()); JmxWrapperForMessagingClient client = Mockito.mock( JmxWrapperForMessagingClient.class ); ReconfigurableClient.terminateClient( client, "", logger ); Mockito.verify( client ).closeConnection(); Mockito.verify( client ).unregisterService();; Mockito.verifyNoMoreInteractions( client ); }
/** * Closes the connection of a messaging client and terminates it properly. * @param client the client (never null) * @param errorMessage the error message to log in case of problem * @param logger a logger */ static void terminateClient( IMessagingClient client, String errorMessage, Logger logger ) { try { logger.fine( "The reconfigurable client is requesting its internal connection to be closed." ); if( client != null ) client.closeConnection(); } catch( Exception e ) { logger.warning( errorMessage + " " + e.getMessage()); Utils.logException( logger, e ); } finally { // "unregisterService" was not merged with "closeConnection" // on purpose. What is specific to JMX is restricted to this class // and this bundle. Sub-classes may use "closeConnection" without // any side effect on the JMX part. if( client instanceof JmxWrapperForMessagingClient ) ((JmxWrapperForMessagingClient) client).unregisterService(); } } }
JmxWrapperForMessagingClient client = new JmxWrapperForMessagingClient( messagingClient ); Mockito.doThrow( new IOException( "for test" )).when( messagingClient ).publish( Mockito.any( MessagingContext.class ), Assert.assertEquals( 0, client.getSentMessagesCount()); Assert.assertEquals( 0, client.getTimestampOfLastSentMessage()); Assert.assertEquals( 0, client.getFailedSendingCount()); Assert.assertEquals( 0, client.getTimestampOfLastSendingFailure()); Assert.assertEquals( 0, client.getReceivedMessagesCount()); Assert.assertEquals( 0, client.getTimestampOfLastReceivedMessage()); Assert.assertEquals( 0, client.getFailedReceptionCount()); Assert.assertEquals( 0, client.getTimestampOfLastReceptionFailure()); client.publish( Mockito.mock( MessagingContext.class ), Mockito.mock( Message.class )); Assert.fail( "An IO exception was expected. It should have been propagated." ); Assert.assertEquals( 0, client.getSentMessagesCount()); Assert.assertEquals( 0, client.getTimestampOfLastSentMessage()); Assert.assertEquals( 1, client.getFailedSendingCount()); Assert.assertNotEquals( 0, client.getTimestampOfLastSendingFailure()); Assert.assertEquals( 0, client.getReceivedMessagesCount()); Assert.assertEquals( 0, client.getTimestampOfLastReceivedMessage()); Assert.assertEquals( 0, client.getFailedReceptionCount());
@Test public void testUnregister_noRegistration() { IMessagingClient messagingClient = Mockito.mock( IMessagingClient.class ); JmxWrapperForMessagingClient client = new JmxWrapperForMessagingClient( messagingClient ); Assert.assertNull( client.serviceReg ); client.unregisterService(); Assert.assertNull( client.serviceReg ); }
@Override public void addMessagingClientFactory( final IMessagingClientFactory factory ) { this.logger.fine( "A new messaging factory was added: " + factory.getType()); synchronized( this ) { if( this.messagingClient.isDismissClient() && factory.getType().equals( this.messagingType )) { // This is the messaging factory we were expecting... // We can try to switch to this incoming factory right now! switchMessagingType( this.messagingType ); } } }
/** * Resets the internal client. */ protected synchronized IMessagingClient resetInternalClient() { IMessagingClient oldClient = this.messagingClient; this.messagingClient = new JmxWrapperForMessagingClient( null ); return oldClient; }
@Override public Map<String,String> getConfiguration() { final Map<String,String> result; synchronized( this ) { result = this.messagingClient.getConfiguration(); } return result; }