Return-Path: Delivered-To: apmail-activemq-commits-archive@www.apache.org Received: (qmail 45762 invoked from network); 29 Oct 2010 11:47:33 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 29 Oct 2010 11:47:33 -0000 Received: (qmail 34741 invoked by uid 500); 29 Oct 2010 11:47:33 -0000 Delivered-To: apmail-activemq-commits-archive@activemq.apache.org Received: (qmail 34679 invoked by uid 500); 29 Oct 2010 11:47:32 -0000 Mailing-List: contact commits-help@activemq.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@activemq.apache.org Delivered-To: mailing list commits@activemq.apache.org Received: (qmail 34672 invoked by uid 99); 29 Oct 2010 11:47:31 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 29 Oct 2010 11:47:31 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 29 Oct 2010 11:47:29 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id D7D4E23889B9; Fri, 29 Oct 2010 11:46:31 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1028702 - /activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/DurableSubscriptionOfflineTest.java Date: Fri, 29 Oct 2010 11:46:31 -0000 To: commits@activemq.apache.org From: gtully@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20101029114631.D7D4E23889B9@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: gtully Date: Fri Oct 29 11:46:31 2010 New Revision: 1028702 URL: http://svn.apache.org/viewvc?rev=1028702&view=rev Log: additional offiline test, and enable the jdbc variants - https://issues.apache.org/activemq/browse/AMQ-2985 Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/DurableSubscriptionOfflineTest.java Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/DurableSubscriptionOfflineTest.java URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/DurableSubscriptionOfflineTest.java?rev=1028702&r1=1028701&r2=1028702&view=diff ============================================================================== --- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/DurableSubscriptionOfflineTest.java (original) +++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/DurableSubscriptionOfflineTest.java Fri Oct 29 11:46:31 2010 @@ -69,9 +69,13 @@ public class DurableSubscriptionOfflineT } private void createBroker() throws Exception { + createBroker(true); + } + + private void createBroker(boolean deleteAllMessages) throws Exception { broker = BrokerFactory.createBroker("broker:(vm://" + getName(true) +")"); broker.setBrokerName(getName(true)); - broker.setDeleteAllMessagesOnStartup(true); + broker.setDeleteAllMessagesOnStartup(deleteAllMessages); broker.getManagementContext().setCreateConnector(false); if (usePrioritySupport) { @@ -91,7 +95,7 @@ public class DurableSubscriptionOfflineT broker.stop(); } - public void x_initCombosForTestConsumeOnlyMatchedMessages() throws Exception { + public void initCombosForTestConsumeOnlyMatchedMessages() throws Exception { this.addCombinationValues("defaultPersistenceAdapter", new Object[]{ PersistenceAdapterChoice.KahaDB, PersistenceAdapterChoice.JDBC}); this.addCombinationValues("usePrioritySupport", @@ -290,6 +294,77 @@ public class DurableSubscriptionOfflineT assertEquals("offline consumer got all", sent, listener.count); } + + public void testOfflineSubscriptionCanConsumeAfterOnlineSubs() throws Exception { + Connection con = createConnection("offCli1"); + Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE); + session.createDurableSubscriber(topic, "SubsId", "filter = 'true'", true); + session.close(); + con.close(); + + con = createConnection("offCli2"); + session = con.createSession(false, Session.AUTO_ACKNOWLEDGE); + session.createDurableSubscriber(topic, "SubsId", "filter = 'true'", true); + session.close(); + con.close(); + + Connection con2 = createConnection("onlineCli1"); + Session session2 = con2.createSession(false, Session.AUTO_ACKNOWLEDGE); + MessageConsumer consumer2 = session2.createDurableSubscriber(topic, "SubsId", "filter = 'true'", true); + Listener listener2 = new Listener(); + consumer2.setMessageListener(listener2); + + // send messages + con = createConnection(); + session = con.createSession(false, Session.AUTO_ACKNOWLEDGE); + MessageProducer producer = session.createProducer(null); + + int sent = 0; + for (int i = 0; i < 10; i++) { + sent++; + Message message = session.createMessage(); + message.setStringProperty("filter", "true"); + producer.send(topic, message); + } + + Thread.sleep(1 * 1000); + session.close(); + con.close(); + + // test online subs + Thread.sleep(3 * 1000); + session2.close(); + con2.close(); + assertEquals(sent, listener2.count); + + // restart broker + broker.stop(); + createBroker(false /*deleteAllMessages*/); + + // test offline + con = createConnection("offCli1"); + session = con.createSession(false, Session.AUTO_ACKNOWLEDGE); + MessageConsumer consumer = session.createDurableSubscriber(topic, "SubsId", "filter = 'true'", true); + + Connection con3 = createConnection("offCli2"); + Session session3 = con3.createSession(false, Session.AUTO_ACKNOWLEDGE); + MessageConsumer consumer3 = session3.createDurableSubscriber(topic, "SubsId", "filter = 'true'", true); + + Listener listener = new Listener(); + consumer.setMessageListener(listener); + Listener listener3 = new Listener(); + consumer3.setMessageListener(listener3); + + Thread.sleep(3 * 1000); + + session.close(); + con.close(); + session3.close(); + con3.close(); + + assertEquals(sent, listener.count); + assertEquals(sent, listener3.count); + } public static class Listener implements MessageListener { int count = 0;