/******************************************************************************* * Copyright (c) 2006-2010 eBay Inc. All Rights Reserved. * 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 *******************************************************************************/ package org.ebayopensource.turmeric.runtime.tests.common.jetty; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.mortbay.jetty.Handler; import org.mortbay.jetty.handler.HandlerWrapper; import org.mortbay.log.Log; /** * Some tests assume that the server process is slow. So this handler simply adds a parameterized delay to the * processing of a request, simulating a slow server. */ public class IntentionalDelayHandler extends HandlerWrapper { /** * Delay to add, in milliseconds. */ private long delay = 2000; @Override public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch) throws IOException, ServletException { /* only delay proper requests, not internal routing */ if (dispatch == Handler.REQUEST) { try { Thread.sleep(delay); } catch (InterruptedException e) { Log.warn("Unable to cause intentional delay of " + delay + " ms: " + e.getClass().getName() + ": " + e.getMessage()); } } super.handle(target, request, response, dispatch); } public long getDelay() { return delay; } public void setDelay(long delay) { this.delay = delay; } @Override public String toString() { return this.getClass().getName() + " (delay: " + delay + ")"; } }