Added: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/load/LiveHttpThreadedTest.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/load/LiveHttpThreadedTest.java?rev=884421&view=auto
==============================================================================
--- 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/load/LiveHttpThreadedTest.java
 (added)
+++ 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/load/LiveHttpThreadedTest.java
 Thu Nov 26 06:55:49 2009
@@ -0,0 +1,116 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tomcat.lite.load;
+
+
+import java.io.IOException;
+
+import junit.framework.TestCase;
+
+import org.apache.tomcat.lite.TestMain;
+import org.apache.tomcat.lite.http.DefaultHttpConnector;
+import org.apache.tomcat.lite.http.HttpChannel;
+import org.apache.tomcat.lite.http.HttpConnector;
+import org.apache.tomcat.lite.http.HttpChannel.HttpService;
+import org.apache.tomcat.lite.http.HttpChannel.RequestCompleted;
+
+public class LiveHttpThreadedTest extends TestCase {
+  HttpConnector staticMain = TestMain.getTestServer();
+  
+  
+  int tCount = 1;
+  Thread[] threads = new Thread[tCount];
+  int[] ok = new int[tCount];
+  private int rCount = 100;
+  
+  public void xtestSimpleRequest() throws Exception {
+    long t0 = System.currentTimeMillis();
+    for (int i = 0; i < tCount; i++) {
+      final int j = i;
+      threads[i] = new Thread(new Runnable() {
+        public void run() {
+          makeRequests(j, true);
+        }
+      });
+      threads[i].start();
+    }
+    
+    int res = 0;
+    for (int i = 0; i < tCount; i++) {
+      threads[i].join();
+      res += ok[i];
+    }
+    long t1 = System.currentTimeMillis();
+    System.err.println("Time: " + (t1 - t0) + " " + res);
+  }
+
+  public void testSimpleRequestNB() throws Exception {
+    long t0 = System.currentTimeMillis();
+    for (int i = 0; i < tCount; i++) {
+      final int j = i;
+      threads[i] = new Thread(new Runnable() {
+        public void run() {
+          makeRequests(j, false);
+        }
+      });
+      threads[i].start();
+    }
+    
+    int res = 0;
+    for (int i = 0; i < tCount; i++) {
+      threads[i].join();
+      res += ok[i];
+    }
+    long t1 = System.currentTimeMillis();
+    System.err.println("TimeNB: " + (t1 - t0) + " " + res);
+  }
+  
+  void makeRequests(int t, boolean b) {
+    for (int i = 0; i < rCount ; i++) {
+      try {
+        //System.err.println("MakeReq " + t + " " + i);
+        makeRequest(t, b);
+      } catch (Exception e) {
+        e.printStackTrace();
+      }
+    }
+  }
+
+  static RequestCompleted reqCallback = new RequestCompleted() {
+    @Override
+    public void handle(HttpChannel data, Object extraData) 
+        throws IOException {
+        //dumpHead(cstate);  
+        //System.err.println("DATA\n" + cstate.output.toString() + "\n----");
+        //assertTrue(cstate.bodyRecvBuffer.toString().indexOf("AAA") >= 0);
+    
+        data.release();
+    }
+      
+  };
+  
+  void makeRequest(int i, boolean block) throws Exception {
+    HttpChannel cstate = DefaultHttpConnector.get().get("localhost", 8802);
+    
+    cstate.getRequest().requestURI().set("/hello");
+    cstate.setCompletedCallback(reqCallback);
+    
+    // Send the request, wait response
+    cstate.sendRequest();
+  }
+  
+}

Propchange: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/load/LiveHttpThreadedTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/load/MicroTest.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/load/MicroTest.java?rev=884421&view=auto
==============================================================================
--- 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/load/MicroTest.java
 (added)
+++ 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/load/MicroTest.java
 Thu Nov 26 06:55:49 2009
@@ -0,0 +1,49 @@
+/*
+ */
+package org.apache.tomcat.lite.load;
+
+import org.apache.tomcat.lite.http.BaseMapper;
+import org.apache.tomcat.lite.http.MappingData;
+import org.apache.tomcat.lite.io.CBuffer;
+
+import junit.framework.TestCase;
+
+public class MicroTest extends TestCase {
+
+    public void testMapper() throws Exception {
+        BaseMapper mapper = new BaseMapper();
+
+        MappingData mappingData = new MappingData();
+        CBuffer host = CBuffer.newInstance();
+        host.set("test1.com");
+        
+        CBuffer uri = CBuffer.newInstance();
+        uri.set("/foo/bar/blah/bobou/foo");
+
+        String[] welcomes = new String[2];
+        welcomes[0] = "index.html";
+        welcomes[1] = "foo.html";
+
+        for (int i = 0; i < 100; i++) {
+            String hostN = "test" + i + ".com";
+            mapper.addContext(hostN, "", "context0", new String[0], null, 
null);
+            mapper.addContext(hostN, "/foo", "context1", new String[0], null, 
null);
+            mapper.addContext(hostN, "/foo/bar", "context2", welcomes, null, 
null);
+            mapper.addContext(hostN, "/foo/bar/bla", "context3", new 
String[0], null, null);
+
+            mapper.addWrapper(hostN, "/foo/bar", "/fo/*", "wrapper0");
+        }
+        int N = 10000;
+        for (int i = 0; i < N; i++) {
+            mappingData.recycle();
+            mapper.map(host, uri, mappingData);
+        }
+
+        long time = System.currentTimeMillis();
+        for (int i = 0; i < N; i++) {
+            mappingData.recycle();
+            mapper.map(host, uri, mappingData);
+        }
+        System.out.println("Elapsed:" + (System.currentTimeMillis() - time));  
      
+    }
+}

