View Javadoc

1   /*
2    * SymmetricDS is an open source database synchronization solution.
3    *   
4    * Copyright (C) Chris Henson <chenson42@users.sourceforge.net>
5    *
6    * This library is free software; you can redistribute it and/or
7    * modify it under the terms of the GNU Lesser General Public
8    * License as published by the Free Software Foundation; either
9    * version 3 of the License, or (at your option) any later version.
10   *
11   * This library is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14   * Lesser General Public License for more details.
15   *
16   * You should have received a copy of the GNU Lesser General Public
17   * License along with this library; if not, see
18   * <http://www.gnu.org/licenses/>.
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       * (non-Java-doc)
68       * 
69       * @see javax.servlet.http.HttpServlet#HttpServlet()
70       */
71      public TestServlet() {
72          super();
73      }
74  
75      /*
76       * (non-Java-doc)
77       * 
78       * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request,
79       *      HttpServletResponse response)
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      * (non-Java-doc)
117      * 
118      * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request,
119      *      HttpServletResponse response)
120      */
121     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,
122             IOException {
123         logger.info("in do post");
124     }
125 
126     /*
127      * (non-Javadoc)
128      * 
129      * @see javax.servlet.http.HttpServlet#doPut(javax.servlet.http.HttpServletRequest,
130      *      javax.servlet.http.HttpServletResponse)
131      */
132     protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
133 
134         super.doPut(request, response);
135     }
136 }