Author: robbie
Date: Thu Jan 26 10:13:17 2012
New Revision: 1236127

URL: http://svn.apache.org/viewvc?rev=1236127&view=rev
Log:
QPID-3779: replace the old ImmediateMessageTest and MandatoryMessageTest with 
understandable versions and remove duplicate/obsolete tests FailoverTest and 
RollbackTest.

Applied patch from Andrew MacBean <[email protected]> and Oleksandr 
Rudyy<[email protected]>.

Added:
    
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/client/ImmediateAndMandatoryPublishingTest.java
Removed:
    
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/framework/FrameworkClientBaseCase.java
    
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/testcases/FailoverTest.java
    
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/testcases/ImmediateMessageTest.java
    
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/testcases/MandatoryMessageTest.java
    
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/testcases/RollbackTest.java
Modified:
    qpid/trunk/qpid/java/test-profiles/CPPExcludes
    qpid/trunk/qpid/java/test-profiles/Java010Excludes

Added: 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/client/ImmediateAndMandatoryPublishingTest.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/client/ImmediateAndMandatoryPublishingTest.java?rev=1236127&view=auto
==============================================================================
--- 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/client/ImmediateAndMandatoryPublishingTest.java
 (added)
+++ 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/client/ImmediateAndMandatoryPublishingTest.java
 Thu Jan 26 10:13:17 2012
