added test for handling addr times and v6 addresses
This commit is contained in:
parent
1545abbea0
commit
e62ddd93f6
@ -69,9 +69,11 @@ function Pool(options) {
|
|||||||
var length = addrs.length;
|
var length = addrs.length;
|
||||||
for (var i = 0; i < length; i++) {
|
for (var i = 0; i < length; i++) {
|
||||||
var addr = addrs[i];
|
var addr = addrs[i];
|
||||||
// In case of an invalid time, assume "5 days ago"
|
var future = new Date().getTime() + (10 * 60 * 1000);
|
||||||
if (addr.time <= 100000000 || addr.time > (now() + 10 * 60)) {
|
if (addr.time.getTime() <= 100000000000 || addr.time.getTime() > future) {
|
||||||
addr.time = now() - 5 * 24 * 60 * 60;
|
// In case of an invalid time, assume "5 days ago"
|
||||||
|
var past = new Date(new Date().getTime() - 5 * 24 * 60 * 60 * 1000);
|
||||||
|
addr.time = past;
|
||||||
}
|
}
|
||||||
this._addAddr(addr);
|
this._addAddr(addr);
|
||||||
}
|
}
|
||||||
|
|||||||
74
test/pool.js
74
test/pool.js
@ -336,6 +336,80 @@ describe('Pool', function() {
|
|||||||
pool.connect();
|
pool.connect();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('not call _fillConnections if keepalive is false', function(done) {
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('keep original time for handling peeraddr messages', function(done) {
|
||||||
|
var pool = new Pool({network: Networks.livenet, maxSize: 1});
|
||||||
|
var now = new Date();
|
||||||
|
pool._addAddr = function(addr) {
|
||||||
|
addr.time.should.equal(now);
|
||||||
|
done();
|
||||||
|
};
|
||||||
|
pool.emit('peeraddr', {}, {
|
||||||
|
addresses: [
|
||||||
|
{
|
||||||
|
time: now
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('replace time if time is invalid on peeraddr messages', function(done) {
|
||||||
|
var pool = new Pool({network: Networks.livenet, maxSize: 1});
|
||||||
|
var future = new Date(new Date().getTime() + 10 * 70 * 1000);
|
||||||
|
var past = new Date(new Date().getTime() - 4 * 24 * 60 * 60 * 1000); // 4 days ago
|
||||||
|
pool._addAddr = function(addr) {
|
||||||
|
addr.time.should.not.equal(future);
|
||||||
|
addr.time.getTime().should.be.below(past.getTime());
|
||||||
|
done();
|
||||||
|
};
|
||||||
|
pool.emit('peeraddr', {}, {
|
||||||
|
addresses: [
|
||||||
|
{
|
||||||
|
time: future
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('#_removeConnectedPeer', function() {
|
||||||
|
it('disconnect peer if peer status is not disconnected', function(done) {
|
||||||
|
var pool = new Pool({network: Networks.livenet, maxSize: 1});
|
||||||
|
/* jshint sub: true */
|
||||||
|
pool._connectedPeers['hash'] = {
|
||||||
|
status: Peer.STATUS.CONNECTED,
|
||||||
|
disconnect: function() {
|
||||||
|
done();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
pool._removeConnectedPeer({
|
||||||
|
hash: 'hash'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('#_connectPeer', function() {
|
||||||
|
it('connect ipv6 peer', function() {
|
||||||
|
var connectStub = sinon.stub(Peer.prototype, 'connect');
|
||||||
|
var pool = new Pool({network: Networks.livenet, maxSize: 1});
|
||||||
|
var ipv6 = '2001:0db8:85a3:0042:1000:8a2e:0370:7334';
|
||||||
|
pool._addPeerEventHandlers = sinon.stub();
|
||||||
|
pool._connectPeer({
|
||||||
|
ip: {
|
||||||
|
v6: ipv6
|
||||||
|
},
|
||||||
|
hash: 'hash'
|
||||||
|
});
|
||||||
|
/* jshint sub: true */
|
||||||
|
should.exist(pool._connectedPeers['hash']);
|
||||||
|
pool._addPeerEventHandlers.calledOnce.should.equal(true);
|
||||||
|
Peer.prototype.connect.calledOnce.should.equal(true);
|
||||||
|
connectStub.restore();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('#_addConnectedPeer', function() {
|
describe('#_addConnectedPeer', function() {
|
||||||
|
|
||||||
it('should add a peer', function() {
|
it('should add a peer', function() {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user