/** * Stores a message so that it can be processed later. * @param message a message to store */ public final void storeMessage( Message message ) { this.messageQueue.add( message ); }
@Override public synchronized long getFailedReceptionCount() { return this.messageQueue == null ? 0 : this.messageQueue.getFailedReceptionCount(); }
@Override public synchronized long getReceivedMessagesCount() { return this.messageQueue == null ? 0 : this.messageQueue.getReceivedMessagesCount(); }
@Test public void testOffer_whenCapacityIsExceeded() { RoboconfMessageQueue queue = new RoboconfMessageQueue( 1 ); // We are in the capacity's bounds queue.offer( Mockito.mock( Message.class )); Assert.assertEquals( 0, queue.getFailedReceptionCount()); Assert.assertEquals( 1, queue.getReceivedMessagesCount()); Assert.assertEquals( 0, queue.getTimestampOfLastReceptionFailure()); Assert.assertNotEquals( 0, queue.getTimestampOfLastReceivedMessage()); // We exceed the capacity queue.offer( Mockito.mock( Message.class )); Assert.assertEquals( 0, queue.getFailedReceptionCount()); Assert.assertEquals( 1, queue.getReceivedMessagesCount()); Assert.assertEquals( 0, queue.getTimestampOfLastReceptionFailure()); Assert.assertNotEquals( 0, queue.getTimestampOfLastReceivedMessage()); }
@Override public void handleDelivery( String consumerTag, Envelope envelope, BasicProperties properties, byte[] body ) throws IOException { try { Message message = SerializationUtils.deserializeObject( body ); this.logger.finer( this.sourceName + " received a message " + message.getClass().getSimpleName() + " on routing key '" + envelope.getRoutingKey() + "'."); this.messageQueue.add( message ); } catch( ClassNotFoundException | IOException e ) { this.logger.severe( this.sourceName + ": a message could not be deserialized. => " + e.getClass().getSimpleName()); Utils.logException( this.logger, e ); this.messageQueue.errorWhileReceivingMessage(); } }
@Override public synchronized long getTimestampOfLastReceptionFailure() { return this.messageQueue == null ? 0 : this.messageQueue.getTimestampOfLastReceptionFailure(); }
@Override public synchronized long getTimestampOfLastReceivedMessage() { return this.messageQueue == null ? 0 : this.messageQueue.getTimestampOfLastReceivedMessage(); }
@Override public synchronized void reset() { this.sentMessagesCount.set( 0 ); this.failedSendingCount.set( 0 ); this.timestampOfLastSendingFailure.set( 0 ); this.timestampOfLastSentMessage.set( 0 ); if( this.messageQueue != null ) this.messageQueue.reset(); }
@Test( expected = RuntimeException.class ) public void testPutIsForbidden() throws Exception { RoboconfMessageQueue queue = new RoboconfMessageQueue(); queue.put( Mockito.mock( Message.class )); } }
@Test public void testAgent() throws Exception { // The messaging client is never null ReconfigurableClientAgent client = new ReconfigurableClientAgent(); Assert.assertNotNull( client.getMessagingClient()); // Invoke other method, no matter in which order client.setMessageQueue( new RoboconfMessageQueue()); Assert.assertFalse( client.hasValidClient()); Assert.assertFalse( client.isConnected()); }
@Override public final void run() { this.running.set( true ); while( this.running.get()) { try { Message message = this.messageQueue.take(); if( this.running.get()) processMessage( message ); } catch( InterruptedException e ) { break; } } Logger.getLogger( getClass().getName()).fine( "Roboconf's message processing thread is stopping." ); this.running.set( false ); }
@Test public void testProcessing() throws Exception { // The message is processed... this.processor.start(); this.processor.storeMessage( new MsgCmdResynchronize()); Thread.sleep( 1000 ); this.processor.stopProcessor(); Assert.assertEquals( 0, this.processor.getMessageQueue().size()); }
/** * Stores a message so that it can be processed later. * @param message a message to store */ public final void storeMessage( Message message ) { this.messageQueue.add( message ); }
@Override public synchronized long getFailedReceptionCount() { return this.messageQueue == null ? 0 : this.messageQueue.getFailedReceptionCount(); }
@Override public synchronized long getReceivedMessagesCount() { return this.messageQueue == null ? 0 : this.messageQueue.getReceivedMessagesCount(); }
@Override public synchronized long getTimestampOfLastReceptionFailure() { return this.messageQueue == null ? 0 : this.messageQueue.getTimestampOfLastReceptionFailure(); }
@Override public synchronized long getTimestampOfLastReceivedMessage() { return this.messageQueue == null ? 0 : this.messageQueue.getTimestampOfLastReceivedMessage(); }
@Override public synchronized void reset() { this.sentMessagesCount.set( 0 ); this.failedSendingCount.set( 0 ); this.timestampOfLastSendingFailure.set( 0 ); this.timestampOfLastSentMessage.set( 0 ); if( this.messageQueue != null ) this.messageQueue.reset(); }
@Test public void testDm() throws Exception { // The messaging client is never null ReconfigurableClientDm client = new ReconfigurableClientDm(); Assert.assertNotNull( client.getMessagingClient()); // Invoke other method, no matter in which order client.setMessageQueue( new RoboconfMessageQueue()); Assert.assertFalse( client.hasValidClient()); Assert.assertFalse( client.isConnected()); client.deleteMessagingServerArtifacts( new Application( "app", new ApplicationTemplate())); client.propagateAgentTermination( null, null ); }
@Override public final void run() { this.running.set( true ); while( this.running.get()) { try { Message message = this.messageQueue.take(); if( this.running.get()) processMessage( message ); } catch( InterruptedException e ) { break; } } Logger.getLogger( getClass().getName()).fine( "Roboconf's message processing thread is stopping." ); this.running.set( false ); }