[exo-jcr-commits] exo-jcr SVN: r1387 - jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core.

do-not-reply at jboss.org do-not-reply at jboss.org
Thu Jan 14 07:55:11 EST 2010


Author: tolusha
Date: 2010-01-14 07:55:11 -0500 (Thu, 14 Jan 2010)
New Revision: 1387

Modified:
   jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestSessionCleaner.java
Log:
EXOJCR-334: test removing many sessions

Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestSessionCleaner.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestSessionCleaner.java	2010-01-14 09:21:56 UTC (rev 1386)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestSessionCleaner.java	2010-01-14 12:55:11 UTC (rev 1387)
@@ -22,8 +22,10 @@
 
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Random;
+import java.util.WeakHashMap;
 
 import javax.jcr.LoginException;
 import javax.jcr.NoSuchWorkspaceException;
@@ -403,4 +405,43 @@
          assertTrue(agent2.result);
       }
    }
+
+   public void testManySessionRemove() throws LoginException, NoSuchWorkspaceException, RepositoryException,
+      InterruptedException
+   {
+      int sessionCount = 100000;
+      WeakReference<SessionImpl> refSessions[] = new WeakReference[100000];
+      SessionImpl sessions[] = new SessionImpl[100000];
+
+      for (int i = 0; i < sessionCount; i++)
+      {
+         sessions[i] = (SessionImpl)repository.login(credentials, "ws");
+         refSessions[i] = new WeakReference<SessionImpl>(sessions[i]);
+      }
+
+      assertNotNull(sessionRegistry);
+
+      Thread.sleep(SessionRegistry.DEFAULT_CLEANER_TIMEOUT + 120000);
+
+      for (SessionImpl session : sessions)
+      {
+         assertFalse(session.isLive());
+      }
+
+      // Dereference the session explicitely
+      for (int i = 0; i < sessionCount; i++)
+      {
+         sessions[i] = null;
+      }
+
+      // Make a GC
+      forceGC();
+
+      // The weak reference must now be null
+      for (WeakReference ref : refSessions)
+      {
+         assertNull(ref.get());
+      }
+
+   }
 }



More information about the exo-jcr-commits mailing list