]> WPIA git - gigi.git/commitdiff
upd: greatly improve speed at all cert-generating test cases
authorFelix Dörre <felix@dogcraft.de>
Sat, 2 Jul 2016 17:43:04 +0000 (19:43 +0200)
committerFelix Dörre <felix@dogcraft.de>
Sat, 2 Jul 2016 17:43:04 +0000 (19:43 +0200)
Change-Id: Ie3ae565f6b0236aba4e9dc4ad4939b7a82407c57

config/test.properties.template
tests/org/cacert/gigi/TestCertificate.java
tests/org/cacert/gigi/TestCrossDomainAccess.java
tests/org/cacert/gigi/TestSeparateSessionScope.java
tests/org/cacert/gigi/api/ImportCATSResult.java
tests/org/cacert/gigi/api/IssueCert.java
tests/org/cacert/gigi/ping/TestSSL.java
tests/org/cacert/gigi/testUtils/ManagedTest.java
util-testing/org/cacert/gigi/util/SimpleSigner.java

index f18f895b3866d78ea678e4836b76fc71a9c6c6eb..b39f07b79569532b081fc1d90f38a7a46c44d4de 100644 (file)
@@ -2,6 +2,7 @@ type=local
 serverPort.https=443
 serverPort.http=80
 mail=localhost:8474
+#withSigner=false
 
 # ==== OR ===
 type=autonomous
index dd14e8d3c28c722e5c64d94d6f9c48b14e6a03be..b12d3a9e5ff24a3cce7134835ad5847ca75d31b3 100644 (file)
@@ -36,7 +36,7 @@ public class TestCertificate extends ManagedTest {
         String key1 = generatePEMCSR(kp, "CN=testmail@example.com");
         Certificate c = new Certificate(u, u, Certificate.buildDN("CN", "testmail@example.com"), Digest.SHA256, key1, CSRType.CSR, CertificateProfile.getById(1));
         final PrivateKey pk = kp.getPrivate();
-        c.issue(null, "2y", u).waitFor(60000);
+        await(c.issue(null, "2y", u));
         final X509Certificate ce = c.cert();
         assertNotNull(login(pk, ce));
     }
@@ -49,7 +49,7 @@ public class TestCertificate extends ManagedTest {
                 new SubjectAlternateName(SANType.EMAIL, "testmail@example.com"), new SubjectAlternateName(SANType.DNS, "testmail.example.com"));
 
         testFails(CertificateStatus.DRAFT, c);
-        c.issue(null, "2y", u).waitFor(60000);
+        await(c.issue(null, "2y", u));
         X509Certificate cert = c.cert();
         Collection<List<?>> sans = cert.getSubjectAlternativeNames();
         assertEquals(2, sans.size());
