Move these to the client and use a Mock'd provider as we are just
testing the contract of the methods based on state.  

Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/d76e0afd
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/d76e0afd
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/d76e0afd

Branch: refs/heads/master
Commit: d76e0afd3cb160b0c06527ecfae9fec75d85fb14
Parents: f33aba2
Author: Timothy Bish <[email protected]>
Authored: Thu Jan 29 16:23:22 2015 -0500
Committer: Timothy Bish <[email protected]>
Committed: Thu Jan 29 16:23:22 2015 -0500

----------------------------------------------------------------------
 .../qpid/jms/JmsConnectionClosedTest.java       | 175 +++++++++++++++++++
 .../qpid/jms/JmsConnectionFailedTest.java       |  58 ++++++
 .../java/org/apache/qpid/jms/test/Wait.java     |   4 +-
 .../qpid/jms/JmsConnectionClosedTest.java       | 107 ------------
 .../qpid/jms/JmsConnectionFailedTest.java       |  60 -------
 5 files changed, 235 insertions(+), 169 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/d76e0afd/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsConnectionClosedTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsConnectionClosedTest.java
 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsConnectionClosedTest.java
new file mode 100644
index 0000000..1be9605
--- /dev/null
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsConnectionClosedTest.java
@@ -0,0 +1,175 @@
+/**
+ * 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.jms;
+
+import javax.jms.Destination;
+import javax.jms.ExceptionListener;
+import javax.jms.JMSException;
+import javax.jms.Session;
+import javax.jms.Topic;
+
+import org.apache.qpid.jms.meta.JmsResource;
+import org.apache.qpid.jms.provider.Provider;
+import org.apache.qpid.jms.provider.ProviderFuture;
+import org.apache.qpid.jms.provider.ProviderListener;
+import org.apache.qpid.jms.test.QpidJmsTestCase;
+import org.apache.qpid.jms.util.IdGenerator;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Test Connection methods contracts when state is closed.
+ */
+public class JmsConnectionClosedTest extends QpidJmsTestCase {
+
+    private static final Logger LOG = 
LoggerFactory.getLogger(JmsConnectionClosedTest.class);
+
+    protected Destination destination;
+
+    private final Provider provider = Mockito.mock(Provider.class);
+    private final IdGenerator clientIdGenerator = new IdGenerator();
+
+    protected JmsConnection connection;
+    protected ProviderListener providerListener;
+
+    protected JmsConnection createConnectionToMockProvider() throws Exception {
+
+        Mockito.doAnswer(new Answer<Object>() {
+            @Override
+            public Object answer(InvocationOnMock invocation) throws Throwable 
{
+                Object[] args = invocation.getArguments();
+                if (args[0] instanceof JmsResource) {
+                    LOG.debug("Handling provider create resource: {}", 
args[0]);
+                    ProviderFuture request = (ProviderFuture) args[1];
+                    request.onSuccess();
+                }
+                return null;
+            }
+        }).when(provider).create(Mockito.any(JmsResource.class), 
Mockito.any(ProviderFuture.class));
+
+        Mockito.doAnswer(new Answer<Object>() {
+            @Override
+            public Object answer(InvocationOnMock invocation) throws Throwable 
{
+                Object[] args = invocation.getArguments();
+                if (args[0] instanceof JmsResource) {
+                    LOG.debug("Handling provider destroy resource: {}", 
args[0]);
+                    ProviderFuture request = (ProviderFuture) args[1];
+                    request.onSuccess();
+                }
+                return null;
+            }
+        }).when(provider).destroy(Mockito.any(JmsResource.class), 
Mockito.any(ProviderFuture.class));
+
+        Mockito.doAnswer(new Answer<Object>() {
+            @Override
+            public Object answer(InvocationOnMock invocation) throws Throwable 
{
+                Object[] args = invocation.getArguments();
+                if (args[0] instanceof ProviderListener) {
+                    providerListener = (ProviderListener) args[0];
+                }
+                return null;
+            }
+        
}).when(provider).setProviderListener(Mockito.any(ProviderListener.class));
+
+        JmsConnection connection = new JmsConnection("ID:TEST:1", provider, 
clientIdGenerator);
+        return connection;
+    }
+
+    protected JmsConnection createConnection() throws Exception {
+        connection = createConnectionToMockProvider();
+        Session session = connection.createSession(false, 
Session.AUTO_ACKNOWLEDGE);
+        destination = session.createTopic("test");
+        connection.close();
+        return connection;
+    }
+
+    @Override
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+        connection = createConnection();
+    }
+
+    @Override
+    @After
+    public void tearDown() throws Exception {
+        super.tearDown();
+        if (connection != null) {
+            connection.close();
+        }
+    }
+
+    @Test(timeout=30000, expected=JMSException.class)
+    public void testGetClientIdFails() throws Exception {
+        connection.getClientID();
+    }
+
+    @Test(timeout=30000, expected=JMSException.class)
+    public void testSetClientIdFails() throws Exception {
+        connection.setClientID("test");
+    }
+
+    @Test(timeout=30000, expected=JMSException.class)
+    public void testGetMetaData() throws Exception {
+        connection.getMetaData();
+    }
+
+    @Test(timeout=30000, expected=JMSException.class)
+    public void testGetExceptionListener() throws Exception {
+        connection.getExceptionListener();
+    }
+
+    @Test(timeout=30000, expected=JMSException.class)
+    public void testSetExceptionListener() throws Exception {
+        connection.setExceptionListener(new ExceptionListener() {
+            @Override
+            public void onException(JMSException exception) {
+            }
+        });
+    }
+
+    @Test(timeout=30000, expected=JMSException.class)
+    public void testStartFails() throws Exception {
+        connection.start();
+    }
+
+    @Test(timeout=30000, expected=JMSException.class)
+    public void testStopFails() throws Exception {
+        connection.stop();
+    }
+
+    @Test(timeout=30000)
+    public void testClose() throws Exception {
+        connection.close();
+    }
+
+    @Test(timeout=30000, expected=JMSException.class)
+    public void testCreateConnectionConsumerFails() throws Exception {
+        connection.createConnectionConsumer(destination, "", null, 1);
+    }
+
+    @Test(timeout=30000, expected=JMSException.class)
+    public void testCreateDurableConnectionConsumerFails() throws Exception {
+        connection.createDurableConnectionConsumer((Topic) destination, "id", 
"", null, 1);
+    }
+}

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/d76e0afd/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsConnectionFailedTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsConnectionFailedTest.java
 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsConnectionFailedTest.java
