Author: markt
Date: Thu Jul 22 12:18:59 2010
New Revision: 966613

URL: http://svn.apache.org/viewvc?rev=966613&view=rev
Log:
Run all unit tests will all connectors

Modified:
    tomcat/trunk/build.xml
    tomcat/trunk/test/org/apache/catalina/startup/TestTomcatSSL.java
    tomcat/trunk/test/org/apache/catalina/startup/TomcatBaseTest.java
    tomcat/trunk/webapps/docs/changelog.xml

Modified: tomcat/trunk/build.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/build.xml?rev=966613&r1=966612&r2=966613&view=diff
==============================================================================
--- tomcat/trunk/build.xml (original)
+++ tomcat/trunk/build.xml Thu Jul 22 12:18:59 2010
@@ -928,39 +928,72 @@
   </target>
 
   <target name="test" description="Runs the JUnit test cases"
-    depends="test-compile,deploy" >
+          depends="test-bio,test-nio,test-apr" >
+  </target>
+  
+  <target name="test-bio" description="Runs the JUnit test cases for BIO"
+          depends="test-compile,deploy" >
+    <runtests protocol="org.apache.coyote.http11.Http11Protocol"
+              extension=".BIO.txt" />
+  </target>
+  
+  <target name="test-nio" description="Runs the JUnit test cases for NIO"
+          depends="test-compile,deploy" >
+    <runtests protocol="org.apache.coyote.http11.Http11NioProtocol"
+              extension=".NIO.txt" />
+  </target>
+  
+  <target name="test-apr" description="Runs the JUnit test cases for APR"
+          depends="test-compile,deploy,test-apr-exists"
+             if="${apr.exists}">
+    <runtests protocol="org.apache.coyote.http11.Http11AprProtocol"
+              extension=".APR.txt" />
+  </target>
+  
+  <target name="test-apr-exists" description="Checks for APR lib">
+    <available file="${tomcat.build}/bin/native" property="apr.exists" />
+  </target>
+
+  <macrodef name="runtests"
+            description="Runs the unit tests using the specified connector" >
+    <attribute name="protocol"
+               description="The class name for the connector protocol"/>
+    <attribute name="extension"
+               description="The extension to use to distinguish the output"/>
 
-    <junit printsummary="yes" fork="yes" dir="." showoutput="yes">
+    <sequential>
+      <junit printsummary="yes" fork="yes" dir="." showoutput="yes">
 
-      <jvmarg value="-Dsun.security.ssl.allowUnsafeRenegotiation=true" />
-      <jvmarg value="-Djava.library.path=${tomcat.build}/bin/native"/>
+        <jvmarg value="-Djava.library.path=${tomcat.build}/bin/native"/>
 
-      <classpath refid="tomcat.test.classpath" />
+        <classpath refid="tomcat.test.classpath" />
 
-      <sysproperty key="tomcat.test.temp" value="${test.temp}" />
-      <sysproperty key="tomcat.test.tomcatbuild" value="${tomcat.build}" />
-
-      <formatter type="plain" usefile="true" />
-
-      <!-- If test.entry is defined, run a single test, otherwise run all 
valid tests -->
-      <test todir="${tomcat.build}/logs" name="${test.entry}" if="test.entry"/>
-      <batchtest todir="${tomcat.build}/logs" unless="test.entry"
-        errorproperty="test.result.error" 
failureproperty="test.result.failure" 
-        >
-        <fileset dir="test" >
-          <!-- Include all by default -->
-          <include name="**/Test*.java" />
-          <!-- Exclude helper classes -->
-          <exclude name="**/Tester*.java" />
-          <!-- Exclude the tests known to fail -->
-          <exclude name="org/apache/catalina/tribes/**" />
-        </fileset>
-      </batchtest>
-    </junit>
+        <sysproperty key="tomcat.test.temp" value="${test.temp}" />
+        <sysproperty key="tomcat.test.tomcatbuild" value="${tomcat.build}" />
+        <sysproperty key="tomcat.test.protocol" value="@{protocol}" />
+
+        <formatter type="plain" usefile="true" extension="@{extension}"/>
+
+        <!-- If test.entry is defined, run a single test, otherwise run all 
valid tests -->
+        <test todir="${tomcat.build}/logs" name="${test.entry}" 
if="test.entry"/>
+        <batchtest todir="${tomcat.build}/logs" unless="test.entry"
+          errorproperty="test.result.error" 
failureproperty="test.result.failure" 
+          >
+          <fileset dir="test" >
+            <!-- Include all by default -->
+            <include name="**/Test*.java" />
+            <!-- Exclude helper classes -->
+            <exclude name="**/Tester*.java" />
+            <!-- Exclude the tests known to fail -->
+            <exclude name="org/apache/catalina/tribes/**" />
+          </fileset>
+        </batchtest>
+      </junit>
 
