From 1a1d19be124739d8093781ac8ad5b33416cc6115 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20D=C3=B6rre?= Date: Thu, 24 Sep 2015 15:01:42 +0200 Subject: [PATCH] SSL-ping: implement re-order of ssltest-executions. --- tests/org/cacert/gigi/ping/TestSSL.java | 62 +++++++++++++++++++++++-- 1 file changed, 58 insertions(+), 4 deletions(-) diff --git a/tests/org/cacert/gigi/ping/TestSSL.java b/tests/org/cacert/gigi/ping/TestSSL.java index fe2db568..19aafe25 100644 --- a/tests/org/cacert/gigi/ping/TestSSL.java +++ b/tests/org/cacert/gigi/ping/TestSSL.java @@ -41,6 +41,41 @@ import org.junit.Test; public class TestSSL extends PingTest { + public abstract static class AsyncTask { + + T res; + + Thread runner; + + Exception ex; + + public T join() throws InterruptedException { + runner.join(); + if (ex != null) { + throw new Error(ex); + } + return res; + } + + public void start() { + runner = new Thread() { + + @Override + public void run() { + try { + res = AsyncTask.this.run(); + } catch (Exception e) { + ex = e; + } + } + }; + runner.start(); + } + + public abstract T run() throws Exception; + + } + private KeyPair kp; private Certificate c; @@ -96,9 +131,9 @@ public class TestSSL extends PingTest { initailizeDomainForm(u); createCertificate(test, CertificateProfile.getByName(sslVariant == 1 ? "client" : "server")); - SSLServerSocket sss = createSSLServer(kp.getPrivate(), c.cert()); + final SSLServerSocket sss = createSSLServer(kp.getPrivate(), c.cert()); int port = sss.getLocalPort(); - SSLServerSocket sss2 = createSSLServer(kp.getPrivate(), c.cert()); + final SSLServerSocket sss2 = createSSLServer(kp.getPrivate(), c.cert()); int port2 = sss2.getLocalPort(); if (sslVariant == 3 || sslVariant == 2) { sss2.close(); @@ -115,9 +150,21 @@ public class TestSSL extends PingTest { "&adddomain&csrf=" + csrf; URL u2 = sendDomainForm(u, content); boolean firstSucceeds = sslVariant != 0 && sslVariant != 2; - assertTrue(firstSucceeds ^ acceptSSLServer(sss)); + AsyncTask ass = new AsyncTask() { + + @Override + public Boolean run() throws Exception { + return acceptSSLServer(sss); + } + }; + ass.start(); + System.out.println(port + " and " + port2 + " ready"); + System.err.println(port + " and " + port2 + " ready"); + boolean accept2 = acceptSSLServer(sss2); + boolean accept1 = ass.join(); + assertTrue(firstSucceeds ^ accept1); boolean secondsSucceeds = sslVariant != 0; - assertTrue(secondsSucceeds ^ acceptSSLServer(sss2)); + assertTrue(secondsSucceeds ^ accept2); TestMail mail = getMailReciever().receive(); if (emailVariant == 0) { @@ -221,4 +268,11 @@ public class TestSSL extends PingTest { return (SSLServerSocket) sssf.createServerSocket(0); } + public static void main(String[] args) throws Exception { + initEnvironment(); + TestSSL t1 = new TestSSL(); + t1.sslAndMailSuccess(); + tearDownServer(); + } + } -- 2.39.2