Пример #1
0
 def test_sort_peer_nodes_no_longer_than_k(self):
     """
     Ensure that no more than constants.K contacts are returned from the
     sort_peer_nodes function despite a longer list being passed in.
     """
     contacts = []
     for i in range(512):
         contact = PeerNode(2 ** i, "192.168.0.%d" % i, 9999, self.version,
                            0)
         contacts.append(contact)
     target_key = long_to_hex(2 ** 256)
     result = sort_peer_nodes(contacts, target_key)
     self.assertEqual(constants.K, len(result))
Пример #2
0
    def test_sort_peer_nodes(self):
        """
        Ensures that the sort_peer_nodes function returns the list ordered in
        such a way that the contacts closest to the target key are at the head
        of the list.
        """
        contacts = []
        for i in range(512):
            contact = PeerNode(2 ** i, "192.168.0.%d" % i, 9999, self.version,
                               0)
            contacts.append(contact)
        target_key = long_to_hex(2 ** 256)
        result = sort_peer_nodes(contacts, target_key)

        # Ensure results are in the correct order.
        def key(node):
            return distance(node.network_id, target_key)
        sorted_nodes = sorted(result, key=key)
        self.assertEqual(sorted_nodes, result)
        # Ensure the order is from lowest to highest in terms of distance
        distances = [distance(x.network_id, target_key) for x in result]
        self.assertEqual(sorted(distances), distances)