Propchange: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/load/MicroTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/proxy/LiveProxyHttp1Test.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/proxy/LiveProxyHttp1Test.java?rev=884421&view=auto
==============================================================================
--- 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/proxy/LiveProxyHttp1Test.java
 (added)
+++ 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/proxy/LiveProxyHttp1Test.java
 Thu Nov 26 06:55:49 2009
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tomcat.lite.proxy;
+
+
+import java.io.IOException;
+
+import org.apache.tomcat.lite.http.LiveHttp1Test;
+
+
+public class LiveProxyHttp1Test extends LiveHttp1Test {
+    public void setUp() throws IOException {
+        // All tests in super, but with client pointing to 
+        // the proxy server, which in turn hits the real server.
+        clientPort = 8903;
+        super.setUp();
+  }
+  
+}

Propchange: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/proxy/LiveProxyHttp1Test.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/proxy/ProxyTest.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/proxy/ProxyTest.java?rev=884421&view=auto
==============================================================================
--- 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/proxy/ProxyTest.java
 (added)
+++ 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/proxy/ProxyTest.java
 Thu Nov 26 06:55:49 2009
@@ -0,0 +1,120 @@
+/*
+n * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tomcat.lite.proxy;
+
+import java.io.IOException;
+
+import org.apache.tomcat.lite.TestMain;
+
+import junit.framework.TestCase;
+
+
+public class ProxyTest extends TestCase {
+
+  String resStr;
+    
+  public void setUp() throws Exception {
+      TestMain.getTestServer();
+  }
+  
+  public void tearDown() throws IOException {
+  }
+  
+  public void xtestRequestSlowChunked() throws Exception {
+      resStr = 
+          TestMain.get("http://localhost:8903/sleep/1c";).toString();
+      assertEquals("sleep 1csleep 1c", resStr);
+  }
+  
+  public void testSingleRequest() throws Exception {
+      String resStr = 
+          TestMain.get("http://localhost:8903/hello";).toString();
+      assertEquals("Hello world", resStr);
+  }
+  
+
+  public void test2Requests() throws Exception {
+      String resStr = 
+          TestMain.get("http://localhost:8903/hello";).toString();
+      assertEquals("Hello world", resStr);
+      resStr = 
+          TestMain.get("http://localhost:8903/hello?a=b";).toString();
+      assertEquals("Hello world", resStr);
+  }
+
+  public void testRequestSimple() throws Exception {
+      resStr = 
+          TestMain.get("http://localhost:8903/hello";).toString();
+      assertEquals("Hello world", resStr);
+      resStr = 
+          TestMain.get("http://localhost:8903/hello";).toString();
+      assertEquals("Hello world", resStr);
+      resStr = 
+          TestMain.get("http://localhost:8903/hello";).toString();
+      assertEquals(resStr, "Hello world");
+
+  }
+  
+  public void testExtAdapter() throws Exception {
+      String res = 
+              TestMain.get("http://www.apache.org/";).toString();
+      assertTrue(res.indexOf("Apache") > 0);
+      
+      Thread.currentThread().sleep(100);
+      // second time - are we reusing ?
+      res = 
+          TestMain.get("http://www.apache.org/";).toString();
+      
+      assertTrue(res.indexOf("Apache") > 0);
+      
+  }  
+  
+  public void testStaticAdapter() throws Exception {
+      
+      assertEquals("Hello world", 
+          TestMain.get("http://localhost:8802/hello";).toString());
+      assertEquals("Hello world2", 
+          TestMain.get("http://localhost:8802/2nd";).toString());
+      
+    }
+    
+  public void testRequestParams() throws Exception {
+      // qry string
+      String resStr = 
+          TestMain.get("http://localhost:8903/echo/foo?q=a&b";)
+          .toString();
+      assertTrue(resStr, resStr.indexOf("foo?q=a&b") > 0);
+  }
+
+  
+  public void testRequestChunked() throws Exception {
+      // Chunked encoding
+      String resStr = 
+          TestMain.get("http://localhost:8903/chunked/test";)
+          .toString();
+      assertEquals(8, resStr.length());
+      assertTrue(resStr.indexOf("AAA") >= 0);
+  }
+  
+
+  public void testRequestSlow() throws Exception {
+      // Slow
+      String resStr = 
+          TestMain.get("http://localhost:8903/sleep/1";).toString();
+      assertEquals("sleep 1sleep 1", resStr.toString());
+  }  
+}

Propchange: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/proxy/ProxyTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/proxy/SmallProxyTest.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/proxy/SmallProxyTest.java?rev=884421&view=auto
==============================================================================
--- 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/proxy/SmallProxyTest.java
 (added)
+++ 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/proxy/SmallProxyTest.java
 Thu Nov 26 06:55:49 2009
@@ -0,0 +1,106 @@
+/*
+ */
+package org.apache.tomcat.lite.proxy;
+
+import java.io.IOException;
+
+import junit.framework.TestCase;
+
+import org.apache.tomcat.lite.http.HttpChannel;
+import org.apache.tomcat.lite.http.HttpConnector;
+import org.apache.tomcat.lite.io.MemoryIOConnector;
+import org.apache.tomcat.lite.io.MemoryIOConnector.MemoryIOChannel;
+
+public class SmallProxyTest extends TestCase {
+    
+    MemoryIOConnector memoryServerConnector = 
+        new MemoryIOConnector();
+    
+    MemoryIOConnector memoryClientConnector = 
+        new MemoryIOConnector().withServer(memoryServerConnector);
+
+    
+    HttpConnector httpPool = new HttpConnector(memoryServerConnector) {
+        @Override
+        public HttpChannel get(CharSequence target) throws IOException {
+            throw new IOException();
+        }
+        public HttpChannel getServer() {
+            lastServer = new HttpChannel().serverMode(true);
+            lastServer.withBuffers(net);
+            lastServer.setConnector(this);
+            //lastServer.withIOConnector(memoryServerConnector);
+            return lastServer;
+        }
+    };
+
+    HttpConnector httpClient = new HttpConnector(memoryClientConnector) {
+        @Override
+        public HttpChannel get(CharSequence target) throws IOException {
+            lastClient = new HttpChannel();
+            lastClient.setConnector(this);
+            return lastClient;
+        }
+        public HttpChannel get(String host, int port) throws IOException {
+            lastClient = new HttpChannel();
+            lastClient.setConnector(this);
+            return lastClient;
+        }        
+        public HttpChannel getServer() {
+            throw new RuntimeException();
+        }
+    };
+    
+    HttpChannel lastServer;
+    HttpChannel lastClient;
+
+    boolean hasBody = false;
+    boolean bodyDone = false;
+    boolean bodySentDone = false;
+    boolean headersDone = false;
+    boolean allDone = false;
+    
+    
+    //MemoryIOChannel clientNet = new MemoryIOChannel(); 
+    
+    MemoryIOConnector.MemoryIOChannel net = new MemoryIOChannel();
+    HttpChannel http;
+    
+    public void setUp() throws IOException {
+        http = httpPool.getServer();
+    }
+ 
+    /**
+     * More complicated test..
+     * @throws IOException
+     */
+    public void testProxy() throws IOException {
+        http.setHttpService(new HttpProxyService()
+            .withSelector(memoryClientConnector)
+            .withHttpClient(httpClient));
+
+        http.getNet().getIn().append("GET http://www.cyberluca.com/ 
HTTP/1.0\n" +
+                "Connection: Close\n\n");
+        http.getNet().getIn().close();
+        
+        // lastClient.rawSendBuffers has the request sent by proxy
+        lastClient.getNet().getIn()
+            .append("HTTP/1.0 200 OK\n\nHi\n");
+        lastClient.getNet().getIn()
+            .append("world\n");
+        
+        // TODO: check what the proxy sent
+        // lastClient.getOut();
+    
+        // will also trigger 'release' - both sides are closed. 
+        lastClient.getNet().getIn().close(); 
+        
+        // wait response... 
+        // http.sendBody.close();
+        String res = net.out.toString();
+        assertTrue(res.indexOf("Hi\nworld\n") > 0);
+        assertTrue(res.indexOf("HTTP/1.0 200 OK") == 0);
+        assertTrue(res.indexOf("tomcatproxy") > 0);
+        
+    }    
+}

