You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2018/07/31 21:16:28 UTC

svn commit: r1837176 - in /tomcat/trunk/test/org/apache/tomcat/util/net: TestClientCert.java TesterSupport.java

Author: markt
Date: Tue Jul 31 21:16:28 2018
New Revision: 1837176

URL: http://svn.apache.org/viewvc?rev=1837176&view=rev
Log:
Make tests more robust and not dependent on order of individual test execution.

Modified:
    tomcat/trunk/test/org/apache/tomcat/util/net/TestClientCert.java
    tomcat/trunk/test/org/apache/tomcat/util/net/TesterSupport.java

Modified: tomcat/trunk/test/org/apache/tomcat/util/net/TestClientCert.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/util/net/TestClientCert.java?rev=1837176&r1=1837175&r2=1837176&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/tomcat/util/net/TestClientCert.java (original)
+++ tomcat/trunk/test/org/apache/tomcat/util/net/TestClientCert.java Tue Jul 31 21:16:28 2018
@@ -59,23 +59,24 @@ public class TestClientCert extends Tomc
         getTomcatInstance().start();
 
         // Unprotected resource
-        ByteChunk res =
-                getUrl("https://localhost:" + getPort() + "/unprotected");
+        ByteChunk res = getUrl("https://localhost:" + getPort() + "/unprotected");
 
+        int count = TesterSupport.getLastClientAuthRequestedIssuerCount();
         if (log.isDebugEnabled()) {
-            int count = TesterSupport.getLastClientAuthRequestedIssuerCount();
             log.debug("Last client KeyManager usage: " + TesterSupport.getLastClientAuthKeyManagerUsage() +
                       ", " + count + " requested Issuers, first one: " +
                       (count > 0 ? TesterSupport.getLastClientAuthRequestedIssuer(0).getName() : "NONE"));
-            log.debug("Expected requested Issuer: " + TesterSupport.getClientAuthExpectedIssuer());
+            log.debug("Expected requested Issuer: " +
+                      (preemptive ? TesterSupport.getClientAuthExpectedIssuer() : "NONE"));
         }
-        Assert.assertTrue("Checking requested client issuer against " +
-                TesterSupport.getClientAuthExpectedIssuer(),
-                TesterSupport.checkLastClientAuthRequestedIssuers());
 
         if (preemptive) {
+            Assert.assertTrue("Checking requested client issuer against " +
+                    TesterSupport.getClientAuthExpectedIssuer(),
+                    TesterSupport.checkLastClientAuthRequestedIssuers());
             Assert.assertEquals("OK-" + TesterSupport.ROLE, res.toString());
         } else {
+            Assert.assertEquals(0, count);
             Assert.assertEquals("OK", res.toString());
         }
 
@@ -83,7 +84,7 @@ public class TestClientCert extends Tomc
         res = getUrl("https://localhost:" + getPort() + "/protected");
 
         if (log.isDebugEnabled()) {
-            int count = TesterSupport.getLastClientAuthRequestedIssuerCount();
+            count = TesterSupport.getLastClientAuthRequestedIssuerCount();
             log.debug("Last client KeyManager usage: " + TesterSupport.getLastClientAuthKeyManagerUsage() +
                       ", " + count + " requested Issuers, first one: " +
                       (count > 0 ? TesterSupport.getLastClientAuthRequestedIssuer(0).getName() : "NONE"));
@@ -128,41 +129,42 @@ public class TestClientCert extends Tomc
         Arrays.fill(body, TesterSupport.DATA);
 
         // Unprotected resource
-        ByteChunk res = postUrl(body,
-                "https://localhost:" + getPort() + "/unprotected");
+        ByteChunk res = postUrl(body, "https://localhost:" + getPort() + "/unprotected");
 
+        int count = TesterSupport.getLastClientAuthRequestedIssuerCount();
         if (log.isDebugEnabled()) {
-            int count = TesterSupport.getLastClientAuthRequestedIssuerCount();
             log.debug("Last client KeyManager usage: " + TesterSupport.getLastClientAuthKeyManagerUsage() +
                       ", " + count + " requested Issuers, first one: " +
                       (count > 0 ? TesterSupport.getLastClientAuthRequestedIssuer(0).getName() : "NONE"));
-            log.debug("Expected requested Issuer: " + TesterSupport.getClientAuthExpectedIssuer());
+            log.debug("Expected requested Issuer: NONE");
         }
-        Assert.assertTrue("Checking requested client issuer against " +
-                TesterSupport.getClientAuthExpectedIssuer(),
-                TesterSupport.checkLastClientAuthRequestedIssuers());
 
+        // Unprotected resource with no preemptive authentication
+        Assert.assertEquals(0, count);
+        // No authentication no need to buffer POST body during TLS handshake so
+        // no possibility of hitting buffer limit
         Assert.assertEquals("OK-" + bodySize, res.toString());
 
         // Protected resource
         res.recycle();
-        int rc = postUrl(body, "https://localhost:" + getPort() + "/protected",
-                res, null);
+        int rc = postUrl(body, "https://localhost:" + getPort() + "/protected", res, null);
 
+        count = TesterSupport.getLastClientAuthRequestedIssuerCount();
         if (log.isDebugEnabled()) {
-            int count = TesterSupport.getLastClientAuthRequestedIssuerCount();
             log.debug("Last client KeyManager usage: " + TesterSupport.getLastClientAuthKeyManagerUsage() +
                       ", " + count + " requested Issuers, first one: " +
                       (count > 0 ? TesterSupport.getLastClientAuthRequestedIssuer(0).getName() : "NONE"));
             log.debug("Expected requested Issuer: " + TesterSupport.getClientAuthExpectedIssuer());
         }
-        Assert.assertTrue("Checking requested client issuer against " +
-                TesterSupport.getClientAuthExpectedIssuer(),
-                TesterSupport.checkLastClientAuthRequestedIssuers());
 
         if (expectProtectedFail) {
             Assert.assertEquals(401, rc);
+            // POST body buffer fails so TLS handshake never happens
+            Assert.assertEquals(0, count);
         } else {
+            Assert.assertTrue("Checking requested client issuer against " +
+                    TesterSupport.getClientAuthExpectedIssuer(),
+                    TesterSupport.checkLastClientAuthRequestedIssuers());
             Assert.assertEquals("OK-" + bodySize, res.toString());
         }
     }

Modified: tomcat/trunk/test/org/apache/tomcat/util/net/TesterSupport.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/util/net/TesterSupport.java?rev=1837176&r1=1837175&r2=1837176&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/tomcat/util/net/TesterSupport.java (original)
+++ tomcat/trunk/test/org/apache/tomcat/util/net/TesterSupport.java Tue Jul 31 21:16:28 2018
@@ -75,7 +75,7 @@ public final class TesterSupport {
 
     public static final String ROLE = "testrole";
 
-    private static String clientAuthExpectedIssuer = null;
+    private static String clientAuthExpectedIssuer;
     private static String lastUsage = "NONE";
     private static Principal[] lastRequestedIssuers = new Principal[0];
 
@@ -275,6 +275,10 @@ public final class TesterSupport {
         lc.setAuthMethod("CLIENT-CERT");
         ctx.setLoginConfig(lc);
         ctx.getPipeline().addValve(new SSLAuthenticator());
+
+        // Clear the tracking data
+        lastUsage = "NONE";
+        lastRequestedIssuers = new Principal[0];
     }
 
     protected static String getClientAuthExpectedIssuer() {



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