-    <fail if="test.result.error" message="Some tests completed with an Error. 
See ${tomcat.build}/logs for details." />
-    <fail if="test.result.failure" message="Some tests completed with a 
Failure. See ${tomcat.build}/logs for details." />
-  </target>
+      <fail if="test.result.error" message="Some tests completed with an 
Error. See ${tomcat.build}/logs for details." />
+      <fail if="test.result.failure" message="Some tests completed with a 
Failure. See ${tomcat.build}/logs for details." />
+    </sequential>
+  </macrodef>
 
   <target name="extras-prepare" >
     <mkdir dir="${tomcat.extras}"/>

Modified: tomcat/trunk/test/org/apache/catalina/startup/TestTomcatSSL.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/startup/TestTomcatSSL.java?rev=966613&r1=966612&r2=966613&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/startup/TestTomcatSSL.java (original)
+++ tomcat/trunk/test/org/apache/catalina/startup/TestTomcatSSL.java Thu Jul 22 
12:18:59 2010
@@ -30,7 +30,6 @@ import javax.net.ssl.SSLSocketFactory;
 import javax.net.ssl.TrustManager;
 import javax.net.ssl.X509TrustManager;
 
-import org.apache.catalina.connector.Connector;
 import org.apache.tomcat.util.buf.ByteChunk;
 
 /**
@@ -56,15 +55,7 @@ public class TestTomcatSSL extends Tomca
         }
     };
 
-    private void initSsl(Tomcat tomcat, boolean nio) {
-        if (nio) {
-            Connector connector = 
-                new Connector("org.apache.coyote.http11.Http11NioProtocol");
-            connector.setPort(getPort());
-            tomcat.getService().addConnector(connector);
-            tomcat.setConnector(connector);
-            tomcat.getConnector().setProperty("sslProtocol", "tls");
-        }
+    private void initSsl(Tomcat tomcat) {
         String protocol = tomcat.getConnector().getProtocolHandlerClassName();
         if (protocol.indexOf("Apr") == -1) {
             tomcat.getConnector().setProperty("sslProtocol", "tls");
@@ -88,14 +79,6 @@ public class TestTomcatSSL extends Tomca
     }
     
     public void testSimpleSsl() throws Exception {
-        simpleSsl(false);
-    }
-    
-    public void testSimpleSslNio() throws Exception {
-        simpleSsl(true);
-    }
-    
-    public void simpleSsl(boolean nio) throws Exception {
         // Install the all-trusting trust manager so https:// works 
         // with unsigned certs. 
 
@@ -113,7 +96,7 @@ public class TestTomcatSSL extends Tomca
         File appDir = new File(getBuildDirectory(), "webapps/examples");
         tomcat.addWebapp(null, "/examples", appDir.getAbsolutePath());
         
-        initSsl(tomcat, nio);
+        initSsl(tomcat);
 
         tomcat.start();
         ByteChunk res = getUrl("https://localhost:"; + getPort() +
@@ -124,19 +107,16 @@ public class TestTomcatSSL extends Tomca
     boolean handshakeDone = false;
     
     public void testRenegotiateFail() throws Exception {
-        renegotiateFail(false);
-    }
-    
-    public void renegotiateFail(boolean nio) throws Exception {
         Tomcat tomcat = getTomcatInstance();
 
         File appDir = new File(getBuildDirectory(), "webapps/examples");
         // app dir is relative to server home
         tomcat.addWebapp(null, "/examples", appDir.getAbsolutePath());
 
-        initSsl(tomcat, nio);
-        // Default - MITM not enabled
+        initSsl(tomcat);
 
+        // Default - MITM attack prevented
+        
         tomcat.start();
         SSLContext sslCtx = SSLContext.getInstance("TLS");
         sslCtx.init(null, trustAllCerts, new java.security.SecureRandom());
@@ -191,36 +171,22 @@ public class TestTomcatSSL extends Tomca
     }
     
     public void testRenegotiateWorks() throws Exception {
-        renegotiateWorks(false);
-    }
-    
-    
-    // Re-negotiation not implemented in NIO
-    //    public void testRenegotiateWorksNio() throws Exception {
-    //        renegotiateWorks(true);    
-    //    }
-
-    public void testRenegotiateFailNio() throws Exception {
-        renegotiateFail(true);        
-    }
-    
-    
-    public void renegotiateWorks(boolean nio) throws Exception {
         Tomcat tomcat = getTomcatInstance();
 
         File appDir = new File(getBuildDirectory(), "webapps/examples");
         // app dir is relative to server home
         tomcat.addWebapp(null, "/examples", appDir.getAbsolutePath());
 
-        initSsl(tomcat, nio);
+        initSsl(tomcat);
+        
         // Enable MITM attack
         tomcat.getConnector().setAttribute("allowUnsafeLegacyRenegotiation", 
"true");
 
         tomcat.start();
 
         String protocol = tomcat.getConnector().getProtocolHandlerClassName();
-        if (protocol.indexOf("Apr") != -1) {
-            return; // Not supported yet (10/05/25)
+        if (protocol.indexOf("Nio") != -1) {
+            return; // Not supported yet (2010-07-22)
         }
 
         SSLContext sslCtx = SSLContext.getInstance("TLS");
@@ -265,4 +231,11 @@ public class TestTomcatSSL extends Tomca
         }
         
     }
+
+    @Override
+    public void setUp() throws Exception {
+        // Make sure SSL renegotiation is not disabled in the JVM
+        System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", 
"true");
+        super.setUp();
+    }
 }

Modified: tomcat/trunk/test/org/apache/catalina/startup/TomcatBaseTest.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/startup/TomcatBaseTest.java?rev=966613&r1=966612&r2=966613&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/startup/TomcatBaseTest.java (original)
+++ tomcat/trunk/test/org/apache/catalina/startup/TomcatBaseTest.java Thu Jul 
22 12:18:59 2010
@@ -32,6 +32,7 @@ import javax.servlet.http.HttpServletReq
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.LifecycleState;
+import org.apache.catalina.connector.Connector;
 import org.apache.catalina.core.StandardServer;
 import org.apache.catalina.core.AprLifecycleListener;
 
@@ -109,17 +110,30 @@ public abstract class TomcatBaseTest ext
         
         tomcat = new Tomcat();
 
-        // Add AprLifecycleListener
-        StandardServer server = (StandardServer) tomcat.getServer();
-        AprLifecycleListener listener = new AprLifecycleListener();
-        server.addLifecycleListener(listener);
+        // Has a protocol been specified
+        String protocol = System.getProperty("tomcat.test.protocol");
         
-        tomcat.setBaseDir(tempDir.getAbsolutePath());
-        tomcat.getHost().setAppBase(appBase.getAbsolutePath());
-          
+        // Use BIO by default
+        if (protocol == null) {
+            protocol = "org.apache.coyote.http11.Http11Protocol";
+        }
+
+        Connector connector = new Connector(protocol);
         // If each test is running on same port - they
         // may interfere with each other (on unix at least)
-        tomcat.setPort(getNextPort());
+        connector.setPort(getNextPort());
+        tomcat.getService().addConnector(connector);
+        tomcat.setConnector(connector);
+
+        // Add AprLifecycleListener if we are using the Apr connector
+        if (protocol.contains("Apr")) {
+            StandardServer server = (StandardServer) tomcat.getServer();
+            AprLifecycleListener listener = new AprLifecycleListener();
+            server.addLifecycleListener(listener);
+        }
+        
+        tomcat.setBaseDir(tempDir.getAbsolutePath());
+        tomcat.getHost().setAppBase(appBase.getAbsolutePath());
     }
     
     @Override

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=966613&r1=966612&r2=966613&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Thu Jul 22 12:18:59 2010
@@ -285,6 +285,10 @@
         installer, making it clear that the service will be installed. Patch
         provided by sebb. (markt)
       </fix>
+      <add>
+        Re-factor unit tests to enable them to be run once with each of the 
HTTP
+        connector implementations (BIO, NIO and APR/native). (markt)
+      </add>
     </changelog>
   </subsection>
 </section>



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

Reply via email to