Propchange: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/proxy/SmallProxyTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/AnnotationTest.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/AnnotationTest.java?rev=884421&view=auto
==============================================================================
--- 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/AnnotationTest.java
 (added)
+++ 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/AnnotationTest.java
 Thu Nov 26 06:55:49 2009
@@ -0,0 +1,54 @@
+/*
+ */
+package org.apache.tomcat.lite.servlet;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+
+import junit.framework.TestCase;
+
+import org.apache.tomcat.servlets.config.ServletContextConfig;
+import org.apache.tomcat.servlets.config.deploy.AnnotationsProcessor;
+
+public class AnnotationTest extends TestCase {
+
+    // TODO: fix the build file to find the target dir
+    // you can run this manually until this happens
+    String eclipseBase = "test-webapp/WEB-INF/classes";
+    
+    public void testScanClasses() throws IOException {
+        ServletContextConfig cfg = new ServletContextConfig();
+        AnnotationsProcessor scanner = new AnnotationsProcessor(cfg);
+//        scanner.processDir(eclipseBase);
+//        
+//        dump(cfg);
+        
+    }
+    
+    public void testScanClass() throws IOException {
+        ServletContextConfig cfg = new ServletContextConfig();
+        AnnotationsProcessor scanner = new AnnotationsProcessor(cfg);
+            
+        String path = eclipseBase + 
"/org/apache/tomcat/lite/Annotated2Servlet.class";
+//        scanner.processClass(new FileInputStream(path), eclipseBase, path);
+//        
+//        dump(cfg);
+        
+    }
+
+    private void dump(ServletContextConfig cfg) {
+//        ObjectMapper jackson = new ObjectMapper();
+//        try {
+//            jackson.configure(SerializationConfig.Feature.INDENT_OUTPUT, 
true);
+//            
jackson.configure(SerializationConfig.Feature.WRITE_NULL_PROPERTIES, 
+//                    false);
+//
+//            ByteArrayOutputStream out = new ByteArrayOutputStream();
+//            jackson.writeValue(out, cfg);
+//            System.err.println(out.toString());
+//        } catch (Throwable t) {
+//            t.printStackTrace();
+//        }
+    }
+    
+}

Propchange: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/AnnotationTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/JspWatchdogTests.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/JspWatchdogTests.java?rev=884421&view=auto
==============================================================================
--- 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/JspWatchdogTests.java
 (added)
+++ 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/JspWatchdogTests.java
 Thu Nov 26 06:55:49 2009
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tomcat.lite.servlet;
+
+
+import org.apache.tomcat.lite.servlet.TomcatLite;
+
+import junit.framework.Test;
+
+public class JspWatchdogTests  extends TomcatLiteWatchdog {
+    
+    public JspWatchdogTests() {
+        super();
+        testMatch = 
+            //"precompileNegativeTest";
+            null;
+        // Test we know are failing - need to fix at some point.
+        exclude = new String[] {
+                "negativeDuplicateExtendsFatalTranslationErrorTest",
+                "negativeDuplicateErrorPageFatalTranslationErrorTest",
+                "negativeDuplicateInfoFatalTranslationErrorTest",
+                "negativeDuplicateLanguageFatalTranslationErrorTest",
+                "negativeDuplicateSessionFatalTranslationErrorTest",
+                "positiveIncludeCtxRelativeHtmlTest",
+                "precompileNegativeTest"
+            }; 
+        file = getWatchdogdir() + "/src/conf/jsp-gtest.xml";
+        goldenDir = 
+            getWatchdogdir() + "/src/clients/org/apache/jcheck/jsp/client/";
+        targetMatch = "jsp-test";
+        
+    }
+    
+    protected void addConnector(TomcatLite lite) {
+        lite.setPort(8019);
+    }
+    
+    public static Test suite() {
+        return new JspWatchdogTests().getSuite(8019);
+    }
+    
+}
+

