Skip to content

Commit 4f0bd8f

Browse files
author
_pants
committed
fix bug in random peersCurrent mutation
1 parent add78a7 commit 4f0bd8f

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

mock/scenarios.js

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -324,27 +324,32 @@ exports.SCENARIOS = {
324324
}, true);
325325
setInterval(function() {
326326
var peersCurrent = getByPath(this_.model, 'connectivity.peers.current');
327+
//log('peersCurrent:', _.pluck(peersCurrent, 'peerid'));
327328
if (_.isEmpty(peersCurrent)) {
328-
this_.updateModel({'connectivity.peers.current.0': randomChoice(peers)}, true);
329+
var randomPeer = randomChoice(peers);
330+
this_.updateModel({'connectivity.peers.current.0': randomPeer}, true);
331+
//log('No current peers, added random peer', randomPeer.peerid);
329332
return;
330333
}
331-
if (peersCurrent === peers.length) {
334+
if (peersCurrent.length === peers.length) {
332335
var i = _.random(peers.length - 1);
336+
//log('Connected to all available peers, removing random peer', peersCurrent[i].peerid);
333337
peersCurrent.splice(i, 1);
334338
this_.publishSync('connectivity.peers.current');
335339
return;
336340
}
337-
var offline = [];
338-
for (var i=0, p=peers[i]; p; p=peers[++i]) {
339-
if (!_.any(peersCurrent, function(pp) { return p.peerid === (pp || {}).peerid; }))
340-
offline.push(p);
341-
}
342-
if (Math.random() < .5) { // offline peer comes online, add it
343-
var randomPeer = randomChoice(offline);
341+
if (Math.random() < .5) { // add a random not connected peer
342+
var peersall = _.pluck(peers, 'peerid'),
343+
peerscur = _.pluck(peersCurrent, 'peerid'),
344+
peersnc = _.difference(peersall, peerscur),
345+
randomPeerid = randomChoice(peersnc),
346+
randomPeer = _.find(peers, function(p){ return p.peerid === randomPeerid; });
344347
peersCurrent.push(randomPeer);
345348
this_.publishSync('connectivity.peers.current.'+peersCurrent.length, true);
346-
} else { // online peer goes offline, remove it
349+
//log('heads: added random peer', randomPeerid);
350+
} else { // remove a random connected peer
347351
var i = _.random(peersCurrent.length - 1);
352+
//log('tails: removing random peer', peersCurrent[i].peerid);
348353
peersCurrent.splice(i, 1);
349354
this_.publishSync('connectivity.peers.current');
350355
}

0 commit comments

Comments
 (0)