]> WPIA git - gigi.git/commitdiff
Adding dummy signer bot to managed testcases.
authorFelix Dörre <felix@dogcraft.de>
Thu, 10 Jul 2014 06:56:08 +0000 (08:56 +0200)
committerFelix Dörre <felix@dogcraft.de>
Thu, 10 Jul 2014 22:35:16 +0000 (00:35 +0200)
tests/org/cacert/gigi/testUtils/ManagedTest.java
util/org/cacert/gigi/util/SimpleSigner.java

index 2d6631ef0312349e25c26753f4d390bfe75cae4e..5f441d2b9185eb16fdebf9d12f1266fd85f0e827 100644 (file)
@@ -28,6 +28,7 @@ import org.cacert.gigi.DevelLauncher;
 import org.cacert.gigi.database.DatabaseConnection;
 import org.cacert.gigi.testUtils.TestEmailReciever.TestMail;
 import org.cacert.gigi.util.DatabaseManager;
+import org.cacert.gigi.util.SimpleSigner;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
@@ -113,12 +114,15 @@ public class ManagedTest {
                                throw new Error("Server startup failed");
                        }
                        ter = new TestEmailReciever(new InetSocketAddress("localhost", 8473));
+                       SimpleSigner.runSigner();
                } catch (IOException e) {
                        throw new Error(e);
                } catch (ClassNotFoundException e1) {
                        e1.printStackTrace();
                } catch (SQLException e1) {
                        e1.printStackTrace();
+               } catch (InterruptedException e) {
+                       e.printStackTrace();
                }
 
        }
@@ -131,6 +135,11 @@ public class ManagedTest {
                        return;
                }
                gigi.destroy();
+               try {
+                       SimpleSigner.stopSigner();
+               } catch (InterruptedException e) {
+                       e.printStackTrace();
+               }
        }
 
        @After
index d67cb8e874f563fff235f73d724cb045e2ff2742..2aaa1659d79a7cf7c3793f06af7a80aa13b73be7 100644 (file)
@@ -22,12 +22,32 @@ public class SimpleSigner {
        private static PreparedStatement readyMail;
        private static PreparedStatement revoke;
        private static PreparedStatement revokeCompleted;
+       private static boolean running = true;
+       private static Thread runner;
 
        public static void main(String[] args) throws IOException, SQLException, InterruptedException {
                Properties p = new Properties();
                p.load(new FileReader("config/gigi.properties"));
                DatabaseConnection.init(p);
 
+               runSigner();
+       }
+
+       public synchronized static void stopSigner() throws InterruptedException {
+               if (runner == null) {
+                       throw new IllegalStateException("already stopped");
+               }
+               running = false;
+               runner.interrupt();
+               runner.join();
+               runner = null;
+       }
+
+       public synchronized static void runSigner() throws SQLException, IOException, InterruptedException {
+               if (runner != null) {
+                       throw new IllegalStateException("already running");
+               }
+               running = true;
                readyMail = DatabaseConnection.getInstance().prepare(
                        "SELECT id, csr_name, subject FROM emailcerts" + " WHERE csr_name is not null"//
                                + " AND created=0"//
@@ -43,13 +63,31 @@ public class SimpleSigner {
                                + " AND created != 0"//
                                + " AND revoked = '1970-01-01'");
                revokeCompleted = DatabaseConnection.getInstance().prepare("UPDATE emailcerts SET revoked=NOW() WHERE id=?");
-               gencrl();
-               while (true) {
-                       System.out.println("ping");
-                       signCertificates();
-                       revokeCertificates();
-                       Thread.sleep(5000);
-               }
+               runner = new Thread() {
+                       @Override
+                       public void run() {
+                               try {
+                                       gencrl();
+                               } catch (IOException e2) {
+                                       e2.printStackTrace();
+                               } catch (InterruptedException e2) {
+                                       e2.printStackTrace();
+                               }
+                               while (running) {
+                                       try {
+                                               signCertificates();
+                                               revokeCertificates();
+                                               Thread.sleep(5000);
+                                       } catch (IOException e) {
+                                               e.printStackTrace();
+                                       } catch (SQLException e) {
+                                               e.printStackTrace();
+                                       } catch (InterruptedException e1) {
+                                       }
+                               }
+                       }
+               };
+               runner.start();
        }
 
        private static void revokeCertificates() throws SQLException, IOException, InterruptedException {