Author: bago
Date: Sun Jun  7 16:46:36 2009
New Revision: 782407

URL: http://svn.apache.org/viewvc?rev=782407&view=rev
Log:
Added ability to load all of the zones defined in a yml file. The test files 
often do define overlapping zones, so this allow testing a full file without 
reloading the fake server.

Modified:
    
james/jspf/trunk/tester/src/main/java/org/apache/james/jspf/tester/DNSTestingServerLauncher.java

Modified: 
james/jspf/trunk/tester/src/main/java/org/apache/james/jspf/tester/DNSTestingServerLauncher.java
URL: 
http://svn.apache.org/viewvc/james/jspf/trunk/tester/src/main/java/org/apache/james/jspf/tester/DNSTestingServerLauncher.java?rev=782407&r1=782406&r2=782407&view=diff
==============================================================================
--- 
james/jspf/trunk/tester/src/main/java/org/apache/james/jspf/tester/DNSTestingServerLauncher.java
 (original)
+++ 
james/jspf/trunk/tester/src/main/java/org/apache/james/jspf/tester/DNSTestingServerLauncher.java
 Sun Jun  7 16:46:36 2009
@@ -42,6 +42,17 @@
 import java.util.Locale;
 import java.util.Set;
 
+/**
+ * Run a fake dnsserver listening both TCP and UDP ports.
+ * 
+ * Mandatory parameters are -f (yaml zone definition) and -t (test name).
+ * if testname is "ALL" then all of the zones in the file are merged in a 
single
+ * zone and loaded.
+ * 
+ * e.g: DNSTestingServerLauncher -f rfc4408-tests.yml -t ALL
+ * 
+ * by default listen to port 53 of every interface, but ip and port can be 
updated.
+ */
 public class DNSTestingServerLauncher {
 
     private static final char CHAR_TESTNAME = 't';
@@ -93,26 +104,19 @@
                     
                     Constructor ctor = 
fact.createConstructor(fact.createComposer(fact.createParser(fact.createScanner(br)),fact.createResolver()));
                     boolean found = false;
+                    HashMap zonedata = new HashMap();
                     HashMap testMap = null;
                     while(ctor.checkData() && !found) {
                         Object o = ctor.getData();
                         if (o instanceof HashMap) {
                           testMap = (HashMap) o;
-                          if (test.equals(testMap.get("description"))) {
+                          if (test.equals(testMap.get("description")) || 
"ALL".equalsIgnoreCase(test)) {
                               found = true;
+                              loadZoneData(testMap, zonedata);
                           }
                         }
                     }
                     if (found) {
-                        HashMap loadedZoneData = (HashMap) 
testMap.get("zonedata");
-                        HashMap zonedata = new HashMap();
-                        Set keys = loadedZoneData.keySet();
-                        for (Iterator i = keys.iterator(); i.hasNext(); ) {
-                            String hostname = (String) i.next();
-                            String lowercase = hostname.toLowerCase(Locale.US);
-                            zonedata.put(lowercase, 
loadedZoneData.get(hostname));
-                        }
-                        
                         DNSTestingServer testingServer = new 
DNSTestingServer(ip, port);
                         testingServer.setData(zonedata);
                         
@@ -156,6 +160,19 @@
 
     }
 
+    private static void loadZoneData(HashMap testMap, HashMap zonedata) {
+        HashMap loadedZoneData = (HashMap) testMap.get("zonedata");
+        Set keys = loadedZoneData.keySet();
+        for (Iterator i = keys.iterator(); i.hasNext(); ) {
+            String hostname = (String) i.next();
+            String lowercase = hostname.toLowerCase(Locale.US);
+            if (zonedata.containsKey(lowercase)) {
+                System.err.println("Replace zone entry for "+lowercase+" to 
"+loadedZoneData.get(hostname));
+            }
+            zonedata.put(lowercase, loadedZoneData.get(hostname));
+        }
+    }
+
     /**
      * Print out the usage
      */



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to