blob: f8454284b98368b823eab29f35a04ff866dccbb5 [file] [log] [blame]
//
// ========================================================================
// Copyright (c) 1995-2015 Mort Bay Consulting Pty. Ltd.
// ------------------------------------------------------------------------
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v1.0
// and Apache License v2.0 which accompanies this distribution.
//
// The Eclipse Public License is available at
// http://www.eclipse.org/legal/epl-v10.html
//
// The Apache License v2.0 is available at
// http://www.opensource.org/licenses/apache2.0.php
//
// You may elect to redistribute this code under either of these licenses.
// ========================================================================
//
package org.eclipse.jetty.io;
import java.util.concurrent.TimeoutException;
import org.eclipse.jetty.util.thread.TimerScheduler;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
public class IdleTimeoutTest
{
volatile boolean _open;
volatile TimeoutException _expired;
TimerScheduler _timer;
IdleTimeout _timeout;
@Before
public void setUp() throws Exception
{
_open=true;
_expired=null;
_timer=new TimerScheduler();
_timer.start();
_timeout=new IdleTimeout(_timer)
{
@Override
protected void onIdleExpired(TimeoutException timeout)
{
_expired=timeout;
}
@Override
public boolean isOpen()
{
return _open;
}
};
_timeout.setIdleTimeout(1000);
}
@After
public void tearDown() throws Exception
{
_open=false;
_timer.stop();
}
@Test
public void testNotIdle() throws Exception
{
for (int i=0;i<20;i++)
{
Thread.sleep(100);
_timeout.notIdle();
}
Assert.assertNull(_expired);
}
@Test
public void testIdle() throws Exception
{
for (int i=0;i<5;i++)
{
Thread.sleep(100);
_timeout.notIdle();
}
Thread.sleep(1500);
Assert.assertNotNull(_expired);
}
@Test
public void testClose() throws Exception
{
for (int i=0;i<5;i++)
{
Thread.sleep(100);
_timeout.notIdle();
}
_timeout.onClose();
Thread.sleep(1500);
Assert.assertNull(_expired);
}
@Test
public void testClosed() throws Exception
{
for (int i=0;i<5;i++)
{
Thread.sleep(100);
_timeout.notIdle();
}
_open=false;
Thread.sleep(1500);
Assert.assertNull(_expired);
}
@Test
public void testShorten() throws Exception
{
for (int i=0;i<5;i++)
{
Thread.sleep(100);
_timeout.notIdle();
}
_timeout.setIdleTimeout(100);
Thread.sleep(400);
Assert.assertNotNull(_expired);
}
@Test
public void testLengthen() throws Exception
{
for (int i=0;i<5;i++)
{
Thread.sleep(100);
_timeout.notIdle();
}
_timeout.setIdleTimeout(10000);
Thread.sleep(1500);
Assert.assertNull(_expired);
}
@Test
public void testMultiple() throws Exception
{
Thread.sleep(1500);
Assert.assertNotNull(_expired);
_expired=null;
Thread.sleep(1000);
Assert.assertNotNull(_expired);
}
}