[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