1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.jumpmind.symmetric.web;
21
22 import java.io.IOException;
23 import java.io.PrintWriter;
24 import java.util.Random;
25
26 import javax.servlet.ServletException;
27 import javax.servlet.http.HttpServletRequest;
28 import javax.servlet.http.HttpServletResponse;
29
30 import org.apache.log4j.Logger;
31
32 /***
33 * Servlet implementation class for Servlet: TestServlet
34 *
35 *
36 * <?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4"
37 * xmlns="http://java.sun.com/xml/ns/j2ee"
38 * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
39 * xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
40 * http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name> testFilter</display-name>
41 * <servlet> <description> </description> <display-name> TestServlet</display-name>
42 * <servlet-name>TestServlet</servlet-name> <servlet-class>
43 * org.jumpmind.symmetric.web.TestServlet</servlet-class> </servlet>
44 * <servlet-mapping> <servlet-name>TestServlet</servlet-name>
45 * <url-pattern>/TestServlet</url-pattern> </servlet-mapping>
46 * <welcome-file-list> <welcome-file>index.html</welcome-file>
47 * <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file>
48 * <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file>
49 * <welcome-file>default.jsp</welcome-file> </welcome-file-list> <filter>
50 * <filter-name>ThrottleFilter</filter-name>
51 * <filter-class>org.jumpmind.symmetric.web.ThrottleFilter</filter-class>
52 * <init-param> <param-name>maxBps</param-name> <param-value>10240</param-value>
53 * </init-param> <init-param> <param-name>threshold</param-name>
54 * <param-value>8192</param-value> </init-param> <init-param>
55 * <param-name>checkPoint</param-name> <param-value>4096</param-value>
56 * </init-param> </filter> <filter-mapping> <filter-name>ThrottleFilter</filter-name>
57 * <url-pattern>/TestServlet</url-pattern> </filter-mapping> </web-app>
58 *
59 *
60 */
61 public class TestServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
62 static final long serialVersionUID = 1L;
63
64 private static Logger logger = Logger.getLogger(TestServlet.class);
65
66
67
68
69
70
71 public TestServlet() {
72 super();
73 }
74
75
76
77
78
79
80
81 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
82 logger.info("in do get");
83
84 final long rate = 10 * 1024;
85 final long count = 50;
86 final int bufferSize = 8192;
87
88 System.out.println("Running for " + (bufferSize * count) + " bytes");
89
90 PrintWriter out = response.getWriter();
91 long start = System.currentTimeMillis();
92 byte[] testBytes = new byte[bufferSize];
93
94 Random r = new Random();
95
96 r.nextBytes(testBytes);
97
98 long i = 0;
99 for (i = 0; i < count; i++) {
100 out.print(new String(testBytes));
101
102 }
103 System.out.println();
104
105 double expectedTime = (bufferSize * count) / rate;
106 double actualTime = (System.currentTimeMillis() - start + 1) / 1000;
107 System.out.println("Configured rate: " + rate);
108 System.out.println("Actual rate: " + (i * bufferSize / actualTime));
109 System.out.println("Expected time: " + expectedTime);
110 System.out.println("Actual time: " + actualTime);
111 assert (actualTime >= expectedTime - 2 && actualTime <= expectedTime + 2);
112
113 }
114
115
116
117
118
119
120
121 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,
122 IOException {
123 logger.info("in do post");
124 }
125
126
127
128
129
130
131
132 protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
133
134 super.doPut(request, response);
135 }
136 }