114 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			114 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | var core = require('dns'), | ||
|  |     mine = require('../dns'); | ||
|  | 
 | ||
|  | var sorter = function(a, b) { | ||
|  |   var cmpa, cmpb; | ||
|  | 
 | ||
|  |   if (a.priority) { | ||
|  |     if (a.priority > b.priority) { | ||
|  |       return 1; | ||
|  |     } else if (a.priority < b.priority) { | ||
|  |       return -1; | ||
|  |     } else { | ||
|  |       if (a.exchange) { | ||
|  |         cmpa = a.exchange; | ||
|  |         cmpb = b.exchange; | ||
|  |       } else if (a.name) { | ||
|  |         cmpa = a.name; | ||
|  |         cmpb = b.name; | ||
|  |       } | ||
|  | 
 | ||
|  |       if (cmpb > cmpa) { | ||
|  |         return 1; | ||
|  |       } else if (cmpa < cmpb) { | ||
|  |         return -1; | ||
|  |       } else { | ||
|  |         return 0; | ||
|  |       } | ||
|  |     } | ||
|  |   } else { | ||
|  |     if (a > b) { | ||
|  |       return 1; | ||
|  |     } else if (a < b) { | ||
|  |       return -1; | ||
|  |     } else { | ||
|  |       return 0; | ||
|  |     } | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | var resolve = function(domain, type, test) { | ||
|  |   //var their_err, theirs, our_err, ours;
 | ||
|  |   mine.resolve(domain, type, function(our_err, ours) { | ||
|  |     core.resolve(domain, type, function(their_err, theirs) { | ||
|  |       //try {
 | ||
|  |         test.deepEqual(our_err, their_err, "Error mismatch"); | ||
|  |         test.deepEqual(ours.length, theirs.length, "Expected length mismatch"); | ||
|  | 
 | ||
|  |         ours.sort(sorter); | ||
|  |         theirs.sort(sorter); | ||
|  | 
 | ||
|  |         test.deepEqual(ours, theirs, "Mismatch"); | ||
|  |       //} catch (e) {
 | ||
|  |       //  console.log('error resolving', domain, type);
 | ||
|  |       //  console.log('our error', our_err);
 | ||
|  |       //  console.log('their error', their_err);
 | ||
|  |       //  console.log('ours', ours)
 | ||
|  |       //  console.log('theirs', theirs);
 | ||
|  |       //  throw e;
 | ||
|  |       //} finally {
 | ||
|  |         test.done(); | ||
|  |       //}
 | ||
|  |     }); | ||
|  |   }); | ||
|  | }; | ||
|  | 
 | ||
|  | var lookup = function(domain, type, test) { | ||
|  |   if (!test) { | ||
|  |     test = type; | ||
|  |     type = undefined; | ||
|  |   } | ||
|  |   mine.lookup(domain, type, function(our_err, our_ip, our_family) { | ||
|  |     core.lookup(domain, type, function(their_err, their_ip, their_family) { | ||
|  |       //try {
 | ||
|  |         test.deepEqual(our_err, their_err, "Error mismatch"); | ||
|  |         test.deepEqual(our_ip, their_ip, "IP mismatch"); | ||
|  |         test.deepEqual(our_family, their_family, "Family mismatch"); | ||
|  |       //} catch (e) {
 | ||
|  |       //  console.log('error looking up', domain, type);
 | ||
|  |       //  console.log('our err', our_err);
 | ||
|  |       //  console.log('our ip', our_ip);
 | ||
|  |       //  console.log('our family', our_family);
 | ||
|  |       //  console.log('their err', their_err);
 | ||
|  |       //  console.log('their ip', their_ip);
 | ||
|  |       //  console.log('their family', their_family);
 | ||
|  |       //  throw e;
 | ||
|  |       //} finally {
 | ||
|  |         test.done(); | ||
|  |       //}
 | ||
|  |     }); | ||
|  |   }); | ||
|  | }; | ||
|  | 
 | ||
|  | exports.resolve4 = resolve.bind(null, 'irc6.geo.oftc.net', 'A'); | ||
|  | exports.resolve6 = resolve.bind(null, 'irc6.geo.oftc.net', 'AAAA'); | ||
|  | exports.resolveMx = resolve.bind(null, 'gmail.com', 'MX'); | ||
|  | exports.resolveNs = resolve.bind(null, 'google.com', 'NS'); | ||
|  | exports.resolveSrv = resolve.bind(null, '_jabber._tcp.google.com', 'SRV'); | ||
|  | exports.resolveCname = resolve.bind(null, 'www.google.com', 'CNAME'); | ||
|  | //exports.resolveDne = resolve.bind(null, 'does.not.exist', 'A');
 | ||
|  | // TODO this probably shouldn't even transit?
 | ||
|  | //resolve('should be a formerr', 'A');
 | ||
|  | 
 | ||
|  | exports.lookup4 = lookup.bind(null, 'www.atxconsulting.com', 4); | ||
|  | exports.lookup6 = lookup.bind(null, 'www.atxconsulting.com', 6); | ||
|  | exports.lookupImplicit = lookup.bind(null, 'www.atxconsulting.com'); | ||
|  | exports.lookupDne = lookup.bind(null, 'does.not.exist', 4); | ||
|  | exports.lookupNull = lookup.bind(null, null); | ||
|  | exports.lookupLocalIP = lookup.bind(null, '127.0.0.1'); | ||
|  | exports.lookupLocalIP6 = lookup.bind(null, '::1'); | ||
|  | exports.lookupLocalhost4 = lookup.bind(null, 'localhost', 4); | ||
|  | exports.lookupLocalhost6 = lookup.bind(null, 'localhost', 6); | ||
|  | //work on search path example
 | ||
|  | //exports.lookupPath = lookup.bind(null, 'fatman', 4);
 |