2016-11-03 1 views
1

Ich versuche DNS requests machen (& rückwärts auflösen) und Aussagen über Ergebnisse machen.Nightwatchjs DNS-Anfrage benutzerdefinierte Befehle

I laufen zwei ähnliche benutzerdefinierte Befehle in einer Reihe sowohl dns.setServers() Funktion in der Lage sein gesetzt einen anderen DNS-Server für jede Abfrage ausgeführt wird.

begegnete mir dieses bekannte Problem: node: ../deps/cares/src/ares_destroy.c:102: ares__destroy_servers_state: Assertion ares__is_list_empty(&server->queries_to_server)' failed.

Da es, dass es nodejs#894 gelöst wird nicht scheint ->c-ares#41.

ich nach einer Lösung gesucht, hier ist der Code:

Individuelle Befehl dnsResolve:

var util = require('util'); 
var events = require('events'); 
var dns = require ('dns'); 

var dnsresolve = function() { 
    events.EventEmitter.call(this); 
}; 

util.inherits(dnsresolve, events.EventEmitter); 

dnsresolve.prototype.command = function(server, hostname, rrtype, callback) { 
    var self = this; 
    var server = server.split(); 

    dns.resolve(hostname, rrtype, function(err, result) { 
    dns.setServers(server); 
    if (result) { 
     callback(result); 
    } else { 
     callback(err.code); 
    } 

    self.emit('complete'); 
    }); 

    return this; 
}; 

module.exports = dnsresolve; 

Individuelle Befehl dnsreverse:

var util = require('util'); 
var events = require('events'); 
var dns = require ('dns'); 

var dnsreverse = function() { 
    events.EventEmitter.call(this); 
}; 

util.inherits(dnsreverse, events.EventEmitter); 

dnsreverse.prototype.command = function(server, ip, callback) { 
    var self = this; 
    var server = server.split(); 

    dns.reverse(ip, function(err, result) { 
    dns.setServers(server); 
    if (result) { 
     callback(result); 
    } else { 
     callback(err.code); 
    } 

    self.emit('complete'); 
    }); 

    return this; 
}; 

module.exports = dnsreverse; 

benutzerdefinierte Befehle Anrufe :

'Browse' : function (browser) { 
    browser 
    .url('http://' + browser.globals.network.interfaces.em0.ip) 
    .waitForElementVisible('#frameContent', 2000) 
    .dnsresolve(browser.globals.network.interfaces.em0.ip, 'my.record', 'A', function(result) { 
     browser.verify.equal(result, '1.1.1.1') 
    }) 
    .dnsreverse(browser.globals.network.interfaces.em0.ip, '1.1.1.1', function(result) { 
     browser.verify.equal(result, 'my.record') 
    }) 
} 

Verwendung anderer Knotenmodule ist keine Lösung.

Antwort

0

ich gerade diese Befehle gemacht, einige benutzerdefinierten Behauptungen:

module.exports = { 
    'resolve' : function(browser, server, hostname, rrtype, expect) { 
    browser 
    .dnsresolve(server, hostname, rrtype, function(result) { 
     browser.verify.equal(result, expect) 
    }).pause(10) 
    }, 
    'reverse' : function(browser, server, ip, expect) { 
    browser 
    .dnsreverse(server, ip, function(result) { 
     browser.verify.equal(result, expect) 
    }).pause(10) 
    } 
}; 

Hinzufügen '.pause (10)' der Trick ist, fanden es nicht eine richtige Art und Weise zu tun.

Verwandte Themen