@@ -101,7 +101,7 @@ public class TestCertificate extends ManagedTest {
         final PrivateKey pk = kp.getPrivate();
 
         testFails(CertificateStatus.DRAFT, c);
-        c.issue(null, "2y", u).waitFor(60000);
+        await(c.issue(null, "2y", u));
 
         String cookie = login(u.getEmail(), TEST_PASSWORD);
         testFails(CertificateStatus.ISSUED, c);
@@ -109,7 +109,7 @@ public class TestCertificate extends ManagedTest {
         assertNotNull(login(pk, cert));
         assertEquals(1, countRegex(IOUtils.readURL(get(cookie, Certificates.PATH)), "<td>(?:REVOKED|ISSUED)</td>"));
         assertEquals(1, countRegex(IOUtils.readURL(get(cookie, Certificates.PATH + "?withRevoked")), "<td>(?:REVOKED|ISSUED)</td>"));
-        c.revoke().waitFor(60000);
+        await(c.revoke());
 
         testFails(CertificateStatus.REVOKED, c);
         assertNull(login(pk, cert));
index 95f2380fb68c9a338ddce56ca9ad74da09bdd77c..e04235e532ad972e9dfdd420dd6b3c1d457ab7ae 100644 (file)
@@ -51,7 +51,7 @@ public class TestCrossDomainAccess extends ManagedTest {
         String key = generatePEMCSR(kp, "CN=testmail@example.com");
         Certificate c = new Certificate(u, u, Certificate.buildDN("CN", "testmail@example.com"), Digest.SHA256, key, CSRType.CSR, CertificateProfile.getById(1));
         final PrivateKey pk = kp.getPrivate();
-        c.issue(null, "2y", u).waitFor(60000);
+        await(c.issue(null, "2y", u));
 
         URLConnection con = new URL("https://" + ServerConstants.getSecureHostNamePort()).openConnection();
         authenticateClientCert(pk, c.cert(), (HttpURLConnection) con);
index 9d2ff10c411ed21bfd67eb4ea5d692f5566f6fbc..1bce90968f7d50549fee2cff4d9c976d0bd78f51 100644 (file)
@@ -34,7 +34,7 @@ public class TestSeparateSessionScope extends ManagedTest {
         User u = User.getById(user);
         Certificate c = new Certificate(u, u, Certificate.buildDN("CN", "hans"), Digest.SHA256, csr, CSRType.CSR, CertificateProfile.getById(1));
         final PrivateKey pk = kp.getPrivate();
-        c.issue(null, "2y", u).waitFor(60000);
+        await(c.issue(null, "2y", u));
         final X509Certificate ce = c.cert();
         String scookie = login(pk, ce);
 
@@ -56,8 +56,8 @@ public class TestSeparateSessionScope extends ManagedTest {
         Certificate c2 = new Certificate(u, u, Certificate.buildDN("CN", "hans"), Digest.SHA256, csr, CSRType.CSR, CertificateProfile.getById(1));
         final PrivateKey pk = kp.getPrivate();
         Job j1 = c.issue(null, "2y", u);
-        c2.issue(null, "2y", u).waitFor(60000);
-        j1.waitFor(60000);
+        await(c2.issue(null, "2y", u));
+        await(j1);
         final X509Certificate ce = c.cert();
         String scookie = login(pk, ce);
 
index db19380dd6472b82f884fb3a3e800ff5cc0d1223..30d3ffff7e214b9b9bd74ecb1ab515f1ae51acc1 100644 (file)
@@ -48,14 +48,14 @@ public class ImportCATSResult extends ClientTest {
         String key1 = generatePEMCSR(kp, "EMAIL=cats@cacert.org");
         Certificate c = new Certificate(o, u, Certificate.buildDN("EMAIL", "cats@cacert.org"), Digest.SHA256, key1, CSRType.CSR, CertificateProfile.getByName("client-orga"), new Certificate.SubjectAlternateName(SANType.EMAIL, "cats@cacert.org"));
         pk = kp.getPrivate();
-        c.issue(null, "2y", u).waitFor(60000);
+        await(c.issue(null, "2y", u));
         ce = c.cert();
     }
 
     @Test
     public void testLookupSerial() throws GigiApiException, IOException, GeneralSecurityException, InterruptedException {
         Certificate target2 = new Certificate(u, u, Certificate.buildDN("EMAIL", u.getEmail()), Digest.SHA256, generatePEMCSR(generateKeypair(), "EMAIL=" + u.getEmail()), CSRType.CSR, CertificateProfile.getByName("client"), new Certificate.SubjectAlternateName(SANType.EMAIL, "cats@cacert.org"));
-        target2.issue(null, "2y", u).waitFor(60000);
+        await(target2.issue(null, "2y", u));
 
         assertEquals(u.getId(), Integer.parseInt(apiLookup(target2)));
     }
index ca4b9036569364e9ad8039caebbc3e6e8142e9cc..c2825d07dd09ab92809555abfc6a63b09e0a47d3 100644 (file)
@@ -46,7 +46,7 @@ public class IssueCert extends ClientTest {
             String key1 = generatePEMCSR(kp, "EMAIL=testmail@example.com");
             c = new Certificate(u, u, Certificate.buildDN("EMAIL", "testmail@example.com"), Digest.SHA256, key1, CSRType.CSR, CertificateProfile.getById(1));
             pk = kp.getPrivate();
-            c.issue(null, "2y", u).waitFor(60000);
+            await(c.issue(null, "2y", u));
             ce = c.cert();
         } catch (Exception e) {
             throw new Error(e);
index 34c8d297a7f829838e6e292ed6b4218f28fbef36..85c74a414d7b5d717dc3d3df5d099c8132f1a490 100644 (file)
@@ -42,6 +42,7 @@ import org.cacert.gigi.dbObjects.Certificate;
 import org.cacert.gigi.dbObjects.Certificate.CSRType;
 import org.cacert.gigi.dbObjects.CertificateProfile;
 import org.cacert.gigi.dbObjects.Digest;
+import org.cacert.gigi.dbObjects.Job;
 import org.cacert.gigi.dbObjects.User;
 import org.cacert.gigi.testUtils.IOUtils;
 import org.cacert.gigi.testUtils.PingTest;
@@ -225,7 +226,8 @@ public class TestSSL extends PingTest {
         String csr = generatePEMCSR(kp, "CN=" + test);
         User u = User.getById(id);
         Certificate c = new Certificate(u, u, Certificate.buildDN("CN", test), Digest.SHA256, csr, CSRType.CSR, profile);
-        c.issue(null, "2y", u).waitFor(60000);
+        Job j = c.issue(null, "2y", u);
+        await(j);
         this.c = c.cert();
     }
 
index 6f7dccea01ea15aee09f77a90c8e2373bfaf2a11..aad0ef02c52e5d7ab653cdb0ff4783f8a3d3062f 100644 (file)
@@ -43,6 +43,7 @@ import org.cacert.gigi.dbObjects.Domain;
 import org.cacert.gigi.dbObjects.DomainPingType;
 import org.cacert.gigi.dbObjects.EmailAddress;
 import org.cacert.gigi.dbObjects.Group;
+import org.cacert.gigi.dbObjects.Job;
 import org.cacert.gigi.dbObjects.ObjectCache;
 import org.cacert.gigi.dbObjects.User;
 import org.cacert.gigi.pages.Manager;
@@ -108,6 +109,9 @@ public class ManagedTest extends ConfiguredTest {
                 String[] parts = testProps.getProperty("mail").split(":", 2);
                 ter = new TestEmailReceiver(new InetSocketAddress(parts[0], Integer.parseInt(parts[1])));
                 ter.start();
+                if (testProps.getProperty("withSigner", "false").equals("true")) {
+                    SimpleSigner.runSigner();
+                }
                 return;
             }
             url = testProps.getProperty("name.www") + ":" + testProps.getProperty("serverPort.https");
@@ -156,6 +160,11 @@ public class ManagedTest extends ConfiguredTest {
 
     }
 
+    protected void await(Job j) throws InterruptedException {
+        SimpleSigner.ping();
+        j.waitFor(5000);
+    }
+
     public static void purgeDatabase() throws SQLException, IOException {
         System.out.print("... resetting Database");
         long ms = System.currentTimeMillis();
index 296eb99e5bb73a9f3c88697bc206b24d7e7bbacb..aa7ee28cf250c1d2c54037566b4b05079e3a513d 100644 (file)
@@ -152,6 +152,17 @@ public class SimpleSigner {
         runner.start();
     }
 
+    public static void ping() {
+        synchronized (SimpleSigner.class) {
+            SimpleSigner.class.notifyAll();
+            try {
+                SimpleSigner.class.wait(2000);
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
     private synchronized static void work() {
         try {
             gencrl();
@@ -166,6 +177,7 @@ public class SimpleSigner {
                 signCertificates();
                 revokeCertificates();
 
+                SimpleSigner.class.notifyAll();
                 SimpleSigner.class.wait(5000);
             } catch (IOException e) {
                 e.printStackTrace();