From 6d7ab9c4e2807bc40e7c583f899b5221cf44c8ea Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20D=C3=B6rre?= Date: Sat, 2 Jul 2016 19:43:04 +0200 Subject: [PATCH] upd: greatly improve speed at all cert-generating test cases Change-Id: Ie3ae565f6b0236aba4e9dc4ad4939b7a82407c57 --- config/test.properties.template | 1 + tests/org/cacert/gigi/TestCertificate.java | 8 ++++---- tests/org/cacert/gigi/TestCrossDomainAccess.java | 2 +- tests/org/cacert/gigi/TestSeparateSessionScope.java | 6 +++--- tests/org/cacert/gigi/api/ImportCATSResult.java | 4 ++-- tests/org/cacert/gigi/api/IssueCert.java | 2 +- tests/org/cacert/gigi/ping/TestSSL.java | 4 +++- tests/org/cacert/gigi/testUtils/ManagedTest.java | 9 +++++++++ util-testing/org/cacert/gigi/util/SimpleSigner.java | 12 ++++++++++++ 9 files changed, 36 insertions(+), 12 deletions(-) diff --git a/config/test.properties.template b/config/test.properties.template index f18f895b..b39f07b7 100644 --- a/config/test.properties.template +++ b/config/test.properties.template @@ -2,6 +2,7 @@ type=local serverPort.https=443 serverPort.http=80 mail=localhost:8474 +#withSigner=false # ==== OR === type=autonomous diff --git a/tests/org/cacert/gigi/TestCertificate.java b/tests/org/cacert/gigi/TestCertificate.java index dd14e8d3..b12d3a9e 100644 --- a/tests/org/cacert/gigi/TestCertificate.java +++ b/tests/org/cacert/gigi/TestCertificate.java @@ -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> 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)), "(?:REVOKED|ISSUED)")); assertEquals(1, countRegex(IOUtils.readURL(get(cookie, Certificates.PATH + "?withRevoked")), "(?:REVOKED|ISSUED)")); - c.revoke().waitFor(60000); + await(c.revoke()); testFails(CertificateStatus.REVOKED, c); assertNull(login(pk, cert)); diff --git a/tests/org/cacert/gigi/TestCrossDomainAccess.java b/tests/org/cacert/gigi/TestCrossDomainAccess.java index 95f2380f..e04235e5 100644 --- a/tests/org/cacert/gigi/TestCrossDomainAccess.java +++ b/tests/org/cacert/gigi/TestCrossDomainAccess.java @@ -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); diff --git a/tests/org/cacert/gigi/TestSeparateSessionScope.java b/tests/org/cacert/gigi/TestSeparateSessionScope.java index 9d2ff10c..1bce9096 100644 --- a/tests/org/cacert/gigi/TestSeparateSessionScope.java +++ b/tests/org/cacert/gigi/TestSeparateSessionScope.java @@ -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); diff --git a/tests/org/cacert/gigi/api/ImportCATSResult.java b/tests/org/cacert/gigi/api/ImportCATSResult.java index db19380d..30d3ffff 100644 --- a/tests/org/cacert/gigi/api/ImportCATSResult.java +++ b/tests/org/cacert/gigi/api/ImportCATSResult.java @@ -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))); } diff --git a/tests/org/cacert/gigi/api/IssueCert.java b/tests/org/cacert/gigi/api/IssueCert.java index ca4b9036..c2825d07 100644 --- a/tests/org/cacert/gigi/api/IssueCert.java +++ b/tests/org/cacert/gigi/api/IssueCert.java @@ -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); diff --git a/tests/org/cacert/gigi/ping/TestSSL.java b/tests/org/cacert/gigi/ping/TestSSL.java index 34c8d297..85c74a41 100644 --- a/tests/org/cacert/gigi/ping/TestSSL.java +++ b/tests/org/cacert/gigi/ping/TestSSL.java @@ -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(); } diff --git a/tests/org/cacert/gigi/testUtils/ManagedTest.java b/tests/org/cacert/gigi/testUtils/ManagedTest.java index 6f7dccea..aad0ef02 100644 --- a/tests/org/cacert/gigi/testUtils/ManagedTest.java +++ b/tests/org/cacert/gigi/testUtils/ManagedTest.java @@ -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(); diff --git a/util-testing/org/cacert/gigi/util/SimpleSigner.java b/util-testing/org/cacert/gigi/util/SimpleSigner.java index 296eb99e..aa7ee28c 100644 --- a/util-testing/org/cacert/gigi/util/SimpleSigner.java +++ b/util-testing/org/cacert/gigi/util/SimpleSigner.java @@ -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(); -- 2.39.2