def test_get_closest_nodes_noRecursion(self): rt = TreeRoutingTable(node_id=1) target = 2**160 - 5 for node_id in [2, 4, 8, 2**158, 2**159]: rt.offer_node(generate_node(node_id)) closest_nodes = rt.get_closest_nodes(target, 2) self.assertEquals(map(extract_id, closest_nodes), [2**159, 2**158])
def test_get_closest_nodes_multiLevelRecursion(self): rt = TreeRoutingTable(node_id=2**160 - 1) target = 1 rand_list = testing_data.random_one_hundred_IDs dist = lambda x, y: x ^ y rand_list.sort(key=lambda ID: dist(ID, target)) expectedIDs = rand_list[:constants.k] for ID in rand_list: rt.offer_node(generate_node(ID)) closest_nodes = rt.get_closest_nodes(target) self.assertEquals(expectedIDs, map(extract_id, closest_nodes))
def test_get_closest_nodes_multiLevelRecursion(self): rt = TreeRoutingTable(node_id=2**160-1) target = 1 rand_list = testing_data.random_one_hundred_IDs dist = lambda x, y: x ^ y rand_list.sort(key = lambda ID: dist(ID, target)) expectedIDs = rand_list[:constants.k] for ID in rand_list: rt.offer_node(generate_node(ID)) closest_nodes = rt.get_closest_nodes(target) self.assertEquals(expectedIDs, map(extract_id, closest_nodes))
def test_get_closest_nodes_oneLevelRecursion(self): rt = TreeRoutingTable(node_id=1) target = 2**160 - 5 # 7 nodes close to the target for node_id in node_id_sequence(2**150, 2**157, 2): rt.offer_node(generate_node(node_id)) # 1 node close to our node id rt.offer_node(generate_node(5)) closest_nodes = rt.get_closest_nodes(target) expectedIDs = node_id_sequence(2**150, 2**157, 2) expectedIDs.append(5) expectedIDs.sort(key=lambda ID: ID ^ target) self.assertEquals(len(expectedIDs), len(closest_nodes)) self.assertEquals(expectedIDs, map(extract_id, closest_nodes))
def test_get_closest_nodes_oneLevelRecursion(self): rt = TreeRoutingTable(node_id=1) target = 2**160 - 5 # 7 nodes close to the target for node_id in node_id_sequence(2**150, 2**157, 2): rt.offer_node(generate_node(node_id)) # 1 node close to our node id rt.offer_node(generate_node(5)) closest_nodes = rt.get_closest_nodes(target) expectedIDs = node_id_sequence(2**150, 2**157, 2) expectedIDs.append(5) expectedIDs.sort(key = lambda ID: ID ^ target) self.assertEquals(len(expectedIDs), len(closest_nodes)) self.assertEquals(expectedIDs, map(extract_id, closest_nodes))