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: [email protected]
For additional commands, e-mail: [email protected]