You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2002/01/14 01:21:27 UTC

cvs commit: jakarta-tomcat-connectors/http11/src/test/java/org/apache/coyote/http11 RandomAdapter.java FileTester.java

remm        02/01/13 16:21:27

  Modified:    http11/src/test/java/org/apache/coyote/http11
                        FileTester.java
  Added:       http11/src/test/java/org/apache/coyote/http11
                        RandomAdapter.java
  Log:
  - Add new test adapter.
  
  Revision  Changes    Path
  1.2       +1 -1      jakarta-tomcat-connectors/http11/src/test/java/org/apache/coyote/http11/FileTester.java
  
  Index: FileTester.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/http11/src/test/java/org/apache/coyote/http11/FileTester.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- FileTester.java	2 Jan 2002 15:06:35 -0000	1.1
  +++ FileTester.java	14 Jan 2002 00:21:27 -0000	1.2
  @@ -133,7 +133,7 @@
           // The second argument is the output file
           File outputFile = new File(args[1]);
   
  -        Adapter testAdapter = new TestAdapter();
  +        Adapter testAdapter = new RandomAdapter();
           Connector http11Connector = new Http11Connector();
   
           FileTester tester = new FileTester(testAdapter, http11Connector,
  
  
  
  1.1                  jakarta-tomcat-connectors/http11/src/test/java/org/apache/coyote/http11/RandomAdapter.java
  
  Index: RandomAdapter.java
  ===================================================================
  /*
   * ====================================================================
   *
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999 The Apache Software Foundation.  All rights 
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:  
   *       "This product includes software developed by the 
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written 
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * [Additional notices, if required by prior licensing conditions]
   *
   */ 
  package org.apache.coyote.http11;
  
  import org.apache.tomcat.util.buf.MessageBytes;
  import org.apache.tomcat.util.buf.ByteChunk;
  import org.apache.tomcat.util.http.MimeHeaders;
  
  import org.apache.coyote.ActionCode;
  import org.apache.coyote.Adapter;
  import org.apache.coyote.Request;
  import org.apache.coyote.Response;
  
  /**
   * Adapter which will return random responses using pipelining, which means it
   * will never try to generate bogus responses.
   *
   * @author Remy Maucherat
   */
  public class RandomAdapter
      implements Adapter {
  
  
      public static final String CRLF = "\r\n";
      public static final byte[] b = "0123456789\r\n".getBytes();
      public static final ByteChunk bc = new ByteChunk();
  
  
      /** 
       * Service method, which dumps the request to the console.
       */
      public void service(Request req, Response res)
  	throws Exception {
  
          double rand = Math.random();
          int n = (int) Math.round(10 * rand);
  
          // Temp variables
          byte[] buf = null;
          int nRead = 0;
          StringBuffer sbuf = new StringBuffer();
          MimeHeaders headers = req.getMimeHeaders();
          int size = headers.size();
  
          switch (n) {
  
          case 0:
  
              // 0) Do nothing
              System.out.println("Response 0");
              break;
  
          case 1:
  
              // 1) Set content length, and write the appropriate content
              System.out.println("Response 1");
              res.setContentLength(b.length);
              bc.setBytes(b, 0, b.length);
              res.doWrite(bc);
              break;
  
          case 2:
  
              // 2) Read the request data, and print out the number of bytes
              // read
              System.out.println("Response 2");
              while (nRead >= 0) {
                  nRead = req.doRead(bc);
                  buf = ("Read " + nRead + " bytes\r\n").getBytes();
                  bc.setBytes(buf, 0, buf.length);
                  res.doWrite(bc);
              }
              break;
  
          case 3:
  
              // 3) Return 204 (no content), while reading once on input
              System.out.println("Response 3");
              res.setStatus(204);
              nRead = req.doRead(bc);
              res.setHeader("Info", "Read " + nRead + " bytes");
              break;
  
          case 4:
  
              // 4) Do a request dump
              System.out.println("Response 4");
              sbuf.append("Request dump:");
              sbuf.append(CRLF);
              sbuf.append(req.method());
              sbuf.append(" ");
              sbuf.append(req.unparsedURI());
              sbuf.append(" ");
              sbuf.append(req.protocol());
              sbuf.append(CRLF);
              for (int i = 0; i < size; i++) {
                  sbuf.append(headers.getName(i) + ": ");
                  sbuf.append(headers.getValue(i).toString());
                  sbuf.append(CRLF);
              }
              sbuf.append("Request body:");
              sbuf.append(CRLF);
              res.action(ActionCode.ACTION_ACK, null);
              ByteChunk bc2 = new ByteChunk();
              byte[] b2 = sbuf.toString().getBytes();
              bc2.setBytes(b2, 0, b2.length);
              res.doWrite(bc2);
              while (nRead >= 0) {
                  nRead = req.doRead(bc2);
                  if (nRead > 0)
                      res.doWrite(bc2);
              }
              break;
  
          default:
  
              // Response not implemented yet
              System.out.println("Response " + n + " is not implemented yet");
  
          }
  
  /*
          StringBuffer buf = new StringBuffer();
          buf.append("Request dump:");
          buf.append(CRLF);
          buf.append(req.method());
          buf.append(" ");
          buf.append(req.unparsedURI());
          buf.append(" ");
          buf.append(req.protocol());
          buf.append(CRLF);
          
          MimeHeaders headers = req.getMimeHeaders();
          int size = headers.size();
          for (int i = 0; i < size; i++) {
              buf.append(headers.getName(i) + ": ");
              buf.append(headers.getValue(i).toString());
              buf.append(CRLF);
          }
  
          buf.append("Request body:");
          buf.append(CRLF);
  
          res.action(ActionCode.ACTION_ACK, null);
  
          ByteChunk bc = new ByteChunk();
          byte[] b = buf.toString().getBytes();
          bc.setBytes(b, 0, b.length);
          res.doWrite(bc);
  
          int nRead = 0;
  
          while (nRead >= 0) {
              nRead = req.doRead(bc);
              if (nRead > 0)
                  res.doWrite(bc);
          }
  */
  
      }
  
  
  }
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>