[jboss-cvs] JBoss Messaging SVN: r5846 - branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/bridge.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Feb 11 06:14:52 EST 2009
Author: gaohoward
Date: 2009-02-11 06:14:52 -0500 (Wed, 11 Feb 2009)
New Revision: 5846
Added:
branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/bridge/BridgeMBeanExtraTest.java
Removed:
branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/bridge/BridgeMBeanTest2.java
Log:
Change Name of the Test in order to be included in bridge-tests
Copied: branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/bridge/BridgeMBeanExtraTest.java (from rev 5845, branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/bridge/BridgeMBeanTest2.java)
===================================================================
--- branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/bridge/BridgeMBeanExtraTest.java (rev 0)
+++ branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/bridge/BridgeMBeanExtraTest.java 2009-02-11 11:14:52 UTC (rev 5846)
@@ -0,0 +1,470 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005-2009, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+
+package org.jboss.test.messaging.jms.bridge;
+
+import java.io.ByteArrayOutputStream;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Properties;
+
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Queue;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+import javax.jms.Topic;
+import javax.management.ObjectName;
+import javax.naming.InitialContext;
+
+import org.jboss.jms.server.bridge.Bridge;
+import org.jboss.jms.server.bridge.ConnectionFactoryFactory;
+import org.jboss.jms.server.bridge.DestinationFactory;
+import org.jboss.jms.server.bridge.JNDIConnectionFactoryFactory;
+import org.jboss.jms.server.bridge.JNDIDestinationFactory;
+import org.jboss.logging.Logger;
+import org.jboss.test.messaging.MessagingTestCase;
+import org.jboss.test.messaging.tools.ServerManagement;
+import org.jboss.test.messaging.tools.container.ServiceAttributeOverrides;
+import org.jboss.test.messaging.tools.container.ServiceContainer;
+
+/**
+ * A BridgeMBeanTest2
+ *
+ * @author <a href="mailto:hgao at redhat.com">Howard Gao</a>
+ *
+ * Created Feb 11, 2009 11:31:47 AM
+ *
+ *
+ */
+public class BridgeMBeanTest2 extends MessagingTestCase
+{
+ private static final Logger log = Logger.getLogger(BridgeMBeanTest2.class);
+ protected static boolean firstTime = true;
+ protected static ServiceContainer sc;
+
+ protected static Queue sourceQueue, targetQueue, localTargetQueue;
+ protected static ConnectionFactory cf0, cf1;
+ protected static DestinationFactory sourceQueueFactory, targetQueueFactory, localTargetQueueFactory, sourceTopicFactory;
+ protected static Properties sourceProps;
+ protected static Properties targetProps;
+ protected static ConnectionFactoryFactory cff0, cff1;
+ protected static Topic sourceTopic;
+
+ public BridgeMBeanTest2(String name)
+ {
+ super(name);
+ }
+
+ private static ObjectName sourceProviderLoader;
+
+ private static ObjectName targetProviderLoader;
+
+ protected void setUpServers() throws Exception
+ {
+
+ if (firstTime)
+ {
+ //Start the servers
+
+ ServerManagement.start(0, "all", true);
+
+ ServiceAttributeOverrides overrides = new ServiceAttributeOverrides();
+ ObjectName on = new ObjectName("jboss.messaging.connectionfactory:service=ConnectionFactory");
+ overrides.put(on, "JNDIBindings", "<bindings><binding>/ConnectionFactory2</binding>"
+ + "<binding>/XAConnectionFactory2</binding>"
+ + "<binding>java:/ConnectionFactory2</binding>"
+ + "<binding>java:/XAConnectionFactory</binding>"
+ + "</bindings>");
+ //overrides.put(on, attrName, attrValue);
+
+ ServerManagement.start(1, "all", overrides, false);
+
+ ServerManagement.deployQueue("sourceQueue", 0);
+
+ ServerManagement.deployTopic("sourceTopic", 0);
+
+ ServerManagement.deployQueue("localTargetQueue", 0);
+
+ ServerManagement.deployQueue("targetQueue", 1);
+
+ setUpAdministeredObjects();
+
+ //We need a local transaction and recovery manager
+ //We must start this after the remote servers have been created or it won't
+ //have deleted the database and the recovery manager may attempt to recover transactions
+ sc = new ServiceContainer("transaction");
+
+ sc.start(false);
+
+ Properties props1 = new Properties();
+ props1.putAll(ServerManagement.getJNDIEnvironment(0));
+
+ Properties props2 = new Properties();
+ props2.putAll(ServerManagement.getJNDIEnvironment(1));
+
+ installJMSProviderLoader(0, props1, "/XAConnectionFactory", "adaptor1");
+
+ installJMSProviderLoader(0, props2, "/XAConnectionFactory2", "adaptor2");
+
+ sourceProviderLoader = new ObjectName("jboss.messaging:service=JMSProviderLoader,name=adaptor1");
+ targetProviderLoader = new ObjectName("jboss.messaging:service=JMSProviderLoader,name=adaptor2");
+
+ firstTime = false;
+ }
+
+ }
+
+ public void setUp() throws Exception
+ {
+ super.setUp();
+
+ setUpServers();
+ }
+
+ public void tearDown() throws Exception
+ {
+ super.tearDown();
+ }
+
+ /**
+ * This test is mainly copied from BridgeMBeanTest with the exception that
+ * the FactoryRef Name for the targetProviderLoader is made different from the sourceProviderLoader's.
+ * see: https://jira.jboss.org/jira/browse/JBMESSAGING-1502
+ * @throws Exception
+ */
+ public void testProviderConfigParams() throws Exception
+ {
+ ObjectName on = null;
+ Connection connSource = null;
+ Connection connTarget = null;
+
+ try
+ {
+ on = deployBridge(0, "Bridge1", sourceProviderLoader, targetProviderLoader,
+ "/queue/sourceQueue", "/queue/targetQueue",
+ null, null, null, null,
+ Bridge.QOS_AT_MOST_ONCE, null, 1,
+ -1, null, null, 5000, -1, false);
+ log.info("Deployed bridge");
+
+ ServerManagement.getServer(0).invoke(on, "create", new Object[0], new String[0]);
+
+ log.info("Created bridge");
+
+ connSource = cf0.createConnection();
+
+ connTarget = cf1.createConnection();
+
+ connTarget.start();
+
+ connSource.start();
+
+ final int NUM_MESSAGES = 50;
+
+ Session sessSource = connSource.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+ MessageProducer prod = sessSource.createProducer(sourceQueue);
+
+ Session sessTarget = connTarget.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+ MessageConsumer cons = sessTarget.createConsumer(targetQueue);
+
+ for (int i = 0; i < NUM_MESSAGES; i++)
+ {
+ TextMessage tm = sessSource.createTextMessage("message" + i);
+
+ prod.send(tm);
+ }
+
+ //It's stopped so no messages should be received
+
+ checkEmpty(targetQueue, 1);
+
+ //Start it
+
+ log.info("Starting bridge");
+ ServerManagement.getServer(0).invoke(on, "start", new Object[0], new String[0]);
+ log.info("Started bridge");
+
+ //Now should receive the messages
+
+ for (int i = 0; i < NUM_MESSAGES; i++)
+ {
+ TextMessage tm = (TextMessage)cons.receive(2000);
+
+ assertNotNull(tm);
+
+ assertEquals("message" + i, tm.getText());
+ }
+
+ checkEmpty(targetQueue, 1);
+
+ //Send some more
+
+ for (int i = NUM_MESSAGES; i < 2 * NUM_MESSAGES; i++)
+ {
+ TextMessage tm = sessSource.createTextMessage("message" + i);
+
+ prod.send(tm);
+ }
+
+ //These should be received too
+
+ for (int i = NUM_MESSAGES; i < 2 * NUM_MESSAGES; i++)
+ {
+ TextMessage tm = (TextMessage)cons.receive(2000);
+
+ assertNotNull(tm);
+
+ assertEquals("message" + i, tm.getText());
+ }
+
+ checkEmpty(targetQueue, 1);
+
+ //Pause it
+
+ ServerManagement.getServer(0).invoke(on, "pause", new Object[0], new String[0]);
+
+ boolean isPaused = ((Boolean)ServerManagement.getAttribute(on, "Paused")).booleanValue();
+
+ assertTrue(isPaused);
+
+ // Send some more
+
+ for (int i = 2 * NUM_MESSAGES; i < 3 * NUM_MESSAGES; i++)
+ {
+ TextMessage tm = sessSource.createTextMessage("message" + i);
+
+ prod.send(tm);
+ }
+
+ //These shouldn't be received
+
+ checkEmpty(targetQueue, 1);
+
+ // Resume
+
+ ServerManagement.getServer(0).invoke(on, "resume", new Object[0], new String[0]);
+
+ //Now messages should be received
+
+ for (int i = 2 * NUM_MESSAGES; i < 3 * NUM_MESSAGES; i++)
+ {
+ TextMessage tm = (TextMessage)cons.receive(2000);
+
+ assertNotNull(tm);
+
+ assertEquals("message" + i, tm.getText());
+ }
+
+ checkEmpty(targetQueue, 1);
+
+ isPaused = ((Boolean)ServerManagement.getAttribute(on, "Paused")).booleanValue();
+
+ assertFalse(isPaused);
+
+ //Stop
+
+ ServerManagement.getServer(0).invoke(on, "stop", new Object[0], new String[0]);
+
+ boolean isStarted = ((Boolean)ServerManagement.getAttribute(on, "Started")).booleanValue();
+
+ assertFalse(isStarted);
+ }
+ finally
+ {
+ if (connSource != null)
+ {
+ connSource.close();
+ }
+
+ if (connTarget != null)
+ {
+ connTarget.close();
+ }
+
+ try
+ {
+ if (on != null)
+ {
+ ServerManagement.getServer(0).invoke(on, "stop", new Object[0], new String[0]);
+ ServerManagement.getServer(0).invoke(on, "destroy", new Object[0], new String[0]);
+ }
+ }
+ catch(Exception e)
+ {
+ //Ignore
+ }
+ }
+
+ }
+
+ protected void setUpAdministeredObjects() throws Exception
+ {
+ InitialContext ic0 = null, ic1 = null;
+ try
+ {
+ Hashtable props0 = ServerManagement.getJNDIEnvironment(0);
+
+ sourceProps = new Properties();
+ Enumeration keys = props0.keys();
+ while (keys.hasMoreElements())
+ {
+ Object key = keys.nextElement();
+ sourceProps.put(key, props0.get(key));
+ }
+
+ Hashtable props1 = ServerManagement.getJNDIEnvironment(1);
+ targetProps = new Properties();
+ keys = props1.keys();
+ while (keys.hasMoreElements())
+ {
+ Object key = keys.nextElement();
+ targetProps.put(key, props1.get(key));
+ }
+
+ cff0 = new JNDIConnectionFactoryFactory(props0, "/ConnectionFactory");
+
+ cff1 = new JNDIConnectionFactoryFactory(props1, "/ConnectionFactory2");
+
+ ic0 = new InitialContext(props0);
+
+ ic1 = new InitialContext(props1);
+
+ cf0 = (ConnectionFactory)ic0.lookup("/ConnectionFactory");
+
+ cf1 = (ConnectionFactory)ic1.lookup("/ConnectionFactory2");
+
+ sourceQueueFactory = new JNDIDestinationFactory(props0, "/queue/sourceQueue");
+
+ sourceQueue = (Queue)sourceQueueFactory.createDestination();
+
+ targetQueueFactory = new JNDIDestinationFactory(props1, "/queue/targetQueue");
+
+ targetQueue = (Queue)targetQueueFactory.createDestination();
+
+ sourceTopicFactory = new JNDIDestinationFactory(props0, "/topic/sourceTopic");
+
+ sourceTopic = (Topic)sourceTopicFactory.createDestination();
+
+ localTargetQueueFactory = new JNDIDestinationFactory(props0, "/queue/localTargetQueue");
+
+ localTargetQueue = (Queue)localTargetQueueFactory.createDestination();
+ }
+ finally
+ {
+ if (ic0 != null)
+ {
+ ic0.close();
+ }
+ if (ic1 != null)
+ {
+ ic1.close();
+ }
+ }
+ }
+
+ private ObjectName deployBridge(int server, String bridgeName,
+ ObjectName sourceProviderLoader, ObjectName targetProviderLoader,
+ String sourceDestLookup, String targetDestLookup,
+ String sourceUsername, String sourcePassword,
+ String targetUsername, String targetPassword,
+ int qos, String selector, int maxBatchSize,
+ long maxBatchTime, String subName, String clientID,
+ long failureRetryInterval, int maxRetries, boolean addMessageIDInHeader) throws Exception
+ {
+ String config =
+ "<mbean code=\"org.jboss.jms.server.bridge.BridgeService\" " +
+ "name=\"jboss.messaging:service=Bridge,name=" + bridgeName + "\" " +
+ "xmbean-dd=\"xmdesc/Bridge-xmbean.xml\">" +
+ "<attribute name=\"SourceProviderLoader\">" + sourceProviderLoader + "</attribute>"+
+ "<attribute name=\"TargetProviderLoader\">" + targetProviderLoader + "</attribute>"+
+ "<attribute name=\"SourceDestinationLookup\">" + sourceDestLookup + "</attribute>"+
+ "<attribute name=\"TargetDestinationLookup\">" + targetDestLookup + "</attribute>";
+ if (sourceUsername != null)
+ {
+ config += "<attribute name=\"SourceUsername\">" + sourceUsername + "</attribute>";
+ }
+ if (sourcePassword != null)
+ {
+ config += "<attribute name=\"SourcePassword\">" + sourcePassword +"</attribute>";
+ }
+ if (targetUsername != null)
+ {
+ config += "<attribute name=\"TargetUsername\">" + targetUsername +"</attribute>";
+ }
+ if (targetPassword != null)
+ {
+ config += "<attribute name=\"TargetPassword\">" + targetPassword + "</attribute>";
+ }
+ config += "<attribute name=\"QualityOfServiceMode\">" + qos +"</attribute>";
+ if (selector != null)
+ {
+ config += "<attribute name=\"Selector\">" + selector + "</attribute>";
+ }
+ config += "<attribute name=\"MaxBatchSize\">" + maxBatchSize + "</attribute>"+
+ "<attribute name=\"MaxBatchTime\">" + maxBatchTime +"</attribute>";
+ if (subName != null)
+ {
+ config += "<attribute name=\"SubName\">" + subName + "</attribute>";
+ }
+ if (clientID != null)
+ {
+ config += "<attribute name=\"ClientID\">" + clientID + "</attribute>";
+ }
+ config += "<attribute name=\"FailureRetryInterval\">" + failureRetryInterval + "</attribute>";
+
+ config += "<attribute name=\"MaxRetries\">" + maxRetries +"</attribute>";
+
+ config += "<attribute name=\"AddMessageIDInHeader\">" + addMessageIDInHeader + "</attribute>";
+ config += "</mbean>";
+
+ return ServerManagement.getServer(server).deploy(config);
+ }
+
+ private void installJMSProviderLoader(int server, Properties props, String factoryRef, String name)
+ throws Exception
+ {
+ ByteArrayOutputStream boa = new ByteArrayOutputStream();
+ props.store(boa, "");
+ String propsString = new String(boa.toByteArray());
+
+ String config =
+ "<mbean code=\"org.jboss.jms.jndi.JMSProviderLoader\"" +
+ " name=\"jboss.messaging:service=JMSProviderLoader,name=" + name + "\">" +
+ "<attribute name=\"ProviderName\">" + name + "</attribute>" +
+ "<attribute name=\"ProviderAdapterClass\">org.jboss.jms.jndi.JNDIProviderAdapter</attribute>" +
+ "<attribute name=\"FactoryRef\">" + factoryRef + "</attribute>" +
+ "<attribute name=\"QueueFactoryRef\">" + factoryRef + "</attribute>" +
+ "<attribute name=\"TopicFactoryRef\">" + factoryRef + "</attribute>" +
+ "<attribute name=\"Properties\">" + propsString + "</attribute></mbean>";
+
+ log.info("Installing bridge: " + config);
+
+ ServerManagement.getServer(0).deploy(config);
+ }
+
+}
Property changes on: branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/bridge/BridgeMBeanExtraTest.java
___________________________________________________________________
Name: svn:mergeinfo
+
Deleted: branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/bridge/BridgeMBeanTest2.java
===================================================================
--- branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/bridge/BridgeMBeanTest2.java 2009-02-11 10:02:15 UTC (rev 5845)
+++ branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/bridge/BridgeMBeanTest2.java 2009-02-11 11:14:52 UTC (rev 5846)
@@ -1,470 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005-2009, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
-
-package org.jboss.test.messaging.jms.bridge;
-
-import java.io.ByteArrayOutputStream;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Properties;
-
-import javax.jms.Connection;
-import javax.jms.ConnectionFactory;
-import javax.jms.MessageConsumer;
-import javax.jms.MessageProducer;
-import javax.jms.Queue;
-import javax.jms.Session;
-import javax.jms.TextMessage;
-import javax.jms.Topic;
-import javax.management.ObjectName;
-import javax.naming.InitialContext;
-
-import org.jboss.jms.server.bridge.Bridge;
-import org.jboss.jms.server.bridge.ConnectionFactoryFactory;
-import org.jboss.jms.server.bridge.DestinationFactory;
-import org.jboss.jms.server.bridge.JNDIConnectionFactoryFactory;
-import org.jboss.jms.server.bridge.JNDIDestinationFactory;
-import org.jboss.logging.Logger;
-import org.jboss.test.messaging.MessagingTestCase;
-import org.jboss.test.messaging.tools.ServerManagement;
-import org.jboss.test.messaging.tools.container.ServiceAttributeOverrides;
-import org.jboss.test.messaging.tools.container.ServiceContainer;
-
-/**
- * A BridgeMBeanTest2
- *
- * @author <a href="mailto:hgao at redhat.com">Howard Gao</a>
- *
- * Created Feb 11, 2009 11:31:47 AM
- *
- *
- */
-public class BridgeMBeanTest2 extends MessagingTestCase
-{
- private static final Logger log = Logger.getLogger(BridgeMBeanTest2.class);
- protected static boolean firstTime = true;
- protected static ServiceContainer sc;
-
- protected static Queue sourceQueue, targetQueue, localTargetQueue;
- protected static ConnectionFactory cf0, cf1;
- protected static DestinationFactory sourceQueueFactory, targetQueueFactory, localTargetQueueFactory, sourceTopicFactory;
- protected static Properties sourceProps;
- protected static Properties targetProps;
- protected static ConnectionFactoryFactory cff0, cff1;
- protected static Topic sourceTopic;
-
- public BridgeMBeanTest2(String name)
- {
- super(name);
- }
-
- private static ObjectName sourceProviderLoader;
-
- private static ObjectName targetProviderLoader;
-
- protected void setUpServers() throws Exception
- {
-
- if (firstTime)
- {
- //Start the servers
-
- ServerManagement.start(0, "all", true);
-
- ServiceAttributeOverrides overrides = new ServiceAttributeOverrides();
- ObjectName on = new ObjectName("jboss.messaging.connectionfactory:service=ConnectionFactory");
- overrides.put(on, "JNDIBindings", "<bindings><binding>/ConnectionFactory2</binding>"
- + "<binding>/XAConnectionFactory2</binding>"
- + "<binding>java:/ConnectionFactory2</binding>"
- + "<binding>java:/XAConnectionFactory</binding>"
- + "</bindings>");
- //overrides.put(on, attrName, attrValue);
-
- ServerManagement.start(1, "all", overrides, false);
-
- ServerManagement.deployQueue("sourceQueue", 0);
-
- ServerManagement.deployTopic("sourceTopic", 0);
-
- ServerManagement.deployQueue("localTargetQueue", 0);
-
- ServerManagement.deployQueue("targetQueue", 1);
-
- setUpAdministeredObjects();
-
- //We need a local transaction and recovery manager
- //We must start this after the remote servers have been created or it won't
- //have deleted the database and the recovery manager may attempt to recover transactions
- sc = new ServiceContainer("transaction");
-
- sc.start(false);
-
- Properties props1 = new Properties();
- props1.putAll(ServerManagement.getJNDIEnvironment(0));
-
- Properties props2 = new Properties();
- props2.putAll(ServerManagement.getJNDIEnvironment(1));
-
- installJMSProviderLoader(0, props1, "/XAConnectionFactory", "adaptor1");
-
- installJMSProviderLoader(0, props2, "/XAConnectionFactory2", "adaptor2");
-
- sourceProviderLoader = new ObjectName("jboss.messaging:service=JMSProviderLoader,name=adaptor1");
- targetProviderLoader = new ObjectName("jboss.messaging:service=JMSProviderLoader,name=adaptor2");
-
- firstTime = false;
- }
-
- }
-
- public void setUp() throws Exception
- {
- super.setUp();
-
- setUpServers();
- }
-
- public void tearDown() throws Exception
- {
- super.tearDown();
- }
-
- /**
- * This test is mainly copied from BridgeMBeanTest with the exception that
- * the FactoryRef Name for the targetProviderLoader is made different from the sourceProviderLoader's.
- * see: https://jira.jboss.org/jira/browse/JBMESSAGING-1502
- * @throws Exception
- */
- public void testProviderConfigParams() throws Exception
- {
- ObjectName on = null;
- Connection connSource = null;
- Connection connTarget = null;
-
- try
- {
- on = deployBridge(0, "Bridge1", sourceProviderLoader, targetProviderLoader,
- "/queue/sourceQueue", "/queue/targetQueue",
- null, null, null, null,
- Bridge.QOS_AT_MOST_ONCE, null, 1,
- -1, null, null, 5000, -1, false);
- log.info("Deployed bridge");
-
- ServerManagement.getServer(0).invoke(on, "create", new Object[0], new String[0]);
-
- log.info("Created bridge");
-
- connSource = cf0.createConnection();
-
- connTarget = cf1.createConnection();
-
- connTarget.start();
-
- connSource.start();
-
- final int NUM_MESSAGES = 50;
-
- Session sessSource = connSource.createSession(false, Session.AUTO_ACKNOWLEDGE);
-
- MessageProducer prod = sessSource.createProducer(sourceQueue);
-
- Session sessTarget = connTarget.createSession(false, Session.AUTO_ACKNOWLEDGE);
-
- MessageConsumer cons = sessTarget.createConsumer(targetQueue);
-
- for (int i = 0; i < NUM_MESSAGES; i++)
- {
- TextMessage tm = sessSource.createTextMessage("message" + i);
-
- prod.send(tm);
- }
-
- //It's stopped so no messages should be received
-
- checkEmpty(targetQueue, 1);
-
- //Start it
-
- log.info("Starting bridge");
- ServerManagement.getServer(0).invoke(on, "start", new Object[0], new String[0]);
- log.info("Started bridge");
-
- //Now should receive the messages
-
- for (int i = 0; i < NUM_MESSAGES; i++)
- {
- TextMessage tm = (TextMessage)cons.receive(2000);
-
- assertNotNull(tm);
-
- assertEquals("message" + i, tm.getText());
- }
-
- checkEmpty(targetQueue, 1);
-
- //Send some more
-
- for (int i = NUM_MESSAGES; i < 2 * NUM_MESSAGES; i++)
- {
- TextMessage tm = sessSource.createTextMessage("message" + i);
-
- prod.send(tm);
- }
-
- //These should be received too
-
- for (int i = NUM_MESSAGES; i < 2 * NUM_MESSAGES; i++)
- {
- TextMessage tm = (TextMessage)cons.receive(2000);
-
- assertNotNull(tm);
-
- assertEquals("message" + i, tm.getText());
- }
-
- checkEmpty(targetQueue, 1);
-
- //Pause it
-
- ServerManagement.getServer(0).invoke(on, "pause", new Object[0], new String[0]);
-
- boolean isPaused = ((Boolean)ServerManagement.getAttribute(on, "Paused")).booleanValue();
-
- assertTrue(isPaused);
-
- // Send some more
-
- for (int i = 2 * NUM_MESSAGES; i < 3 * NUM_MESSAGES; i++)
- {
- TextMessage tm = sessSource.createTextMessage("message" + i);
-
- prod.send(tm);
- }
-
- //These shouldn't be received
-
- checkEmpty(targetQueue, 1);
-
- // Resume
-
- ServerManagement.getServer(0).invoke(on, "resume", new Object[0], new String[0]);
-
- //Now messages should be received
-
- for (int i = 2 * NUM_MESSAGES; i < 3 * NUM_MESSAGES; i++)
- {
- TextMessage tm = (TextMessage)cons.receive(2000);
-
- assertNotNull(tm);
-
- assertEquals("message" + i, tm.getText());
- }
-
- checkEmpty(targetQueue, 1);
-
- isPaused = ((Boolean)ServerManagement.getAttribute(on, "Paused")).booleanValue();
-
- assertFalse(isPaused);
-
- //Stop
-
- ServerManagement.getServer(0).invoke(on, "stop", new Object[0], new String[0]);
-
- boolean isStarted = ((Boolean)ServerManagement.getAttribute(on, "Started")).booleanValue();
-
- assertFalse(isStarted);
- }
- finally
- {
- if (connSource != null)
- {
- connSource.close();
- }
-
- if (connTarget != null)
- {
- connTarget.close();
- }
-
- try
- {
- if (on != null)
- {
- ServerManagement.getServer(0).invoke(on, "stop", new Object[0], new String[0]);
- ServerManagement.getServer(0).invoke(on, "destroy", new Object[0], new String[0]);
- }
- }
- catch(Exception e)
- {
- //Ignore
- }
- }
-
- }
-
- protected void setUpAdministeredObjects() throws Exception
- {
- InitialContext ic0 = null, ic1 = null;
- try
- {
- Hashtable props0 = ServerManagement.getJNDIEnvironment(0);
-
- sourceProps = new Properties();
- Enumeration keys = props0.keys();
- while (keys.hasMoreElements())
- {
- Object key = keys.nextElement();
- sourceProps.put(key, props0.get(key));
- }
-
- Hashtable props1 = ServerManagement.getJNDIEnvironment(1);
- targetProps = new Properties();
- keys = props1.keys();
- while (keys.hasMoreElements())
- {
- Object key = keys.nextElement();
- targetProps.put(key, props1.get(key));
- }
-
- cff0 = new JNDIConnectionFactoryFactory(props0, "/ConnectionFactory");
-
- cff1 = new JNDIConnectionFactoryFactory(props1, "/ConnectionFactory2");
-
- ic0 = new InitialContext(props0);
-
- ic1 = new InitialContext(props1);
-
- cf0 = (ConnectionFactory)ic0.lookup("/ConnectionFactory");
-
- cf1 = (ConnectionFactory)ic1.lookup("/ConnectionFactory2");
-
- sourceQueueFactory = new JNDIDestinationFactory(props0, "/queue/sourceQueue");
-
- sourceQueue = (Queue)sourceQueueFactory.createDestination();
-
- targetQueueFactory = new JNDIDestinationFactory(props1, "/queue/targetQueue");
-
- targetQueue = (Queue)targetQueueFactory.createDestination();
-
- sourceTopicFactory = new JNDIDestinationFactory(props0, "/topic/sourceTopic");
-
- sourceTopic = (Topic)sourceTopicFactory.createDestination();
-
- localTargetQueueFactory = new JNDIDestinationFactory(props0, "/queue/localTargetQueue");
-
- localTargetQueue = (Queue)localTargetQueueFactory.createDestination();
- }
- finally
- {
- if (ic0 != null)
- {
- ic0.close();
- }
- if (ic1 != null)
- {
- ic1.close();
- }
- }
- }
-
- private ObjectName deployBridge(int server, String bridgeName,
- ObjectName sourceProviderLoader, ObjectName targetProviderLoader,
- String sourceDestLookup, String targetDestLookup,
- String sourceUsername, String sourcePassword,
- String targetUsername, String targetPassword,
- int qos, String selector, int maxBatchSize,
- long maxBatchTime, String subName, String clientID,
- long failureRetryInterval, int maxRetries, boolean addMessageIDInHeader) throws Exception
- {
- String config =
- "<mbean code=\"org.jboss.jms.server.bridge.BridgeService\" " +
- "name=\"jboss.messaging:service=Bridge,name=" + bridgeName + "\" " +
- "xmbean-dd=\"xmdesc/Bridge-xmbean.xml\">" +
- "<attribute name=\"SourceProviderLoader\">" + sourceProviderLoader + "</attribute>"+
- "<attribute name=\"TargetProviderLoader\">" + targetProviderLoader + "</attribute>"+
- "<attribute name=\"SourceDestinationLookup\">" + sourceDestLookup + "</attribute>"+
- "<attribute name=\"TargetDestinationLookup\">" + targetDestLookup + "</attribute>";
- if (sourceUsername != null)
- {
- config += "<attribute name=\"SourceUsername\">" + sourceUsername + "</attribute>";
- }
- if (sourcePassword != null)
- {
- config += "<attribute name=\"SourcePassword\">" + sourcePassword +"</attribute>";
- }
- if (targetUsername != null)
- {
- config += "<attribute name=\"TargetUsername\">" + targetUsername +"</attribute>";
- }
- if (targetPassword != null)
- {
- config += "<attribute name=\"TargetPassword\">" + targetPassword + "</attribute>";
- }
- config += "<attribute name=\"QualityOfServiceMode\">" + qos +"</attribute>";
- if (selector != null)
- {
- config += "<attribute name=\"Selector\">" + selector + "</attribute>";
- }
- config += "<attribute name=\"MaxBatchSize\">" + maxBatchSize + "</attribute>"+
- "<attribute name=\"MaxBatchTime\">" + maxBatchTime +"</attribute>";
- if (subName != null)
- {
- config += "<attribute name=\"SubName\">" + subName + "</attribute>";
- }
- if (clientID != null)
- {
- config += "<attribute name=\"ClientID\">" + clientID + "</attribute>";
- }
- config += "<attribute name=\"FailureRetryInterval\">" + failureRetryInterval + "</attribute>";
-
- config += "<attribute name=\"MaxRetries\">" + maxRetries +"</attribute>";
-
- config += "<attribute name=\"AddMessageIDInHeader\">" + addMessageIDInHeader + "</attribute>";
- config += "</mbean>";
-
- return ServerManagement.getServer(server).deploy(config);
- }
-
- private void installJMSProviderLoader(int server, Properties props, String factoryRef, String name)
- throws Exception
- {
- ByteArrayOutputStream boa = new ByteArrayOutputStream();
- props.store(boa, "");
- String propsString = new String(boa.toByteArray());
-
- String config =
- "<mbean code=\"org.jboss.jms.jndi.JMSProviderLoader\"" +
- " name=\"jboss.messaging:service=JMSProviderLoader,name=" + name + "\">" +
- "<attribute name=\"ProviderName\">" + name + "</attribute>" +
- "<attribute name=\"ProviderAdapterClass\">org.jboss.jms.jndi.JNDIProviderAdapter</attribute>" +
- "<attribute name=\"FactoryRef\">" + factoryRef + "</attribute>" +
- "<attribute name=\"QueueFactoryRef\">" + factoryRef + "</attribute>" +
- "<attribute name=\"TopicFactoryRef\">" + factoryRef + "</attribute>" +
- "<attribute name=\"Properties\">" + propsString + "</attribute></mbean>";
-
- log.info("Installing bridge: " + config);
-
- ServerManagement.getServer(0).deploy(config);
- }
-
-}
More information about the jboss-cvs-commits
mailing list