def test_find_closest(self): nodes = [Node(random_32bytes()) for _ in xrange(6)] table = RoutingTable(self.node) table.buckets[4] = nodes[:2] table.buckets[3] = [nodes[2]] table.buckets[5] = nodes[3:5] table.buckets[10] = [nodes[5]] search_node = Node(random_32bytes()) result = table._find_closest_bucket(4, search_node) self.assertEqual(result, sorted([ ((search_node ^ n).distance_key(), n) for n in nodes ]))
def main(n_processes, fill, test, needs_server): for _ in xrange(n_processes): try: seed = random.choice(kads).node except IndexError: seed = None node = Node(random_32bytes(), port=next(ports)) dht = DHT(node, seed, context=context) kads.append(dht) processes.append(dht.run()) print "%s started." % node if fill: with open('./lipsum.txt') as f: result = re.findall("[A-Z]{2,}(?![a-z])|[A-Z][a-z]+(?=[A-Z])|[\'\w\-]+", f.read()) for idx in xrange(1, len(result)): first, second = result[idx-1], result[idx] random.choice(kads)[first] = second if test: n_failures = 0 for idx in xrange(1, len(result)): first, second = result[idx-1], result[idx] try: print "%s -> %s" % (first, random.choice(kads)[first]) except KeyError: n_failures += 1 print "Failed %s times" % n_failures if needs_server: app.run()
def main(n_processes, fill, test, needs_server): for _ in xrange(n_processes): try: seed = random.choice(kads).node except IndexError: seed = None node = Node(random_32bytes(), port=next(ports)) dht = DHT(node, seed, context=context) kads.append(dht) processes.append(dht.run()) print "%s started." % node if fill: with open('./lipsum.txt') as f: result = re.findall( "[A-Z]{2,}(?![a-z])|[A-Z][a-z]+(?=[A-Z])|[\'\w\-]+", f.read()) for idx in xrange(1, len(result)): first, second = result[idx - 1], result[idx] random.choice(kads)[first] = second if test: n_failures = 0 for idx in xrange(1, len(result)): first, second = result[idx - 1], result[idx] try: print "%s -> %s" % (first, random.choice(kads)[first]) except KeyError: n_failures += 1 print "Failed %s times" % n_failures if needs_server: app.run()
def create(): node = Node(random_32bytes(), port=next(ports)) seed = random.choice(kads).node dht = DHT(node, seed, context=context) kads.append(dht) processes.append(dht.run()) return json.dumps({'n': len(processes) - 1})
def create(): node = Node(random_32bytes(), port=next(ports)) seed = random.choice(kads).node dht = DHT(node, seed, context=context) kads.append(dht) processes.append(dht.run()) return json.dumps({ 'n': len(processes)-1 })
def test_mark_as_not_seen(self): target = Node(random_32bytes()) table = RoutingTable(self.node) table.update(target) for _ in xrange(RoutingTable.N_RETRIES-1): table.mark_as_unavailable(target) self.assertEqual(len(table.find_closest(target)), 1) self.assertTrue(table._unavailabilities[target] > 0) table.mark_as_unavailable(target) self.assertEqual(table._unavailabilities[target], 0)
def slave(uid): node = Node(random_32bytes(), port=3001) bootstrap = Node(bytearray(uid), port=3000) dht = DHT(node, bootstrap) dht.run()