blob: 05207cd3891e96b1ff351be859540eb99fc85a46 [file] [log] [blame]
/*
* Copyright 1999,2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.apache.catalina.cluster.session;
import junit.framework.TestCase;
import org.apache.catalina.Manager;
/**
* @author Peter Rossbach
*
* @version $Revision$ $Date$
*/
public class DeltaSessionTest extends TestCase {
public void testPrimarySessionisValid() {
DeltaManager manager = new DeltaManager() { public DeltaSession getNewDeltaSession() { return new MockSession(this) ; } } ;
manager.setMaxInactiveInterval(1);
MockSession session = (MockSession)manager.createSession("hello",false);
assertTrue(session.isPrimarySession());
assertTrue(session.isValid()) ;
assertEquals(1,session.getMaxInactiveInterval());
try {
Thread.sleep(2000);
} catch (Exception sleep) {
}
long timeNow = System.currentTimeMillis();
int timeIdle = (int) ((timeNow - session.getLastAccessedTimeInternal()) / 1000L);
assertEquals(2,timeIdle);
assertTrue(timeIdle > session.getMaxInactiveInterval());
assertFalse(session.isValid()) ;
assertEquals(1,session.expireNotifyCalled);
assertEquals(1,session.expireNotifyClusterCalled);
}
public void testBackupSessionisValid() {
DeltaManager manager = new DeltaManager() { public DeltaSession getNewDeltaSession() { return new MockSession(this) ; } } ;
manager.setMaxInactiveInterval(1);
MockSession session = (MockSession)manager.createSession("hello",false);
session.setPrimarySession(false);
try {
Thread.sleep(1000);
} catch (Exception sleep) {
}
assertTrue(session.isValid()) ;
assertEquals(0,session.expireNotifyCalled);
assertEquals(0,session.expireNotifyClusterCalled);
try {
Thread.sleep(2000);
} catch (Exception sleep) {
}
assertFalse(session.isValid()) ;
assertEquals(1,session.expireNotifyCalled);
// no cluster notification
assertEquals(0,session.expireNotifyClusterCalled);
}
class MockSession extends DeltaSession {
long expireCalled = 0 ;
long expireNotifyCalled = 0 ;
long expireNotifyClusterCalled = 0 ;
/**
* @param manager
*/
public MockSession(Manager manager) {
super(manager);
}
/* (non-Javadoc)
* @see org.apache.catalina.cluster.session.DeltaSession#expire(boolean, boolean)
*/
public void expire(boolean notify, boolean notifyCluster) {
expireCalled++ ;
if(notify)
expireNotifyCalled++ ;
if(notifyCluster)
expireNotifyClusterCalled++ ;
isValid = false ;
}
}
}