Propchange: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/JspWatchdogTests.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/LiteTestHelper.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/LiteTestHelper.java?rev=884421&view=auto
==============================================================================
--- 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/LiteTestHelper.java
 (added)
+++ 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/LiteTestHelper.java
 Thu Nov 26 06:55:49 2009
@@ -0,0 +1,117 @@
+/*
+ */
+package org.apache.tomcat.lite.servlet;
+
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.net.URLConnection;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.tomcat.lite.io.BBuffer;
+import org.apache.tomcat.lite.servlet.ServletContextImpl;
+import org.apache.tomcat.lite.servlet.TomcatLite;
+
+public class LiteTestHelper {
+    static TomcatLite lite;
+
+    public static ServletContextImpl addContext(TomcatLite lite) throws 
ServletException {
+        ServletContextImpl ctx = 
+            (ServletContextImpl) lite.addServletContext(null, null, "/test1");
+          
+
+          ctx.add("testException", new HttpServlet() {
+              public void doGet(HttpServletRequest req, HttpServletResponse 
res) 
+                throws IOException {
+                throw new NullPointerException();
+              }
+            });
+            ctx.addMapping("/testException", "testException");
+
+            
+            ctx.add("test", new HttpServlet() {
+                public void doGet(HttpServletRequest req, HttpServletResponse 
res) throws IOException {
+                    res.addHeader("Foo", "Bar");
+                    res.getWriter().write("Hello world");
+                }
+            });
+            
+            ctx.addMapping("/1stTest", "test");
+            
+            
+            return ctx;
+    }
+    
+    public static void startLite() throws IOException, ServletException {
+        if (lite == null) {
+            lite = new TomcatLite();
+
+            LiteTestHelper.addContext(lite);
+            lite.start();
+
+            lite.startConnector();
+        }
+    }
+    
+    public static void initServletsAndRun(TomcatLite lite, int port) throws 
ServletException, IOException {
+        addContext(lite);
+        lite.init();
+        lite.start(); 
+
+
+        if (port > 0) {
+            // This should be added after all local initialization to avoid
+            // the server from responding.
+            // Alternatively, you can load this early but set it to return
+            // 'unavailable' if load balancers depend on this.
+            addConnector(lite, port, true);
+            
+            // At this point we can add contexts and inject requests, if we 
want to 
+            // do it over HTTP need to start the connector as well.
+            lite.startConnector(); 
+        }
+    }
+    
+    public static void addConnector(TomcatLite lite, 
+                                    int port, boolean daemon) { 
+        lite.setPort(port);
+    }
+    
+    /**
+     *  Get url using URLConnection.
+     */
+    public static BBuffer getUrl(String path) throws IOException {
+    
+        BBuffer out = BBuffer.allocate(4096);
+        
+        URL url = new URL(path);
+        URLConnection connection = url.openConnection();
+        connection.setReadTimeout(5000);
+        connection.connect();
+        InputStream is = connection.getInputStream();
+        out.readAll(is);
+        return out;
+    }
+    
+//    static class ByteChunkOutputBuffer implements OutputBuffer {
+//        
+//        protected ByteChunk output = null;
+//    
+//        public ByteChunkOutputBuffer(ByteChunk output) {
+//          this.output = output;
+//        }
+//    
+//        public int doWrite(ByteChunk chunk, Response response) 
+//            throws IOException {
+//          output.append(chunk);
+//          return chunk.getLength();
+//        }
+//    }
+    
+        
+}

Propchange: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/LiteTestHelper.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/PropertiesSpiTest.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/PropertiesSpiTest.java?rev=884421&view=auto
==============================================================================
--- 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/PropertiesSpiTest.java
 (added)
+++ 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/PropertiesSpiTest.java
 Thu Nov 26 06:55:49 2009
@@ -0,0 +1,54 @@
+/*
+ */
+package org.apache.tomcat.lite.servlet;
+
+import java.io.IOException;
+import java.util.Properties;
+
+import junit.framework.TestCase;
+
+import org.apache.tomcat.integration.simple.SimpleObjectManager;
+
+
+public class PropertiesSpiTest extends TestCase {
+
+    SimpleObjectManager spi;
+    
+    public void setUp() {
+        spi = new SimpleObjectManager();
+        
+        spi.getProperties().put("obj1.name", "foo");
+        spi.getProperties().put("obj1.(class)", BoundObj.class.getName());
+        
+    }
+    
+    public void testArgs() throws IOException { 
+        spi = new SimpleObjectManager(new String[] {
+            "-a=1", "-b", "2"});
+        Properties res = spi.getProperties();
+        
+        assertEquals("1", res.get("a"));
+        assertEquals("2", res.get("b"));
+        
+        
+    }
+    
+    public static class BoundObj {
+        String name;
+        
+        public void setName(String n) {
+            this.name = n;
+        }
+    }
+    
+    public void testBind() throws Exception {
+        BoundObj bo = new BoundObj();
+        spi.bind("obj1", bo);
+        assertEquals(bo.name, "foo");        
+    }
+    
+    public void testCreate() throws Exception {
+        BoundObj bo = (BoundObj) spi.get("obj1");
+        assertEquals(bo.name, "foo");
+    }
+}