@@ -0,0 +1,211 @@
+/*
+ * 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.test.client;
+
+import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.TimeUnit;
+
+import javax.jms.Connection;
+import javax.jms.Destination;
+import javax.jms.ExceptionListener;
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Session;
+import javax.jms.Topic;
+
+import org.apache.qpid.client.AMQNoConsumersException;
+import org.apache.qpid.client.AMQNoRouteException;
+import org.apache.qpid.client.AMQSession;
+import org.apache.qpid.test.utils.QpidBrokerTestCase;
+
+public class ImmediateAndMandatoryPublishingTest extends QpidBrokerTestCase 
implements ExceptionListener
+{
+    private Connection _connection;
+    private BlockingQueue<JMSException> _exceptions;
+
+    public void setUp() throws Exception
+    {
+        super.setUp();
+        _exceptions = new ArrayBlockingQueue<JMSException>(1);
+        _connection = getConnection();
+        _connection.setExceptionListener(this);
+    }
+
+    public void testPublishP2PWithNoConsumerAndImmediateOnAndAutoAck() throws 
Exception
+    {
+        
publishIntoExistingDestinationWithNoConsumerAndImmediateOn(Session.AUTO_ACKNOWLEDGE,
 false);
+    }
+
+    public void testPublishP2PWithNoConsumerAndImmediateOnAndTx() throws 
Exception
+    {
+        
publishIntoExistingDestinationWithNoConsumerAndImmediateOn(Session.SESSION_TRANSACTED,
 false);
+    }
+
+    public void 
testPublishPubSubWithDisconnectedDurableSubscriberAndImmediateOnAndAutoAck() 
throws Exception
+    {
+        
publishIntoExistingDestinationWithNoConsumerAndImmediateOn(Session.AUTO_ACKNOWLEDGE,
 true);
+    }
+
+    public void 
testPublishPubSubWithDisconnectedDurableSubscriberAndImmediateOnAndTx() throws 
Exception
+    {
+        
publishIntoExistingDestinationWithNoConsumerAndImmediateOn(Session.SESSION_TRANSACTED,
 true);
+    }
+
+    public void 
testPublishP2PIntoNonExistingDesitinationWithMandatoryOnAutoAck() throws 
Exception
+    {
+        publishWithMandatoryOnImmediateOff(Session.AUTO_ACKNOWLEDGE, false);
+    }
+
+    public void 
testPublishP2PIntoNonExistingDesitinationWithMandatoryOnAndTx() throws Exception
+    {
+        publishWithMandatoryOnImmediateOff(Session.SESSION_TRANSACTED, false);
+    }
+
+    public void testPubSubMandatoryAutoAck() throws Exception
+    {
+        publishWithMandatoryOnImmediateOff(Session.AUTO_ACKNOWLEDGE, true);
+    }
+
+    public void testPubSubMandatoryTx() throws Exception
+    {
+        publishWithMandatoryOnImmediateOff(Session.SESSION_TRANSACTED, true);
+    }
+
+    public void testP2PNoMandatoryAutoAck() throws Exception
+    {
+        publishWithMandatoryOffImmediateOff(Session.AUTO_ACKNOWLEDGE, false);
+    }
+
+    public void testP2PNoMandatoryTx() throws Exception
+    {
+        publishWithMandatoryOffImmediateOff(Session.SESSION_TRANSACTED, false);
+    }
+
+    public void testPubSubWithImmediateOnAndAutoAck() throws Exception
+    {
+        consumerCreateAndClose(true, false);
+
+        Message message = produceMessage(Session.AUTO_ACKNOWLEDGE, true, 
false, true);
+
+        JMSException exception = _exceptions.poll(10, TimeUnit.SECONDS);
+        assertNotNull("JMSException is expected", exception);
+        AMQNoRouteException noRouteException = (AMQNoRouteException) 
exception.getLinkedException();
+        assertNotNull("AMQNoRouteException should be linked to JMSEXception", 
noRouteException);
+        Message bounceMessage = (Message) 
noRouteException.getUndeliveredMessage();
+        assertNotNull("Bounced Message is expected", bounceMessage);
+        assertEquals("Unexpected message is bounced", 
message.getJMSMessageID(), bounceMessage.getJMSMessageID());
+    }
+
+    private void 
publishIntoExistingDestinationWithNoConsumerAndImmediateOn(int acknowledgeMode, 
boolean pubSub)
+            throws JMSException, InterruptedException
+    {
+        consumerCreateAndClose(pubSub, true);
+
+        Message message = produceMessage(acknowledgeMode, pubSub, false, true);
+
+        JMSException exception = _exceptions.poll(10, TimeUnit.SECONDS);
+        assertNotNull("JMSException is expected", exception);
+        AMQNoConsumersException noConsumerException = 
(AMQNoConsumersException) exception.getLinkedException();
+        assertNotNull("AMQNoConsumersException should be linked to 
JMSEXception", noConsumerException);
+        Message bounceMessage = (Message) 
noConsumerException.getUndeliveredMessage();
+        assertNotNull("Bounced Message is expected", bounceMessage);
+        assertEquals("Unexpected message is bounced", 
message.getJMSMessageID(), bounceMessage.getJMSMessageID());
+    }
+
+    private void publishWithMandatoryOnImmediateOff(int acknowledgeMode, 
boolean pubSub) throws JMSException,
+            InterruptedException
+    {
+        Message message = produceMessage(acknowledgeMode, pubSub, true, false);
+
+        JMSException exception = _exceptions.poll(10, TimeUnit.SECONDS);
+        assertNotNull("JMSException is expected", exception);
+        AMQNoRouteException noRouteException = (AMQNoRouteException) 
exception.getLinkedException();
+        assertNotNull("AMQNoRouteException should be linked to JMSEXception", 
noRouteException);
+        Message bounceMessage = (Message) 
noRouteException.getUndeliveredMessage();
+        assertNotNull("Bounced Message is expected", bounceMessage);
+        assertEquals("Unexpected message is bounced", 
message.getJMSMessageID(), bounceMessage.getJMSMessageID());
+    }
+
+    private void publishWithMandatoryOffImmediateOff(int acknowledgeMode, 
boolean pubSub) throws JMSException,
+            InterruptedException
+    {
+        produceMessage(acknowledgeMode, pubSub, false, false);
+
+        JMSException exception = _exceptions.poll(1, TimeUnit.SECONDS);
+        assertNull("Unexpected JMSException", exception);
+    }
+
+    private void consumerCreateAndClose(boolean pubSub, boolean durable) 
throws JMSException
+    {
+        Session session = _connection.createSession(false, 
Session.AUTO_ACKNOWLEDGE);
+        Destination destination = null;
+        MessageConsumer consumer = null;
+        if (pubSub)
+        {
+            destination = session.createTopic(getTestQueueName());
+            if (durable)
+            {
+                consumer = session.createDurableSubscriber((Topic) 
destination, getTestName());
+            }
+            else
+            {
+                consumer = session.createConsumer(destination);
+            }
+        }
+        else
+        {
+            destination = session.createQueue(getTestQueueName());
+            consumer = session.createConsumer(destination);
+        }
+        consumer.close();
+    }
+
+    private Message produceMessage(int acknowledgeMode, boolean pubSub, 
boolean mandatory, boolean immediate)
+            throws JMSException
+    {
+        Session session = _connection.createSession(acknowledgeMode == 
Session.SESSION_TRANSACTED, acknowledgeMode);
+        Destination destination = null;
+        if (pubSub)
+        {
+            destination = session.createTopic(getTestQueueName());
+        }
+        else
+        {
+            destination = session.createQueue(getTestQueueName());
+        }
+
+        MessageProducer producer = ((AMQSession<?, ?>) 
session).createProducer(destination, mandatory, immediate);
+        Message message = session.createMessage();
+        producer.send(message);
+        if (session.getTransacted())
+        {
+            session.commit();
+        }
+        return message;
+    }
+
+    @Override
+    public void onException(JMSException exception)
+    {
+        _exceptions.add(exception);
+    }
+}

Modified: qpid/trunk/qpid/java/test-profiles/CPPExcludes
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/test-profiles/CPPExcludes?rev=1236127&r1=1236126&r2=1236127&view=diff
==============================================================================
--- qpid/trunk/qpid/java/test-profiles/CPPExcludes (original)
+++ qpid/trunk/qpid/java/test-profiles/CPPExcludes Thu Jan 26 10:13:17 2012
@@ -27,18 +27,7 @@ org.apache.qpid.test.unit.client.channel
 org.apache.qpid.client.ResetMessageListenerTest#*
 
 // Those tests are testing 0.8 specific semantics
-org.apache.qpid.test.testcases.ImmediateMessageTest#test_QPID_517_ImmediateFailsConsumerDisconnectedNoTxP2P
-org.apache.qpid.test.testcases.ImmediateMessageTest#test_QPID_517_ImmediateFailsConsumerDisconnectedTxP2P
-org.apache.qpid.test.testcases.ImmediateMessageTest#test_QPID_517_ImmediateFailsNoRouteNoTxP2P
-org.apache.qpid.test.testcases.ImmediateMessageTest#test_QPID_517_ImmediateFailsNoRouteTxP2P
-org.apache.qpid.test.testcases.ImmediateMessageTest#test_QPID_517_ImmediateFailsConsumerDisconnectedNoTxPubSub
-org.apache.qpid.test.testcases.ImmediateMessageTest#test_QPID_517_ImmediateFailsConsumerDisconnectedTxPubSub
-org.apache.qpid.test.testcases.ImmediateMessageTest#test_QPID_517_ImmediateFailsNoRouteNoTxPubSub
-org.apache.qpid.test.testcases.ImmediateMessageTest#test_QPID_517_ImmediateFailsNoRouteTxPubSub
-org.apache.qpid.test.testcases.MandatoryMessageTest#test_QPID_508_MandatoryFailsNoRouteNoTxP2P
-org.apache.qpid.test.testcases.MandatoryMessageTest#test_QPID_508_MandatoryFailsNoRouteTxP2P
-org.apache.qpid.test.testcases.MandatoryMessageTest#test_QPID_508_MandatoryFailsNoRouteNoTxPubSub
-org.apache.qpid.test.testcases.MandatoryMessageTest#test_QPID_508_MandatoryFailsNoRouteTxPubSub
+org.apache.qpid.test.client.ImmediateAndMandatoryPublishingTest#*
 
 // the 0.10 c++ broker does not implement forget
 org.apache.qpid.test.unit.xa.FaultTest#testForget

Modified: qpid/trunk/qpid/java/test-profiles/Java010Excludes
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/test-profiles/Java010Excludes?rev=1236127&r1=1236126&r2=1236127&view=diff
==============================================================================
--- qpid/trunk/qpid/java/test-profiles/Java010Excludes (original)
+++ qpid/trunk/qpid/java/test-profiles/Java010Excludes Thu Jan 26 10:13:17 2012
@@ -18,18 +18,7 @@
 //
 
 // Those tests are testing 0.8 specific semantics
-org.apache.qpid.test.testcases.ImmediateMessageTest#test_QPID_517_ImmediateFailsConsumerDisconnectedNoTxP2P
-org.apache.qpid.test.testcases.ImmediateMessageTest#test_QPID_517_ImmediateFailsConsumerDisconnectedTxP2P
-org.apache.qpid.test.testcases.ImmediateMessageTest#test_QPID_517_ImmediateFailsNoRouteNoTxP2P
-org.apache.qpid.test.testcases.ImmediateMessageTest#test_QPID_517_ImmediateFailsNoRouteTxP2P
-org.apache.qpid.test.testcases.ImmediateMessageTest#test_QPID_517_ImmediateFailsConsumerDisconnectedNoTxPubSub
-org.apache.qpid.test.testcases.ImmediateMessageTest#test_QPID_517_ImmediateFailsConsumerDisconnectedTxPubSub
-org.apache.qpid.test.testcases.ImmediateMessageTest#test_QPID_517_ImmediateFailsNoRouteNoTxPubSub
-org.apache.qpid.test.testcases.ImmediateMessageTest#test_QPID_517_ImmediateFailsNoRouteTxPubSub
-org.apache.qpid.test.testcases.MandatoryMessageTest#test_QPID_508_MandatoryFailsNoRouteNoTxP2P
-org.apache.qpid.test.testcases.MandatoryMessageTest#test_QPID_508_MandatoryFailsNoRouteTxP2P
-org.apache.qpid.test.testcases.MandatoryMessageTest#test_QPID_508_MandatoryFailsNoRouteNoTxPubSub
-org.apache.qpid.test.testcases.MandatoryMessageTest#test_QPID_508_MandatoryFailsNoRouteTxPubSub
+org.apache.qpid.test.client.ImmediateAndMandatoryPublishingTest#*
 
 //this test checks explicitly for 0-8 flow control semantics
 org.apache.qpid.test.client.FlowControlTest#*



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:[email protected]

Reply via email to