def do_churn(self):
"""Simulate churn: delete and add nodes from/to the network."""
nAdd = int(random.expovariate(self._lamdbaAdd) + 0.5)
nDel = int(random.expovariate(self._lamdbaDel) + 0.5)
# kill nDel non-dead nodes at random.
random.shuffle(self._wholenet)
nkilled = 0
for node in self._wholenet:
if nkilled == nDel:
break
if not node._dead:
node.kill()
nkilled += 1
# add nAdd new nodes.
for n in xrange(self._total, self._total+nAdd):
node = Node("node%d"%n,
port=_randport(),
evil=random.random() < self._pevil)
self._total += 1
评论列表
文章目录