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