Propchange: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/PropertiesSpiTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/ServletTests.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/ServletTests.java?rev=884421&view=auto
==============================================================================
--- 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/ServletTests.java
 (added)
+++ 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/ServletTests.java
 Thu Nov 26 06:55:49 2009
@@ -0,0 +1,29 @@
+/*
+ */
+package org.apache.tomcat.lite.servlet;
+
+import org.apache.tomcat.lite.servlet.TomcatLite;
+
+import junit.framework.Test;
+
+public class ServletTests extends TomcatLiteWatchdog {
+    
+    public ServletTests() {
+        super();
+        exclude = new String[] {
+                "ServletToJSPErrorPageTest",
+                "ServletToJSPError502PageTest",
+        };
+    }
+    
+    protected void addConnector(TomcatLite connector) {
+        connector.setPort(7074);    
+    }
+    
+    /** 
+     * Magic JUnit method 
+     */
+    public static Test suite() {
+        return new ServletTests().getSuite(7074);
+    }
+}

Propchange: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/ServletTests.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/TomcatLiteNoConnectorTest.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/TomcatLiteNoConnectorTest.java?rev=884421&view=auto
==============================================================================
--- 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/TomcatLiteNoConnectorTest.java
 (added)
+++ 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/TomcatLiteNoConnectorTest.java
 Thu Nov 26 06:55:49 2009
@@ -0,0 +1,116 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tomcat.lite.servlet;
+
+
+
+import junit.framework.TestCase;
+
+import org.apache.tomcat.lite.http.HttpChannel;
+import org.apache.tomcat.lite.http.HttpConnector;
+import org.apache.tomcat.lite.http.HttpRequest;
+import org.apache.tomcat.lite.http.HttpResponse;
+import org.apache.tomcat.lite.io.BBuffer;
+import org.apache.tomcat.lite.io.MemoryIOConnector;
+import org.apache.tomcat.lite.io.MemoryIOConnector.MemoryIOChannel;
+import org.apache.tomcat.lite.servlet.TomcatLite;
+
+/**
+ * Example of testing servlets without using sockets.
+ * 
+ * @author Costin Manolache
+ */
+public class TomcatLiteNoConnectorTest extends TestCase {
+
+  TomcatLite lite;
+  MemoryIOConnector net;
+  HttpConnector con;
+  
+  public void setUp() throws Exception {
+      net = new MemoryIOConnector();
+      con = new HttpConnector(net);
+      
+      lite = new TomcatLite();
+      lite.setHttpConnector(con);
+      
+      // Load all servlets we need to test
+      LiteTestHelper.initServletsAndRun(lite, 0);
+  }
+  
+  public void tearDown() throws Exception {
+    lite.stop();
+  }
+  
+
+  public void testSimpleRequest() throws Exception {
+      MemoryIOConnector.MemoryIOChannel ch = new MemoryIOChannel();
+      
+      HttpChannel httpCh = con.getServer();
+      httpCh.withBuffers(ch);
+      
+      HttpRequest req = httpCh.getRequest();
+      req.setURI("/test1/1stTest");
+
+      HttpResponse res = httpCh.getResponse();
+      
+      lite.getHttpConnector().getDispatcher().service(req, res, true);
+      // req/res will be recycled
+      
+      // parse out to a response
+      BBuffer out = ch.out;
+      MemoryIOChannel clientCh = new MemoryIOChannel();
+      clientCh.getIn().append(out);
+      
+      HttpChannel client = con.get("localhost", 80);
+      client.withBuffers(clientCh);
+      clientCh.handleReceived(clientCh);
+      
+      
+      HttpResponse cres = client.getResponse();
+      assertEquals(res.getStatus(), 200);
+    
+      BBuffer resBody = BBuffer.allocate(200);
+      cres.getBody().readAll(resBody);
+      assertEquals("Hello world", resBody.toString());
+      assertEquals(cres.getHeader("Foo"), "Bar");
+      assertEquals(cres.getStatus(), 200);
+  }
+  
+//
+//  public void testPostRequest() throws Exception {
+//    ByteChunk out = new ByteChunk();
+//    ServletRequestImpl req = 
+//      LiteTestHelper.createMessage(lite, "/test1/1stTest", out);
+//    req.setMethod("POST");
+//
+//    ServletResponseImpl res = lite.service(req);
+//
+//    assertEquals("Hello post world", out.toString());
+//    // Headers are still in the response
+//    assertEquals(res.getHeader("Foo"), "Post");
+//    assertEquals(res.getStatus(), 200);
+//  }
+//  
+//  public void testException() throws IOException, Exception {
+//    ByteChunk out = new ByteChunk();
+//    ServletRequestImpl req = 
+//        LiteTestHelper.createMessage(lite, "/test1/testException", out);
+//    ServletResponseImpl res = lite.service(req);
+//    assertEquals(res.getStatus(), 500);
+//  }
+  
+}

Propchange: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/TomcatLiteNoConnectorTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/TomcatLiteSimpleTest.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/TomcatLiteSimpleTest.java?rev=884421&view=auto
==============================================================================
--- 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/TomcatLiteSimpleTest.java
 (added)
+++ 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/TomcatLiteSimpleTest.java
 Thu Nov 26 06:55:49 2009
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tomcat.lite.servlet;
+
+import java.io.InputStream;
+import java.net.URL;
+import java.net.URLConnection;
+
+import junit.framework.TestCase;
+
+import org.apache.tomcat.lite.io.IOBuffer;
+
+/** 
+ * TODO: convert to new API
+ * 
+ */
+public class TomcatLiteSimpleTest extends TestCase {
+
+  protected TomcatLite lite = new TomcatLite(); 
+  
+  public void setUp() throws Exception {
+      LiteTestHelper.addContext(lite);
+      
+      lite.init();
+      
+      lite.setPort(8884);
+      lite.start();
+      lite.startConnector();
+  }
+    
+  public void testSimpleRequest() throws Exception {
+      URL url = new URL("http://localhost:8884/test1/1stTest";);
+      URLConnection connection = url.openConnection();
+      InputStream is = connection.getInputStream();
+      String res = new IOBuffer().append(is).readAll(null).toString();
+      assertEquals("Hello world", res);
+  }
+}

