You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ar...@apache.org on 2007/09/27 17:01:11 UTC

svn commit: r580051 - in /incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid: test/unit/tests.properties test/unit/transacted/TransactedTest.java testutil/QpidTestCase.java

Author: arnaudsimon
Date: Thu Sep 27 08:01:11 2007
New Revision: 580051

URL: http://svn.apache.org/viewvc?rev=580051&view=rev
Log:
Added generic TestCase for connecting to remote broker 

Added:
    incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/tests.properties
    incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/testutil/QpidTestCase.java   (with props)
Modified:
    incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/transacted/TransactedTest.java

Added: incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/tests.properties
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/tests.properties?rev=580051&view=auto
==============================================================================
--- incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/tests.properties (added)
+++ incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/tests.properties Thu Sep 27 08:01:11 2007
@@ -0,0 +1,39 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+
+java.naming.factory.initial = org.apache.qpid.jndi.PropertiesFileInitialContextFactory
+
+# use the following property to configure the default connector
+#java.naming.provider.url - ignored.
+
+# register some connection factories
+# connectionfactory.[jndiname] = [ConnectionURL]
+connectionfactory.local = qpid:password=guest;username=guest;client_id=clientid;virtualhost=test@tcp:localhost:5672
+
+# register some queues in JNDI using the form
+# queue.[jndiName] = [physicalName]
+queue.MyQueue = example.MyQueue
+
+# register some topics in JNDI using the form
+# topic.[jndiName] = [physicalName]
+topic.ibmStocks = stocks.nyse.ibm
+
+# Register an AMQP destination in JNDI
+#   NOTE: Qpid currently only supports direct,topics and headers
+# destination.[jniName] = [BindingURL]
+destination.direct = direct://amq.direct//directQueue

Modified: incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/transacted/TransactedTest.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/transacted/TransactedTest.java?rev=580051&r1=580050&r2=580051&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/transacted/TransactedTest.java (original)
+++ incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/transacted/TransactedTest.java Thu Sep 27 08:01:11 2007
@@ -20,14 +20,13 @@
  */
 package org.apache.qpid.test.unit.transacted;
 
-import junit.framework.TestCase;
 
 import org.apache.qpid.client.AMQConnection;
 import org.apache.qpid.client.AMQQueue;
 import org.apache.qpid.client.AMQSession;
-import org.apache.qpid.client.transport.TransportConnection;
 import org.apache.qpid.framing.AMQShortString;
 import org.apache.qpid.jms.Session;
+import org.apache.qpid.testutil.QpidTestCase;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -38,10 +37,9 @@
 import javax.jms.MessageProducer;
 import javax.jms.TextMessage;
 
