summaryrefslogtreecommitdiffstats
path: root/uitest/src/com/vaadin/launcher
diff options
context:
space:
mode:
authorLeif Åstrand <leif@vaadin.com>2013-05-10 16:53:33 +0300
committerLeif Åstrand <leif@vaadin.com>2013-05-10 16:53:33 +0300
commit42d94768bfacb3d831e125ae33eeb4b9fa1d8a53 (patch)
treea09cd9d99d1be99dd6600a90db07fb08d15af28a /uitest/src/com/vaadin/launcher
parent762c924a8bf05f57b8af7108d7bb6a9c59dcc6c6 (diff)
parent19e27a15ca765de477fbe929a1cb6a7412c523f7 (diff)
downloadvaadin-framework-42d94768bfacb3d831e125ae33eeb4b9fa1d8a53.tar.gz
vaadin-framework-42d94768bfacb3d831e125ae33eeb4b9fa1d8a53.zip
Merge changes from origin/7.0
7d9f544 Test for #11396 (merged from 6.8 branch). Depends on a blur event so cannot be autotested with TB. 1b18807 Remove pre-loader element after pre-loading, fixes #10863 ce9c818 Instead of applying workaround to the root panel, apply it to the sub window content element instead to prevent scrolling of the document when a sub window is removed. #11713 (#10776) 3f5d022 Liferay 6.2 compatibility (#11751) ffd1c1b Don't ignore child component margins in AbstractOrderedLayout (#11553) 62ae5e1 More verbose output from running Jetty 21d9b67 Add a large number of debug calls to VFilterSelect (disabled by default) bdb7931 Merge test for #11623 to 7.0. 19e27a1 Move suggestion popup width calculation from connector to VFilterSelect Change-Id: I2d980126599e55fa5e4f6ec523dca16ba54107b5
Diffstat (limited to 'uitest/src/com/vaadin/launcher')
-rw-r--r--uitest/src/com/vaadin/launcher/DevelopmentServerLauncher.java109
1 files changed, 109 insertions, 0 deletions
diff --git a/uitest/src/com/vaadin/launcher/DevelopmentServerLauncher.java b/uitest/src/com/vaadin/launcher/DevelopmentServerLauncher.java
index ad372bd5bc..070cd2834d 100644
--- a/uitest/src/com/vaadin/launcher/DevelopmentServerLauncher.java
+++ b/uitest/src/com/vaadin/launcher/DevelopmentServerLauncher.java
@@ -22,9 +22,20 @@ import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.nio.SelectChannelConnector;
@@ -163,6 +174,25 @@ public class DevelopmentServerLauncher {
webappcontext.setWar(serverArgs.get("webroot"));
server.setHandler(webappcontext);
+ // --slowdown=/run/APP/PUBLISHED/*,/other/path/asd.jpg
+ // slows down specified paths
+ if (serverArgs.containsKey("slowdown")) {
+ String[] paths = serverArgs.get("slowdown").split(",");
+ for (String p : paths) {
+ System.out.println("Slowing down: " + p);
+ webappcontext.addFilter(SlowFilter.class, p, 1);
+ }
+ }
+ // --cache=/run/APP/PUBLISHED/*,/other/path/asd.jpg
+ // caches specified paths
+ if (serverArgs.containsKey("cache")) {
+ String[] paths = serverArgs.get("cache").split(",");
+ for (String p : paths) {
+ System.out.println("Enabling cache for: " + p);
+ webappcontext.addFilter(CacheFilter.class, p, 1);
+ }
+ }
+
try {
server.start();
@@ -243,4 +273,83 @@ public class DevelopmentServerLauncher {
return map;
}
+ /**
+ * Sleeps for 2-5 seconds when serving resources that matches given
+ * pathSpec. --slowdown=/run/APP/PUBLISHED/*,/other/path/asd.jpg
+ */
+ public static class SlowFilter implements Filter {
+
+ @Override
+ public void init(FilterConfig filterConfig) throws ServletException {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ public void doFilter(ServletRequest request, ServletResponse response,
+ FilterChain chain) throws IOException, ServletException {
+
+ String path = ((HttpServletRequest) request).getPathInfo();
+ long delay = Math.round(Math.random() * 3000) + 2000;
+ System.out.println("Delaying " + path + " for " + delay);
+
+ try {
+ Thread.sleep(delay);
+ } catch (InterruptedException e) {
+ System.out.println("Delay interrupted for " + path);
+ } finally {
+ System.out.println("Resuming " + path);
+ }
+
+ chain.doFilter(request, response);
+ }
+
+ @Override
+ public void destroy() {
+ // TODO Auto-generated method stub
+ }
+
+ }
+
+ /**
+ * Adds "Expires" and "Cache-control" headers when serving resources that
+ * match given pathSpec, in order to cache resource for CACHE_MINUTES.
+ * --cache=/run/APP/PUBLISHED/*,/other/path/asd.jpg
+ */
+ public static class CacheFilter implements Filter {
+
+ private static final int CACHE_MINUTES = 1;
+
+ @Override
+ public void init(FilterConfig filterConfig) throws ServletException {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ public void doFilter(ServletRequest request, ServletResponse response,
+ FilterChain chain) throws IOException, ServletException {
+
+ String path = ((HttpServletRequest) request).getPathInfo();
+ System.out.println("Caching " + path + " for " + CACHE_MINUTES
+ + " minutes");
+
+ Calendar calendar = Calendar.getInstance();
+ calendar.add(Calendar.MINUTE, CACHE_MINUTES);
+
+ String expires = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z")
+ .format(calendar.getTime());
+
+ ((HttpServletResponse) response).setHeader("Expires", expires);
+ ((HttpServletResponse) response).setHeader("Cache-Control",
+ "max-age=" + (CACHE_MINUTES * 60));
+
+ chain.doFilter(request, response);
+ }
+
+ @Override
+ public void destroy() {
+ // TODO Auto-generated method stub
+ }
+
+ }
+
}