Propchange: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/TomcatLiteSimpleTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/TomcatLiteWatchdog.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/TomcatLiteWatchdog.java?rev=884421&view=auto
==============================================================================
--- 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/TomcatLiteWatchdog.java
 (added)
+++ 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/TomcatLiteWatchdog.java
 Thu Nov 26 06:55:49 2009
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tomcat.lite.servlet;
+
+import java.io.File;
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+
+import junit.framework.TestResult;
+
+import org.apache.tomcat.lite.servlet.TomcatLite;
+import org.apache.tomcat.test.watchdog.WatchdogClient;
+
+
+public abstract class TomcatLiteWatchdog extends WatchdogClient {
+  
+  public TomcatLiteWatchdog() {
+      goldenDir = getWatchdogdir() + 
"/src/clients/org/apache/jcheck/servlet/client/";
+      testMatch = 
+          //"HttpServletResponseWrapperSetStatusMsgTest";
+          //"ServletContextAttributeAddedEventTest";
+          null;
+          // ex: "ServletToJSP";
+      file = getWatchdogdir() + "/src/conf/servlet-gtest.xml";
+      targetMatch = "gtestservlet-test";
+  }
+  
+  protected void beforeSuite() {
+      // required for the tests
+      System.setProperty("org.apache.coyote.USE_CUSTOM_STATUS_MSG_IN_HEADER",
+              "true");
+      
+      try {
+          initServerWithWatchdog(getWatchdogdir());
+      } catch (ServletException e) {
+          // TODO Auto-generated catch block
+          e.printStackTrace();
+      } catch (IOException e) {
+          // TODO Auto-generated catch block
+          e.printStackTrace();
+      }
+  }
+  
+  protected abstract void addConnector(TomcatLite liteServer);
+  
+  TomcatLite tomcatForWatchdog;
+  
+  public void initServerWithWatchdog(String wdDir) throws ServletException, 
+          IOException {
+      File f = new File(wdDir + "/build/webapps");
+      
+      tomcatForWatchdog = new TomcatLite();
+
+      addConnector(tomcatForWatchdog);
+//      tomcatForWatchdog.getHttpConnector().setDebug(true);
+//      tomcatForWatchdog.getHttpConnector().setDebugHttp(true);
+      
+      tomcatForWatchdog.addServletContext(null, "webapps/ROOT", 
"/").loadConfig();
+
+      for (String s : new String[] {      
+              "servlet-compat", 
+              "servlet-tests",
+              "jsp-tests"} ) {
+          tomcatForWatchdog.addServletContext(null, f.getCanonicalPath() + "/" 
+ s, 
+                        "/" + s).loadConfig();
+      }
+
+      tomcatForWatchdog.init();
+      tomcatForWatchdog.start();
+
+      tomcatForWatchdog.startConnector();
+  }
+
+  
+  
+  protected void afterSuite(TestResult res) {
+      // no need to stop it - using daemon threads.
+  }
+}

Propchange: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/servlet/TomcatLiteWatchdog.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/test.properties
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/test.properties?rev=884421&view=auto
==============================================================================
--- 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/test.properties 
(added)
+++ 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/test.properties 
Thu Nov 26 06:55:49 2009
@@ -0,0 +1,63 @@
+RUN=Log,JMXProxy,Socks,TomcatLite
+
+Log.(class)=org.apache.tomcat.lite.service.LogConfig
+Log.debug=org.apache.tomcat.lite.http.HttpConnector
+Log.debug=Proxy
+
+JMXProxy.(class)=org.apache.tomcat.lite.service.JMXProxy
+JMXProxy.port=8003
+
+Socks.(class)=org.apache.tomcat.lite.proxy.SocksServer
+Socks.port=2080
+Socks.idleTimeout=0
+
+#HttpConnector-TestServer.debug=true
+#HttpConnector-TestServer.debugHttp=true
+xHttpConnector-TestServer.clientKeepAlive=true
+xHttpConnector-TestServer.serverKeepAlive=true
+xHttpConnector-TestServer.maxHttpPoolSize=0
+
+#HttpConnector.debug=true
+#HttpConnector.debugHttp=true
+xHttpConnector.clientKeepAlive=true
+xHttpConnector.serverKeepAlive=true
+xHttpConnector.maxHttpPoolSize=0
+
+#HttpConnector-Proxy.debug=true
+#HttpConnector-Proxy.debugHttp=true
+xHttpConnector-Proxy.clientKeepAlive=true
+xHttpConnector-Proxy.serverKeepAlive=true
+xHttpConnector-Proxy.maxHttpPoolSize=0
+
+
+#IOConnector.debug=true
+
+# Tomcat-lite config
+# include:
+# config=org/apache/tomcat/lite/config.properties
+TomcatLite.(class)=org.apache.tomcat.lite.servlet.TomcatLite
+# 
TomcatLite.deployListener=org.apache.tomcat.servlets.config.deploy.WebXmlContextListener
+
+# Tomcat-lite plugins
+org.apache.tomcat.lite.WebappServletMapper.(class)=org.apache.tomcat.lite.WebappServletMapper
+org.apache.tomcat.lite.WebappFilterMapper.(class)=org.apache.tomcat.lite.WebappFilterMapper
+org.apache.tomcat.servlets.session.UserSessionManager.(class)=org.apache.tomcat.servlets.session.SimpleSessionManager
+org.apache.tomcat.servlets.jsp.UserTemplateClassMapper.(class)=org.apache.tomcat.servlets.jsp.JasperCompilerTemplateClassMapper
+org.apache.tomcat.servlets.file.Filesystem.(class)=org.apache.tomcat.file.LocalFilesystem
+default-servlet.(class)=org.apache.tomcat.servlets.file.WebdavServlet
+jspwildcard-servlet.(class)=org.apache.tomcat.servlets.jsp.WildcardTemplateServlet
+filetemplate-servlet.(class)=org.apache.tomcat.servlets.jsp.JspFileTemplateServlet
+
+org.apache.tomcat.lite.Connector.(class)=org.apache.tomcat.lite.AsyncConnector
+org.apache.tomcat.lite.Connector.port=8800
+
+
+
+TomcatLite.context.1=/examples:./webapps/examples
+TomcatLite.context.2=/:./webapps/ROOT
+TomcatLite.context.3=/lite:./modules/tomcat-lite/test-webapp
+// No base dir
+TomcatLite.context.4=/dynamic:
+
+
+JMXProxyServlet.(class)=org.apache.tomcat.integration.jmx.JMXProxyServlet

