public void testReplicatedMaxSessionsWithMaxIdle() throws Exception
{
log.info("Enter testReplicatedMaxSessionsWithMaxIdle");
++testCount;
DataSourcePersistentManager mgr0 = PersistentSessionTestUtil.createManager("test" + testCount, 5, null);
PersistentSessionTestUtil.configureManager(mgr0, 1, true, 1, -1);
mgr0.start();
assertTrue("Passivation is enabled", mgr0.isPassivationEnabled());
assertEquals("Correct max active count", 1, mgr0.getMaxActiveAllowed());
assertEquals("Correct max idle time", 1, mgr0.getPassivationMaxIdleTime());
assertEquals("Correct min idle time", -1, mgr0.getPassivationMinIdleTime());
DataSourcePersistentManager mgr1 = PersistentSessionTestUtil.createManager("test" + testCount, 5, null);
PersistentSessionTestUtil.configureManager(mgr1, 1, true, 1, -1);
mgr1.start();
assertTrue("Passivation is enabled", mgr1.isPassivationEnabled());
assertEquals("Correct max active count", 1, mgr1.getMaxActiveAllowed());
assertEquals("Correct max idle time", 1, mgr1.getPassivationMaxIdleTime());
assertEquals("Correct min idle time", -1, mgr1.getPassivationMinIdleTime());
// Set up a session
createAndUseSession(mgr0, "1", true, true);
assertEquals("Session count correct", 1, mgr0.getActiveSessionCount());
assertEquals("Local session count correct", 1, mgr0.getLocalActiveSessionCount());
assertEquals("Passivated session count correct", 0, mgr0.getPassivatedSessionCount());
assertEquals("Expired session count correct", 0, mgr0.getExpiredSessionCount());
assertEquals("Session count correct", 0, mgr1.getActiveSessionCount());
assertEquals("Local session count correct", 0, mgr1.getLocalActiveSessionCount());
assertEquals("Passivated session count correct", 0, mgr1.getPassivatedSessionCount());
assertEquals("Expired session count correct", 0, mgr1.getExpiredSessionCount());
// Get it in-memory on mgr1 as well
useSession(mgr1, "1");
// A 2nd session should fail
createAndUseSession(mgr0, "2", false, false);
createAndUseSession(mgr1, "2", false, false);
// Sleep past maxIdleTime
SessionTestUtil.sleepThread(1100);
assertEquals("Passivated session count correct", 0, mgr1.getPassivatedSessionCount());
createAndUseSession(mgr1, "2", true, true);
createAndUseSession(mgr0, "3", true, true);
assertEquals("Session count correct", 1, mgr0.getActiveSessionCount());
assertEquals("Local session count correct", 1, mgr0.getLocalActiveSessionCount());
assertEquals("Created session count correct", 2, mgr0.getCreatedSessionCount());
assertEquals("Expired session count correct", 0, mgr0.getExpiredSessionCount());
assertEquals("Passivated session count correct", 1, mgr0.getPassivatedSessionCount());
assertEquals("Session count correct", 1, mgr1.getActiveSessionCount());
assertEquals("Local session count correct", 1, mgr1.getLocalActiveSessionCount());
assertEquals("Created session count correct", 1, mgr1.getCreatedSessionCount());
assertEquals("Expired session count correct", 0, mgr1.getExpiredSessionCount());
assertEquals("Passivated session count correct", 1, mgr1.getPassivatedSessionCount());
}