-public class TransactedTest extends TestCase
+public class TransactedTest extends QpidTestCase
 {
     private AMQQueue queue1;
-    private AMQQueue queue2;
 
     private AMQConnection con;
     private Session session;
@@ -61,10 +59,8 @@
     protected void setUp() throws Exception
     {
         super.setUp();
-        TransportConnection.createVMBroker(1);
         _logger.info("Create Connection");
-        con = new AMQConnection("vm://:1", "guest", "guest", "TransactedTest", "test");
-
+        con = (AMQConnection) getConnection("guest", "guest");
         _logger.info("Create Session");
         session = con.createSession(true, Session.SESSION_TRANSACTED);
         _logger.info("Create Q1");
@@ -72,7 +68,7 @@
             new AMQQueue(session.getDefaultQueueExchangeName(), new AMQShortString("Q1"), new AMQShortString("Q1"), false,
                 true);
         _logger.info("Create Q2");
-        queue2 = new AMQQueue(session.getDefaultQueueExchangeName(), new AMQShortString("Q2"), false);
+        AMQQueue queue2 = new AMQQueue(session.getDefaultQueueExchangeName(), new AMQShortString("Q2"), false);
 
         _logger.info("Create Consumer of Q1");
         consumer1 = session.createConsumer(queue1);
@@ -101,7 +97,7 @@
         prepCon.start();
 
         _logger.info("Create test connection");
-        testCon = new AMQConnection("vm://:1", "guest", "guest", "TestConnection", "test");
+        testCon = (AMQConnection) getConnection("guest", "guest");
         _logger.info("Create test session");
         testSession = testCon.createSession(false, AMQSession.NO_ACKNOWLEDGE);
         _logger.info("Create test consumer of q2");
@@ -116,8 +112,6 @@
         testCon.close();
         _logger.info("Close prep connection");
         prepCon.close();
-        _logger.info("Kill broker");
-        TransportConnection.killAllVMBrokers();
         super.tearDown();
     }
 

Added: incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/testutil/QpidTestCase.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/testutil/QpidTestCase.java?rev=580051&view=auto
==============================================================================
--- incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/testutil/QpidTestCase.java (added)
+++ incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/testutil/QpidTestCase.java Thu Sep 27 08:01:11 2007
@@ -0,0 +1,205 @@
+/* Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.qpid.testutil;
+
+import junit.framework.TestCase;
+
+import javax.jms.Connection;
+import javax.naming.InitialContext;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+
+import org.apache.qpid.client.transport.TransportConnection;
+import org.apache.qpid.client.AMQConnection;
+import org.apache.qpid.client.AMQConnectionFactory;
+
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *
+ *
+ */
+public class QpidTestCase extends TestCase
+{
+    /* this clas logger */
+    private static final Logger _logger = LoggerFactory.getLogger(QpidTestCase.class);
+
+    /* Test properties */
+    private static final String SHEL = "broker_shel";
+    private static final String BROKER_PATH = "broker_path";
+    private static final String BROKER_PARAM = "broker_param";
+    private static final String BROKER_VM = "vm";
+    /**
+     * The process where the remote broker is running.
+     */
+    private Process _brokerProcess;
+
+    /* The test property values */
+    // The default broker is an in-VM one
+    private String _shel = BROKER_VM;
+    private String _brokerPath = "";
+    private String _brokerParams = "";
+
+    /* The broker communication objects */
+    private InitialContext _initialContext;
+    private AMQConnectionFactory _connectionFactory;
+
+    //--------- JUnit support
+
+    protected void setUp() throws Exception
+    {
+        super.setUp();
+        // get the propeties if they are set
+        if (System.getProperties().containsKey(SHEL))
+        {
+            _shel = System.getProperties().getProperty(SHEL);
+        }
+        if (System.getProperties().containsKey(BROKER_PATH))
+        {
+            _brokerPath = System.getProperties().getProperty(BROKER_PATH);
+        }
+        if (System.getProperties().containsKey(BROKER_PARAM))
+        {
+            _brokerParams = System.getProperties().getProperty(BROKER_PARAM);
+        }
+        if (!_shel.equals(BROKER_VM))
+        {
+            // start a new broker
+            startBroker();
+        }
+        else
+        {
+            // create an in_VM broker
+            TransportConnection.createVMBroker(1);
+        }
+        System.out.println("=========================================");
+        System.out.println("= " + _shel + " " + _brokerPath + " " + _brokerParams);
+    }
+
+    /**
+     * This method _is invoked after each test case.
+     *
+     * @throws Exception
+     */
+    protected void tearDown() throws Exception
+    {
+        super.tearDown();
+        _logger.info("Kill broker");
+        if (_brokerProcess != null)
+        {
+            // destroy the currently running broker
+            _brokerProcess.destroy();
+        }
+        else
+        {
+            TransportConnection.killAllVMBrokers();
+        }
+    }
+
+    //--------- Util method 
+
+    /**
+     * This method starts a remote server by spawning an external process.
+     *
+     * @throws Exception If the broker cannot be started
+     */
+    public void startBroker() throws Exception
+    {
+        _logger.info("Starting broker");
+        Runtime rt = Runtime.getRuntime();
+        _brokerProcess = rt.exec(_shel + " " + _brokerPath + " " + _brokerParams);
+        BufferedReader reader = new BufferedReader(new InputStreamReader(_brokerProcess.getInputStream()));
+        if (reader.ready())
+        {
+            //bad, we had an error starting the broker
+            throw new Exception("Problem when starting the broker: " + reader.readLine());
+        }
+    }
+
+    /**
+     * Stop the currently running broker.
+     */
+    public void stopBroker()
+    {
+        _logger.info("Stopping broker");
+        // stooping the broker
+        if (_brokerProcess != null)
+        {
+            _brokerProcess.destroy();
+        }
+    }
+
+    /**
+     * we assume that the environment is correctly set
+     * i.e. -Djava.naming.provider.url="..//example010.properties"
+     * TODO should be a way of setting that through maven
+     *
+     * @return an initial context
+     * @throws Exception if there is an error getting the context
+     */
+    public InitialContext getInitialContext() throws Exception
+    {
+        _logger.info("get InitialContext");
+        if (_initialContext == null)
+        {
+            _initialContext = new InitialContext();
+        }
+        return _initialContext;
+    }
+
+    /**
+     * Get a connection factory for the currently used broker
+     *
+     * @return A conection factory
+     * @throws Exception if there is an error getting the tactory
+     */
+    public AMQConnectionFactory getConnectionFactory() throws Exception
+    {
+        _logger.info("get ConnectionFactory");
+        if (_connectionFactory == null)
+        {
+            _connectionFactory = (AMQConnectionFactory) getInitialContext().lookup("local");
+        }
+        return _connectionFactory;
+    }
+
+    /**
+     * Get a connection (remote or in-VM)
+     *
+     * @param username The user name
+     * @param password The user password
+     * @return a newly created connection
+     * @throws Exception if there is an error getting the connection
+     */
+    public Connection getConnection(String username, String password) throws Exception
+    {
+        _logger.info("get Connection");
+        Connection con;
+        if (_shel.equals(BROKER_VM))
+        {
+            con = new AMQConnection("vm://:1", username, password, "Test", "test");
+        }
+        else
+        {
+            con = getConnectionFactory().createConnection(username, password);
+        }
+        return con;
+    }
+}

Propchange: incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/testutil/QpidTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native