Propchange: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/lite/test.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/test/watchdog/WatchdogClient.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/test/watchdog/WatchdogClient.java?rev=884421&r1=884420&r2=884421&view=diff
==============================================================================
--- 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/test/watchdog/WatchdogClient.java
 (original)
+++ 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/test/watchdog/WatchdogClient.java
 Thu Nov 26 06:55:49 2009
@@ -16,6 +16,7 @@
  */
 package org.apache.tomcat.test.watchdog;
 
+import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.util.Properties;
@@ -26,15 +27,13 @@
 import junit.framework.TestResult;
 import junit.framework.TestSuite;
 
-import org.apache.tomcat.util.DomUtil;
+import org.apache.tomcat.servlets.config.deploy.DomUtil;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.NodeList;
 import org.xml.sax.SAXException;
 
 public class WatchdogClient {
-
-  protected String base = "../watchdog";
         
   protected String goldenDir; 
   protected String testMatch;
@@ -51,11 +50,13 @@
   Properties props = new Properties();
   
   protected void beforeSuite() {
-      
   }
   
   protected void afterSuite(TestResult res) {
-      
+  }
+  
+  public Test getSuite() {
+      return getSuite(8080);
   }
   
   /** 
@@ -66,11 +67,11 @@
    * @param testMatch Prefix of tests to be run
    * @return
    */
-  public Test getSuite() {
+  public Test getSuite(int port) {
     TestSuite tests = new WatchdogTests();
     tests.setName(this.getClass().getSimpleName());
     
-    props.setProperty("port", "8080");
+    props.setProperty("port", Integer.toString(port));
     props.setProperty("host", "localhost");
     props.setProperty("wgdir", 
         goldenDir);
@@ -112,22 +113,16 @@
               }
           }
           testName = testName + ";" + this.getClass().getName();
-          WatchdogTest test = new WatchdogTest(watchE, props, testName);
+          WatchdogTestCase test = new WatchdogTestCase(watchE, props, 
testName);
           tests.addTest(test);
         }
-        
-        //        if (targetSuite.countTestCases() > 0) { 
-        //          tests.addTest(targetSuite);
-        //              }
       }
       
     } catch (IOException e) {
-      e.printStackTrace();
+        e.printStackTrace();
     } catch (SAXException e) {
-        // TODO Auto-generated catch block
         e.printStackTrace();
     } catch (ParserConfigurationException e) {
-        // TODO Auto-generated catch block
         e.printStackTrace();
     }
     return tests;
@@ -135,6 +130,22 @@
   
   // --------- Inner classes -------------
 
+  protected String getWatchdogdir() {
+      String path = System.getProperty("watchdog.home");
+      if (path != null) {
+          return path;
+      }
+      path = "..";
+      for (int i = 0; i < 10; i++) {
+          File f = new File(path + "/watchdog");
+          if (f.exists()) {
+              return f.getAbsolutePath();
+          }
+          path = path + "/..";
+      }
+      return null;
+  }
+
   public class WatchdogTests extends TestSuite {
       public void run(TestResult res) {
           beforeSuite();
@@ -142,5 +153,5 @@
           afterSuite(res);
       }
   }
-  
+
 }

Modified: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/test/watchdog/WatchdogHttpClient.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/test/watchdog/WatchdogHttpClient.java?rev=884421&r1=884420&r2=884421&view=diff
==============================================================================
--- 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/test/watchdog/WatchdogHttpClient.java
 (original)
+++ 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/test/watchdog/WatchdogHttpClient.java
 Thu Nov 26 06:55:49 2009
@@ -37,7 +37,7 @@
     
     static int debug = 0;
     
