def test_tracker3(self): for ii in xrange(10): items = [] for i in xrange(random.randrange(100)): x = random.choice(items + [ FakeShare(hash=None), FakeShare(hash=random.randrange(1000000, 2000000)) ]).hash items.append(FakeShare(hash=i, previous_hash=x)) t = forest.Tracker() test_tracker(t) for item in math.shuffled(items): t.add(item) test_tracker(t) if random.randrange(3) == 0: while True: try: t.remove(random.choice(list(t.items))) except NotImplementedError: pass else: break test_tracker(t) for item in math.shuffled(items): if item.hash not in t.items: t.add(item) test_tracker(t) if random.randrange(3) == 0: while True: try: t.remove(random.choice(list(t.items))) except NotImplementedError: pass else: break test_tracker(t) while t.items: while True: try: t.remove(random.choice(list(t.items))) except NotImplementedError: pass else: break test_tracker(t)
def __init__(self, best_block_func, factory, backlog_needed): self._best_block_func = best_block_func self._factory = factory self._backlog_needed = backlog_needed self._tracker = forest.Tracker() self._watch1 = self._factory.new_headers.watch(self._heard_headers) self._watch2 = self._factory.new_block.watch(self._request) self._requested = set() self._clear_task = deferral.RobustLoopingCall(self._requested.clear) self._clear_task.start(60) self._last_notified_size = 0 self.updated = variable.Event() self._think_task = deferral.RobustLoopingCall(self._think) self._think_task.start(15) self._think2_task = deferral.RobustLoopingCall(self._think2) self._think2_task.start(15)
def __init__(self, rpc_proxy, factory, backlog_needed=1000): self._rpc_proxy = rpc_proxy self._factory = factory self._backlog_needed = backlog_needed self._tracker = forest.Tracker() self._watch1 = self._factory.new_headers.watch(self._heard_headers) self._watch2 = self._factory.new_block.watch(self._heard_block) self._requested = set() self._clear_task = task.LoopingCall(self._requested.clear) self._clear_task.start(60) self._last_notified_size = 0 self.updated = variable.Event() self._think_task = task.LoopingCall(self._think) self._think_task.start(15) self._think2_task = task.LoopingCall(self._think2) self._think2_task.start(15)