@Override public void setMessageQueue( RoboconfMessageQueue messageQueue ) { getMessagingClient().setMessageQueue( messageQueue ); }
@Override public void listenToAgentMessages( Application application, ListenerCommand command ) throws IOException { listenToAgentMessages( getMessagingClient(), application, command ); }
@Test public void testInvalidFactory_dm() throws Exception { // The internal client will be null. // But still, there will be no NPE or other exception. ReconfigurableClientDm client = new ReconfigurableClientDm(); client.switchMessagingType( null ); client.openConnection(); }
final ReconfigurableClientDm client = new ReconfigurableClientDm(); client.associateMessageProcessor(new AbstractMessageProcessor<IDmClient>( "dummy.messageProcessor" ) { @Override protected void processMessage( final Message message ) { client.setRegistry( registry ); client.console = Mockito.mock( PrintStream.class ); client.switchMessagingType( "foo" ); Assert.assertEquals( "foo", client.getMessagingType()); Assert.assertEquals( "foo", client.getMessagingClient().getMessagingType()); Assert.assertEquals( JmxWrapperForMessagingClient.class, client.getMessagingClient().getClass()); Assert.assertFalse(((JmxWrapperForMessagingClient) client.getMessagingClient()).isDismissClient()); client.switchMessagingType( null ); Assert.assertNull( client.getMessagingType()); Assert.assertEquals( JmxWrapperForMessagingClient.class, client.getMessagingClient().getClass()); Assert.assertTrue(((JmxWrapperForMessagingClient) client.getMessagingClient()).isDismissClient()); Mockito.verifyNoMoreInteractions( client.console );
@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 ); }
ReconfigurableClientDm dmClient = new ReconfigurableClientDm(); dmClient.setRegistry( this.registry ); dmClient.associateMessageProcessor( createDmProcessor( dmMessages )); dmClient.switchMessagingType( getMessagingType()); this.clients.add( dmClient ); dmClient.sendMessageToAgent( app, rootInstance, new MsgCmdSetScopedInstance( rootInstance )); Thread.sleep( getDelay()); Assert.assertEquals( 1, agentMessages.size()); dmClient.sendMessageToAgent( app, rootInstance, new MsgCmdRemoveInstance( rootInstance )); Thread.sleep( getDelay()); Assert.assertEquals( 2, agentMessages.size()); dmClient.listenToAgentMessages( app, ListenerCommand.START ); agentClient.sendMessageToTheDm( new MsgNotifMachineDown( app.getName(), rootInstance )); Thread.sleep( getDelay()); dmClient.sendMessageToAgent( app, rootInstance, new MsgCmdChangeInstanceState( rootInstance, InstanceStatus.DEPLOYED_STARTED )); Thread.sleep( getDelay()); Assert.assertEquals( 3, agentMessages.size()); dmClient.sendMessageToAgent( app, rootInstance, new MsgCmdChangeInstanceState( rootInstance, InstanceStatus.DEPLOYED_STARTED )); Thread.sleep( getDelay()); Assert.assertEquals( 3, agentMessages.size()); dmClient.listenToAgentMessages( app, ListenerCommand.STOP ); agentClient.sendMessageToTheDm( new MsgNotifHeartbeat( app.getName(), rootInstance, "192.168.1.47" )); Thread.sleep( getDelay());
/** * Mimics the DM's behavior when it creates, deletes and recreates a same application. * <p> * This class prevents regressions for #749. * </p> * * @throws Exception */ public void test_applicationRegeneration() throws Exception { TestApplication app = new TestApplication(); List<Message> dmMessages = new ArrayList<>(); ReconfigurableClientDm dmClient = new ReconfigurableClientDm(); dmClient.setRegistry( this.registry ); dmClient.associateMessageProcessor( createDmProcessor( dmMessages )); dmClient.switchMessagingType( getMessagingType()); this.clients.add( dmClient ); dmClient.listenToAgentMessages( app, ListenerCommand.START ); dmClient.listenToAgentMessages( app, ListenerCommand.STOP ); dmClient.deleteMessagingServerArtifacts( app ); Thread.sleep( getDelay()); dmClient.listenToAgentMessages( app, ListenerCommand.START ); dmClient.listenToAgentMessages( app, ListenerCommand.STOP ); dmClient.deleteMessagingServerArtifacts( app ); }
ReconfigurableClientDm dmClient = new ReconfigurableClientDm(); dmClient.setRegistry( this.registry ); dmClient.associateMessageProcessor( createDmProcessor( dmMessages )); dmClient.switchMessagingType( getMessagingType()); this.clients.add( dmClient ); dmClient.propagateAgentTermination( app2, app2.getMySqlVm()); Thread.sleep( getDelay());
/** * Checks the DM's debugging exchanges. * @throws Exception */ public void testDmDebug() throws Exception { List<Message> dmMessages = new ArrayList<>(); ReconfigurableClientDm dmClient = new ReconfigurableClientDm(); dmClient.setRegistry( this.registry ); dmClient.associateMessageProcessor( createDmProcessor( dmMessages )); dmClient.switchMessagingType( getMessagingType()); this.clients.add( dmClient ); dmClient.sendMessageToTheDm( new MsgEcho( "hey 1" )); Thread.sleep( getDelay()); Assert.assertEquals( 0, dmMessages.size()); dmClient.listenToTheDm( ListenerCommand.START ); dmClient.sendMessageToTheDm( new MsgEcho( "hey 2" )); dmClient.sendMessageToTheDm( new MsgEcho( "hey 3" )); Thread.sleep( getDelay()); Assert.assertEquals( 2, dmMessages.size()); Assert.assertEquals( MsgEcho.class, dmMessages.get( 0 ).getClass()); Assert.assertEquals( "hey 2", ((MsgEcho) dmMessages.get( 0 )).getContent()); Assert.assertEquals( MsgEcho.class, dmMessages.get( 1 ).getClass()); Assert.assertEquals( "hey 3", ((MsgEcho) dmMessages.get( 1 )).getContent()); dmClient.listenToTheDm( ListenerCommand.STOP ); dmClient.sendMessageToTheDm( new MsgEcho( "hey again" )); Thread.sleep( getDelay()); Assert.assertEquals( 2, dmMessages.size()); }
@Test( expected = IllegalArgumentException.class ) public void testAssociateMessageProcessor_exception() { ReconfigurableClientDm client = new ReconfigurableClientDm(); Assert.assertFalse( client.hasValidClient()); EmptyTestDmMessageProcessor processor = new EmptyTestDmMessageProcessor(); try { client.associateMessageProcessor( processor ); } catch( Throwable t ) { Assert.fail( "No exception was expected here" ); } client.associateMessageProcessor( processor ); }
@Override protected void openConnection( IMessagingClient newMessagingClient ) throws IOException { super.openConnection( newMessagingClient ); for( ManagedApplication ma : this.applicationMngr.getManagedApplications()) listenToAgentMessages( newMessagingClient, ma.getApplication(), ListenerCommand.START ); } }
@Test public void testSetFactory() throws Exception { // Set a first factory ReconfigurableClientDm client = new ReconfigurableClientDm(); final MessagingClientFactoryRegistry registry1 = new MessagingClientFactoryRegistry(); ConcurrentLinkedQueue<?> listeners1 = TestUtils.getInternalField( registry1, "listeners", ConcurrentLinkedQueue.class ); Assert.assertEquals( 0, listeners1.size()); Assert.assertNull( TestUtils.getInternalField( client, "registry", MessagingClientFactoryRegistry.class )); client.setRegistry( registry1 ); Assert.assertEquals( 1, listeners1.size()); Assert.assertEquals( registry1, TestUtils.getInternalField( client, "registry", MessagingClientFactoryRegistry.class )); // Change the factory final MessagingClientFactoryRegistry registry2 = new MessagingClientFactoryRegistry(); ConcurrentLinkedQueue<?> listeners2 = TestUtils.getInternalField( registry2, "listeners", ConcurrentLinkedQueue.class ); Assert.assertEquals( 0, listeners2.size()); client.setRegistry( registry2 ); Assert.assertEquals( 0, listeners1.size()); Assert.assertEquals( 1, listeners2.size()); Assert.assertEquals( registry2, TestUtils.getInternalField( client, "registry", MessagingClientFactoryRegistry.class )); }
@Test public void testBasics() { TestClientFactory factory = new TestClientFactory(); Assert.assertEquals( MessagingConstants.FACTORY_TEST, factory.getType()); Assert.assertFalse( factory.setConfiguration( new HashMap<String,String>( 0 ))); ReconfigurableClientDm parentDm = new ReconfigurableClientDm(); Assert.assertEquals( TestClient.class, factory.createClient( parentDm ).getClass()); } }
ReconfigurableClientDm client = new ReconfigurableClientDm(); MessagingClientFactoryRegistry registry = new MessagingClientFactoryRegistry(); client.setRegistry( registry ); client.associateMessageProcessor( new AbstractMessageProcessor<IDmClient>( "dummy.messageProcessor" ) { @Override protected void processMessage( final Message message ) { client.switchMessagingType( "foo" ); Assert.assertEquals( JmxWrapperForMessagingClient.class, client.getMessagingClient().getClass()); Assert.assertTrue(((JmxWrapperForMessagingClient) client.getMessagingClient()).isDismissClient()); Assert.assertEquals( JmxWrapperForMessagingClient.class, client.getMessagingClient().getClass()); Assert.assertFalse(((JmxWrapperForMessagingClient) client.getMessagingClient()).isDismissClient()); (client.getMessagingClient()), "messagingClient", IMessagingClient.class ); Assert.assertEquals( JmxWrapperForMessagingClient.class, client.getMessagingClient().getClass()); Assert.assertTrue(((JmxWrapperForMessagingClient) client.getMessagingClient()).isDismissClient());
ReconfigurableClientDm dmClient = new ReconfigurableClientDm(); dmClient.setRegistry( this.registry ); dmClient.associateMessageProcessor( createDmProcessor( dmMessages )); dmClient.switchMessagingType( getMessagingType()); this.clients.add( dmClient ); dmClient.sendMessageToAgent( app1, app1_root1, new MsgCmdSetScopedInstance( app1_root1 )); dmClient.sendMessageToAgent( app2, app2_root, new MsgCmdSetScopedInstance( app2_root )); dmClient.sendMessageToAgent( app1, app1_root2, new MsgCmdSetScopedInstance( app1_root2, null, null, null )); dmClient.sendMessageToAgent( app2, app2_root, new MsgCmdRemoveInstance( app2_root )); dmClient.sendMessageToAgent( app2, app2_root, new MsgCmdChangeInstanceState( app2_root, InstanceStatus.DEPLOYED_STOPPED )); dmClient.sendMessageToAgent( app1, app1_root2, new MsgCmdRemoveInstance( app1_root2 )); dmClient.sendMessageToAgent( app1, app1_root2, new MsgCmdRemoveInstance( app1_root2 )); dmClient.sendMessageToAgent( app1, app1_root2, new MsgCmdChangeInstanceState( app1_root2, InstanceStatus.NOT_DEPLOYED )); dmClient.sendMessageToAgent( app1, app1_root1, new MsgCmdRemoveInstance( app1_root1 )); dmClient.sendMessageToAgent( app1, app1_root1, new MsgCmdSetScopedInstance( app1_root1 ));
ReconfigurableClientDm dmClient = new ReconfigurableClientDm(); dmClient.setRegistry( this.registry ); dmClient.associateMessageProcessor( createDmProcessor( dmMessages )); dmClient.switchMessagingType( getMessagingType()); this.clients.add( dmClient ); dmClient.propagateAgentTermination( app1, mysql ); dmClient.propagateAgentTermination( app2, other );
@Test public void testBasics() { IdleClientFactory factory = new IdleClientFactory(); Assert.assertEquals( MessagingConstants.FACTORY_IDLE, factory.getType()); Assert.assertFalse( factory.setConfiguration( new HashMap<String,String>( 0 ))); ReconfigurableClientDm parentDm = new ReconfigurableClientDm(); IMessagingClient client = factory.createClient( parentDm ); Assert.assertEquals( IdleClient.class, client.getClass()); ReconfigurableClientAgent parentAgent = new ReconfigurableClientAgent(); client = factory.createClient( parentAgent ); Assert.assertEquals( IdleClient.class, client.getClass()); } }
final ReconfigurableClientDm client = new ReconfigurableClientDm(); client.associateMessageProcessor(new AbstractMessageProcessor<IDmClient>( "dummy.messageProcessor" ) { @Override protected void processMessage( final Message message ) { client.setRegistry( registry ); client.console = Mockito.mock( PrintStream.class ); Assert.assertNull( client.getMessagingType()); Assert.assertEquals( JmxWrapperForMessagingClient.class, client.getMessagingClient().getClass()); Assert.assertTrue(((JmxWrapperForMessagingClient) client.getMessagingClient()).isDismissClient()); Assert.assertSame( registry, client.getRegistry()); client.switchMessagingType( "foo" ); Assert.assertEquals( "foo", client.getMessagingType()); Assert.assertEquals( "foo", client.getMessagingClient().getMessagingType()); Assert.assertEquals( JmxWrapperForMessagingClient.class, client.getMessagingClient().getClass()); Assert.assertFalse(((JmxWrapperForMessagingClient) client.getMessagingClient()).isDismissClient()); (client.getMessagingClient()), "messagingClient", IMessagingClient.class ); client.switchMessagingType( "bar" ); Assert.assertEquals( "bar", client.getMessagingType()); Assert.assertEquals( "bar", client.getMessagingClient().getMessagingType()); Assert.assertEquals( JmxWrapperForMessagingClient.class, client.getMessagingClient().getClass());
@Override public void deleteMessagingServerArtifacts( Application application ) throws IOException { getMessagingClient().deleteMessagingServerArtifacts( application ); }
@Override public void listenToAgentMessages( Application application, ListenerCommand command ) throws IOException { listenToAgentMessages( getMessagingClient(), application, command ); }