new file mode 100644
index 0000000..809cf97
--- /dev/null
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsConnectionFailedTest.java
@@ -0,0 +1,58 @@
+/**
+ * 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.jms;
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.util.concurrent.TimeUnit;
+
+import javax.jms.ExceptionListener;
+import javax.jms.JMSException;
+
+import org.apache.qpid.jms.test.Wait;
+
+/**
+ * Test Connection methods contracts when connection has failed.
+ */
+public class JmsConnectionFailedTest extends JmsConnectionClosedTest {
+
+    @Override
+    protected JmsConnection createConnection() throws Exception {
+        connection = createConnectionToMockProvider();
+        connection.setExceptionListener(new ExceptionListener() {
+
+            @Override
+            public void onException(JMSException exception) {
+            }
+        });
+        connection.start();
+
+        providerListener.onConnectionFailure(new IOException());
+
+        final JmsConnection jmsConnection = connection;
+        assertTrue(Wait.waitFor(new Wait.Condition() {
+
+            @Override
+            public boolean isSatisified() throws Exception {
+                return !jmsConnection.isConnected();
+            }
+        }, TimeUnit.SECONDS.toMillis(30), TimeUnit.MILLISECONDS.toMillis(10)));
+
+        return connection;
+    }
+}

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/d76e0afd/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/Wait.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/Wait.java 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/Wait.java
index e95a2a9..bfb6053 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/Wait.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/Wait.java
@@ -21,7 +21,7 @@ import java.util.concurrent.TimeUnit;
 public class Wait {
 
     public static final long MAX_WAIT_MILLIS = 30 * 1000;
-    public static final int SLEEP_MILLIS = 1000;
+    public static final long SLEEP_MILLIS = 1000;
 
     public interface Condition {
         boolean isSatisified() throws Exception;
@@ -35,7 +35,7 @@ public class Wait {
         return waitFor(condition, duration, SLEEP_MILLIS);
     }
 
-    public static boolean waitFor(final Condition condition, final long 
duration, final int sleepMillis) throws Exception {
+    public static boolean waitFor(final Condition condition, final long 
duration, final long sleepMillis) throws Exception {
 
         final long expiry = System.currentTimeMillis() + duration;
         boolean conditionSatisified = condition.isSatisified();

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/d76e0afd/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/JmsConnectionClosedTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/JmsConnectionClosedTest.java
 
b/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/JmsConnectionClosedTest.java
deleted file mode 100644
index f5d2892..0000000
--- 
a/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/JmsConnectionClosedTest.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/**
- * 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.jms;
-
-import javax.jms.Connection;
-import javax.jms.Destination;
-import javax.jms.ExceptionListener;
-import javax.jms.JMSException;
-import javax.jms.Session;
-import javax.jms.Topic;
-
-import org.apache.qpid.jms.support.AmqpTestSupport;
-import org.junit.Test;
-
-/**
- * Test Connection methods contracts when state is closed.
- */
-public class JmsConnectionClosedTest extends AmqpTestSupport {
-
-    protected Destination destination;
-
-    protected Connection createConnection() throws Exception {
-        connection = createAmqpConnection();
-        Session session = connection.createSession(false, 
Session.AUTO_ACKNOWLEDGE);
-        destination = session.createTopic("test");
-        connection.close();
-        return connection;
-    }
-
-    @Test(timeout=30000, expected=JMSException.class)
-    public void testGetClientIdFails() throws Exception {
-        createConnection();
-        connection.getClientID();
-    }
-
-    @Test(timeout=30000, expected=JMSException.class)
-    public void testSetClientIdFails() throws Exception {
-        createConnection();
-        connection.setClientID("test");
-    }
-
-    @Test(timeout=30000, expected=JMSException.class)
-    public void testGetMetaData() throws Exception {
-        createConnection();
-        connection.getMetaData();
-    }
-
-    @Test(timeout=30000, expected=JMSException.class)
-    public void testGetExceptionListener() throws Exception {
-        createConnection();
-        connection.getExceptionListener();
-    }
-
-    @Test(timeout=30000, expected=JMSException.class)
-    public void testSetExceptionListener() throws Exception {
-        createConnection();
-        connection.setExceptionListener(new ExceptionListener() {
-            @Override
-            public void onException(JMSException exception) {
-            }
-        });
-    }
-
-    @Test(timeout=30000, expected=JMSException.class)
-    public void testStartFails() throws Exception {
-        createConnection();
-        connection.start();
-    }
-
-    @Test(timeout=30000, expected=JMSException.class)
-    public void testStopFails() throws Exception {
-        createConnection();
-        connection.stop();
-    }
-
-    @Test(timeout=30000)
-    public void testClose() throws Exception {
-        createConnection();
-        connection.close();
-    }
-
-    @Test(timeout=30000, expected=JMSException.class)
-    public void testCreateConnectionConsumerFails() throws Exception {
-        createConnection();
-        connection.createConnectionConsumer(destination, "", null, 1);
-    }
-
-    @Test(timeout=30000, expected=JMSException.class)
-    public void testCreateDurableConnectionConsumerFails() throws Exception {
-        createConnection();
-        connection.createDurableConnectionConsumer((Topic) destination, "id", 
"", null, 1);
-    }
-}

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/d76e0afd/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/JmsConnectionFailedTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/JmsConnectionFailedTest.java
 
b/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/JmsConnectionFailedTest.java
deleted file mode 100644
index b14792e..0000000
--- 
a/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/JmsConnectionFailedTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- * 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.jms;
-
-import static org.junit.Assert.assertTrue;
-
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-import javax.jms.Connection;
-import javax.jms.ExceptionListener;
-import javax.jms.JMSException;
-
-import org.apache.qpid.jms.JmsConnection;
-import org.apache.qpid.jms.support.Wait;
-
-/**
- * Test Connection methods contracts when connection has failed.
- */
-public class JmsConnectionFailedTest extends JmsConnectionClosedTest {
-
-    @Override
-    protected Connection createConnection() throws Exception {
-        final CountDownLatch latch = new CountDownLatch(1);
-        connection = createAmqpConnection();
-        connection.setExceptionListener(new ExceptionListener() {
-
-            @Override
-            public void onException(JMSException exception) {
-                latch.countDown();
-            }
-        });
-        connection.start();
-        stopPrimaryBroker();
-        assertTrue(latch.await(20, TimeUnit.SECONDS));
-        final JmsConnection jmsConnection = (JmsConnection) connection;
-        assertTrue(Wait.waitFor(new Wait.Condition() {
-
-            @Override
-            public boolean isSatisified() throws Exception {
-                return !jmsConnection.isConnected();
-            }
-        }));
-        return connection;
-    }
-}


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to