]> WPIA git - gigi.git/commitdiff
add: implement a test manager that will succeed all domain pings (for
authorFelix Dörre <felix@dogcraft.de>
Sun, 15 Nov 2015 22:47:51 +0000 (23:47 +0100)
committerFelix Dörre <felix@dogcraft.de>
Mon, 16 Nov 2015 10:15:24 +0000 (11:15 +0100)
now)

util-testing/org/cacert/gigi/pages/Manager.java

index 8f77afbd63ea8bbdb61732e51dc36a5ad72aec2d..30daa4d0216d7245d5762971c9cc63739e63c42f 100644 (file)
@@ -21,13 +21,17 @@ import java.util.Properties;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.cacert.gigi.Gigi;
 import org.cacert.gigi.GigiApiException;
 import org.cacert.gigi.crypto.SPKAC;
 import org.cacert.gigi.database.DatabaseConnection;
 import org.cacert.gigi.database.GigiPreparedStatement;
 import org.cacert.gigi.dbObjects.Certificate;
 import org.cacert.gigi.dbObjects.Certificate.CertificateStatus;
+import org.cacert.gigi.dbObjects.CertificateOwner;
 import org.cacert.gigi.dbObjects.Digest;
+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.Name;
@@ -37,6 +41,8 @@ import org.cacert.gigi.localisation.Language;
 import org.cacert.gigi.output.template.IterableDataset;
 import org.cacert.gigi.output.template.Template;
 import org.cacert.gigi.pages.account.certs.CertificateRequest;
+import org.cacert.gigi.ping.DomainPinger;
+import org.cacert.gigi.ping.PingerDaemon;
 import org.cacert.gigi.util.AuthorizationContext;
 import org.cacert.gigi.util.Notary;
 
@@ -48,6 +54,8 @@ public class Manager extends Page {
 
     Field f;
 
+    private static HashMap<DomainPingType, DomainPinger> dps;
+
     private Manager() {
         super("Test Manager");
         try {
@@ -58,6 +66,27 @@ public class Manager extends Page {
             System.out.println("I don't have 'hash', we are working probably in layered mode. Test Manager may not work.");
             // throw new Error(e);
         }
+
+        try {
+            Field gigiInstance = Gigi.class.getDeclaredField("instance");
+            gigiInstance.setAccessible(true);
+            Gigi g = (Gigi) gigiInstance.get(null);
+
+            Field gigiPinger = Gigi.class.getDeclaredField("pinger");
+            gigiPinger.setAccessible(true);
+            PingerDaemon pd = (PingerDaemon) gigiPinger.get(g);
+
+            Field f = PingerDaemon.class.getDeclaredField("pingers");
+            f.setAccessible(true);
+            dps = (HashMap<DomainPingType, DomainPinger>) f.get(pd);
+            HashMap<DomainPingType, DomainPinger> pingers = new HashMap<>();
+            for (DomainPingType dpt : DomainPingType.values()) {
+                pingers.put(dpt, new PingerFetcher(dpt));
+            }
+            f.set(pd, pingers);
+        } catch (ReflectiveOperationException e) {
+            e.printStackTrace();
+        }
     }
 
     public User[] getAssurers() {
@@ -131,6 +160,22 @@ public class Manager extends Page {
 
     }
 
+    public static class PingerFetcher extends DomainPinger {
+
+        private DomainPingType dpt;
+
+        public PingerFetcher(DomainPingType dpt) {
+            this.dpt = dpt;
+        }
+
+        @Override
+        public void ping(Domain domain, String configuration, CertificateOwner target, int confId) {
+            System.out.println("Test: " + domain);
+            dps.get(dpt).ping(domain, configuration, target, confId);
+        }
+
+    }
+
     public void batchCreateUsers(String mailPrefix, String domain, int amount, PrintWriter out) {
 
         try {