You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by gt...@apache.org on 2012/07/31 17:53:29 UTC

svn commit: r1367626 - /activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/DurableSubscriptionOfflineTest.java

Author: gtully
Date: Tue Jul 31 15:53:29 2012
New Revision: 1367626

URL: http://svn.apache.org/viewvc?rev=1367626&view=rev
Log:
 add test that seems to show index growth with repeated use of durable subs

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=1367626&r1=1367625&r2=1367626&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 Tue Jul 31 15:53:29 2012
@@ -44,6 +44,7 @@ import org.apache.activemq.store.jdbc.JD
 import org.apache.activemq.store.kahadb.KahaDBPersistenceAdapter;
 import org.apache.activemq.util.Wait;
 import org.apache.kahadb.journal.Journal;
+import org.apache.kahadb.page.PageFile;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -755,6 +756,57 @@ public class DurableSubscriptionOfflineT
         assertEquals(0, listener.count);
     }
 
+    public void testRemovedDurableSubDeletesFromIndex() throws Exception {
+
+        if (! (broker.getPersistenceAdapter() instanceof KahaDBPersistenceAdapter)) {
+            return;
+        }
+
+        // fails for numMessages > 3000
+        final int numMessages = 100;
+
+        KahaDBPersistenceAdapter kahaDBPersistenceAdapter = (KahaDBPersistenceAdapter)broker.getPersistenceAdapter();
+        PageFile pageFile = kahaDBPersistenceAdapter.getStore().getPageFile();
+        LOG.info("PageCount " + pageFile.getPageCount() + " f:" + pageFile.getFreePageCount() + ", fileSize:" + pageFile.getFile().length());
+
+        long lastDiff = 0;
+        for (int repeats=0; repeats<4; repeats++) {
+
+            LOG.info("Iteration: "+ repeats  + " Count:" + pageFile.getPageCount() + " f:" + pageFile.getFreePageCount());
+
+            Connection con = createConnection("cliId1" + "-" + repeats);
+            Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
+            session.createDurableSubscriber(topic, "SubsId", "filter = 'true'", true);
+            session.close();
+            con.close();
+
+            // send messages
+            con = createConnection();
+            session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
+            MessageProducer producer = session.createProducer(null);
+
+            for (int i = 0; i < numMessages; i++) {
+                Message message = session.createMessage();
+                message.setStringProperty("filter", "true");
+                producer.send(topic, message);
+            }
+            con.close();
+
+            Connection con2 = createConnection("cliId1" + "-" + repeats);
+            Session session2 = con2.createSession(false, Session.AUTO_ACKNOWLEDGE);
+            session2.unsubscribe("SubsId");
+            session2.close();
+            con2.close();
+
+            LOG.info("PageCount " + pageFile.getPageCount() + " f:" + pageFile.getFreePageCount() +  " diff: " + (pageFile.getPageCount() - pageFile.getFreePageCount()) + " fileSize:" + pageFile.getFile().length());
+
+            if (lastDiff != 0) {
+                assertEquals("Only use X pages per iteration", lastDiff, pageFile.getPageCount() - pageFile.getFreePageCount());
+            }
+            lastDiff = pageFile.getPageCount() - pageFile.getFreePageCount();
+        }
+    }
+
     public void initCombosForTestOfflineSubscriptionWithSelectorAfterRestart() throws Exception {
         this.addCombinationValues("defaultPersistenceAdapter",
                 new Object[]{ PersistenceAdapterChoice.KahaDB, PersistenceAdapterChoice.JDBC});