-    public static void dispatch(GTest client) throws Exception {
+    public static void dispatch(WatchdogTestImpl client) throws Exception {
         HashMap requestHeaders = client.requestHeaders;
         String host = client.host;
         int port = client.port;
@@ -45,7 +45,14 @@
         String request = client.request;
         
         // XXX headers are ignored
-        Socket socket = new Socket( host, port );
+        Socket socket;
+        try {
+            socket = new Socket( host, port );
+        } catch (IOException ex) {
+            System.out.println( " Socket Exception: " + ex );
+            return;
+        }
+        //socket.setSoTimeout(10000);
         
         //socket obtained, rebuild the request.
         rebuildRequest(client, client.request, socket);
@@ -57,7 +64,7 @@
 
         OutputStream out = new BufferedOutputStream( 
                                socket.getOutputStream() );
-        StringBuilder reqbuf = new StringBuilder( 128 );
+        StringBuffer reqbuf = new StringBuffer( 128 );
 
         // set the Host header
         client.setHeaderDetails( "Host:" + host + ":" + port, requestHeaders, 
true );
@@ -92,7 +99,7 @@
             Iterator iter = requestHeaders.keySet().iterator();
                         
             while ( iter.hasNext() ) {
-                StringBuilder tmpBuf = new StringBuilder(32);
+                StringBuffer tmpBuf = new StringBuffer(32);
                 String headerKey = ( String ) iter.next();
                         ArrayList values = (ArrayList) requestHeaders.get( 
headerKey );
                         String[] value = (String[]) values.toArray( new 
String[ values.size() ] );
@@ -168,7 +175,6 @@
                 
         } catch ( SocketException ex ) {
             System.out.println( " Socket Exception: " + ex );
-            ex.printStackTrace();
         } finally {
                 if ( debug > 0 ) {
                         System.out.println( " closing socket" );
@@ -187,7 +193,7 @@
      * @return a <code>byte[]</code> representation of the response
      */
     private static byte[] readBody( InputStream input ) {
-        StringBuilder sb = new StringBuilder( 255 );
+        StringBuffer sb = new StringBuffer( 255 );
         while ( true ) {
             try {
                 int ch = input.read();
@@ -222,7 +228,7 @@
      */
     private static String read( InputStream input ) throws IOException {
         // Read the next line from the input stream
-        StringBuilder sb = new StringBuilder();
+        StringBuffer sb = new StringBuffer();
 
         while ( true ) {
             try {
@@ -265,7 +271,7 @@
      *
      * @exception IOException if an input/output error occurs
      */
-    private static HashMap parseHeaders( GTest client, InputStream is ) throws 
IOException {
+    private static HashMap parseHeaders( WatchdogTestImpl client, InputStream 
is ) throws IOException {
         HashMap headers = new HashMap();
         client.cookieVector = new Vector();
 
@@ -307,7 +313,7 @@
      *
      * @exception Exception if an error occurs
      */
-    private static void rebuildRequest(GTest client, String req, Socket 
socket) throws Exception {
+    private static void rebuildRequest(WatchdogTestImpl client, String req, 
Socket socket) throws Exception {
         client.request = client.replaceMarkers(req, socket );
         String addressString = client.request.substring( 
client.request.indexOf( "/" ), client.request.indexOf( "HTTP" ) ).trim();
 

Added: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/test/watchdog/WatchdogTestCase.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/test/watchdog/WatchdogTestCase.java?rev=884421&view=auto
==============================================================================
--- 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/test/watchdog/WatchdogTestCase.java
 (added)
+++ 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/test/watchdog/WatchdogTestCase.java
 Thu Nov 26 06:55:49 2009
@@ -0,0 +1,117 @@
+/*
+ */
+package org.apache.tomcat.test.watchdog;
+
+import java.util.Properties;
+
+import junit.framework.AssertionFailedError;
+import junit.framework.Test;
+import junit.framework.TestResult;
+import junit.framework.TestSuite;
+
+import org.apache.tomcat.integration.DynamicObject;
+import org.apache.tomcat.integration.simple.AntProperties;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+
+public class WatchdogTestCase implements Test {
+    String testName;
+
+    Element watchE;
+
+    private Properties props;
+
+    private WatchdogTestCase delegate;
+    private WatchdogClient wc;
+    
+    public WatchdogTestCase(String s) throws Throwable {
+        String[] comp = s.split(";");
+        if (comp.length < 2) {
+            return;
+        }
+        Class c = Class.forName(comp[1]);
+        wc = (WatchdogClient) c.newInstance();
+        TestSuite suite = (TestSuite) wc.getSuite();
+        // need to encode the base, file, etc in the test name
+
+        System.err.println(s);
+
+        for (int i = 0; i < suite.testCount(); i++) {
+            WatchdogTestCase t = (WatchdogTestCase) suite.testAt(i);
+            if (s.equals(t.getName())) {
+                delegate = t;
+                return;
+            }
+        }
+    }
+
+    public WatchdogTestCase(Element watchE, Properties props, String testName) 
{
+        this.testName = testName;
+        this.watchE = watchE;
+        this.props = props;
+    }
+
+    public int countTestCases() {
+        return 1;
+    }
+
+    public String getName() {
+        return testName;
+    }
+
+    public void testDummy() {
+    }
+    
+    public void run(TestResult res) {
+        if (delegate != null) {
+            // Single method run
+            wc.beforeSuite();
+            delegate.run(res);
+            wc.afterSuite(res);
+            return;
+        }
+        if (watchE == null) {
+            res.endTest(this);
+            return;
+        }
+        WatchdogTestImpl test = new WatchdogTestImpl();
+        NamedNodeMap attrs = watchE.getAttributes();
+
+        for (int i = 0; i < attrs.getLength(); i++) {
+            Node n = attrs.item(i);
+            String name = n.getNodeName();
+            String value = n.getNodeValue();
+            value = AntProperties.replaceProperties(value, props, null);
+            try {
+                new DynamicObject(test.getClass()).setProperty(test, 
+                        name, value);
+            } catch (Exception e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            }
+        }
+
+        try {
+            res.startTest(this);
+            new DynamicObject(test.getClass()).invoke(test, "execute");
+        } catch (Throwable e) {
+            res.addError(this, e);
+            // res.stop();
+        }
+
+        if (test.passCount == 1) {
+            res.endTest(this);
+            return;
+        } else {
+            if (test.lastError == null) {
+                res.addFailure(this, new AssertionFailedError(test.request
+                        + " " + test.description + "\n" + test.resultOut));
+            } else {
+                res.addError(this, test.lastError);
+            }
+        }
+        res.endTest(this);
+    }
+
+}

Propchange: 
tomcat/trunk/modules/tomcat-lite/test/org/apache/tomcat/test/watchdog/WatchdogTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to